diff options
author | Mario <mario@mariovavti.com> | 2022-10-10 18:05:26 +0000 |
---|---|---|
committer | Mario <mario@mariovavti.com> | 2022-10-10 18:05:26 +0000 |
commit | ef2448e17e742e7dcef458993bce1e0a29756aa7 (patch) | |
tree | d23c62753abbb42e7bb742f2d44d09321b6f2eee /vendor/twbs/bootstrap/site | |
parent | 6ab65519a0fc3e55ad5f32ce1641190ef609a4e2 (diff) | |
parent | 99a5cf1ad4660a31af6c03e5a1abc3d374f82c78 (diff) | |
download | volse-hubzilla-7.8.tar.gz volse-hubzilla-7.8.tar.bz2 volse-hubzilla-7.8.zip |
Merge branch '7.8RC'7.8
Diffstat (limited to 'vendor/twbs/bootstrap/site')
-rw-r--r-- | vendor/twbs/bootstrap/site/.eslintrc.json | 94 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/js/application.js | 170 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/js/code-examples.js | 88 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/js/search.js | 46 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/js/snippets.js | 154 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/js/vendor/anchor.min.js | 9 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/js/vendor/clipboard.min.js | 4 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_ads.scss | 5 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_algolia.scss | 92 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_anchor.scss | 16 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_brand.scss | 4 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_buttons.scss | 80 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_callouts.scss | 30 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_clipboard-js.scss | 37 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_component-examples.scss | 285 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_content.scss | 75 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_layout.scss | 22 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_masthead.scss | 90 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_navbar.scss | 85 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_placeholder-img.scss | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_search.scss | 121 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_sidebar.scss | 90 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_subnav.scss | 79 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_syntax.scss | 183 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_toc.scss | 45 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/_variables.scss | 26 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/assets/scss/docs.scss | 7 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/_index.html | 5 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/components/popovers.md | 443 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/components/progress.md | 142 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/components/scrollspy.md | 367 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/components/tooltips.md | 471 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/examples/_index.md | 36 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/examples/checkout/form-validation.js | 20 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/examples/features/features.css | 61 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/examples/footers/footers.css | 12 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/examples/headers/headers.css | 32 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/examples/heroes/heroes.css | 11 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/examples/modals/modals.css | 34 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/examples/sidebars/sidebars.js | 8 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/introduction.md | 162 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/javascript.md | 238 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/parcel.md | 99 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/webpack.md | 108 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.1/utilities/flex.md | 665 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/_index.html | 5 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/about/brand.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/about/brand.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/about/license.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/about/license.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/about/overview.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/about/overview.md) | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/about/team.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/about/team.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/about/translations.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/about/translations.md) | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/accordion.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/accordion.md) | 12 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/alerts.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/alerts.md) | 151 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/badge.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/badge.md) | 20 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/breadcrumb.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/breadcrumb.md) | 23 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/button-group.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/button-group.md) | 170 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/buttons.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/buttons.md) | 112 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/card.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/card.md) | 18 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/carousel.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/carousel.md) | 178 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/close-button.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/close-button.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/collapse.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/collapse.md) | 138 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/dropdowns.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/dropdowns.md) | 410 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/list-group.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/list-group.md) | 148 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/modal.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/modal.md) | 304 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/navbar.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/navbar.md) | 181 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/navs-tabs.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/navs-tabs.md) | 256 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/offcanvas.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/offcanvas.md) | 202 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/pagination.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/pagination.md) | 16 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/placeholders.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/placeholders.md) | 1 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/popovers.md | 277 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/progress.md | 154 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/scrollspy.md | 425 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/spinners.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/spinners.md) | 20 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/toasts.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/components/toasts.md) | 181 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/components/tooltips.md | 301 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/content/figures.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/content/figures.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/content/images.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/content/images.md) | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/content/reboot.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/content/reboot.md) | 185 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/content/tables.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/content/tables.md) | 56 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/content/typography.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/content/typography.md) | 60 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/customize/color.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/customize/color.md) | 3 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/customize/components.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/customize/components.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/customize/css-variables.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/customize/css-variables.md) | 14 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/customize/optimize.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/customize/optimize.md) | 6 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/customize/options.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/customize/options.md) | 3 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/customize/overview.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/customize/overview.md) | 6 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/customize/sass.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/customize/sass.md) | 26 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/.stylelintrc (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/.stylelintrc) | 4 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/_index.md | 45 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/album-rtl/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/album-rtl/index.html) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/album/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/album/index.html) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/blog-rtl/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/blog-rtl/index.html) | 14 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/blog/blog.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/blog/blog.css) | 34 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/blog/blog.rtl.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/blog/blog.rtl.css) | 34 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/blog/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/blog/index.html) | 16 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/carousel-rtl/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/carousel-rtl/index.html) | 14 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/carousel/carousel.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/carousel/carousel.rtl.css) | 17 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/carousel/carousel.rtl.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/carousel/carousel.css) | 19 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/carousel/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/carousel/index.html) | 14 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/cheatsheet-rtl/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/cheatsheet-rtl/index.html) | 148 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/cheatsheet/cheatsheet.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/cheatsheet/cheatsheet.css) | 13 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/cheatsheet/cheatsheet.js (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/cheatsheet/cheatsheet.js) | 24 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/cheatsheet/cheatsheet.rtl.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/cheatsheet/cheatsheet.rtl.css) | 13 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/cheatsheet/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/cheatsheet/index.html) | 146 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/checkout-rtl/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/checkout-rtl/index.html) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/checkout/form-validation.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/checkout/form-validation.css) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/checkout/form-validation.js | 19 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/checkout/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/checkout/index.html) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/cover/cover.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/cover/cover.css) | 3 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/cover/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/cover/index.html) | 8 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard-rtl/dashboard.js (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard-rtl/dashboard.js) | 6 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard-rtl/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard-rtl/index.html) | 32 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard/dashboard.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard/dashboard.css) | 8 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard/dashboard.js (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard/dashboard.js) | 6 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard/dashboard.rtl.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard/dashboard.rtl.css) | 8 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard/index.html) | 32 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/dropdowns/dropdowns.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/dropdowns/dropdowns.css) | 46 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/dropdowns/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/dropdowns/index.html) | 61 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/features/features.css | 31 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/features/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/features/index.html) | 24 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/features/unsplash-photo-1.jpg (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/features/unsplash-photo-1.jpg) | bin | 10451 -> 10451 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/features/unsplash-photo-2.jpg (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/features/unsplash-photo-2.jpg) | bin | 113018 -> 113018 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/features/unsplash-photo-3.jpg (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/features/unsplash-photo-3.jpg) | bin | 40607 -> 40607 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/footers/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/footers/index.html) | 30 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/grid/grid.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/grid/grid.css) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/grid/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/grid/index.html) | 56 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/headers/headers.css | 15 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/headers/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/headers/index.html) | 28 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/heroes/bootstrap-docs.png (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/heroes/bootstrap-docs.png) | bin | 371399 -> 371399 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/heroes/bootstrap-themes.png (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/heroes/bootstrap-themes.png) | bin | 278159 -> 278159 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/heroes/heroes.css | 3 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/heroes/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/heroes/index.html) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/jumbotron/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/jumbotron/index.html) | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/list-groups/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/list-groups/index.html) | 66 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/list-groups/list-groups.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/list-groups/list-groups.css) | 50 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/masonry/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/masonry/index.html) | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/modals/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/modals/index.html) | 22 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/modals/modals.css | 15 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbar-bottom/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbar-bottom/index.html) | 4 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbar-fixed/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbar-fixed/index.html) | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbar-fixed/navbar-top-fixed.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbar-fixed/navbar-top-fixed.css) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbar-static/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbar-static/index.html) | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbar-static/navbar-top.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbar-static/navbar-top.css) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbars-offcanvas/index.html | 147 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbars-offcanvas/navbar.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbars/navbar.css) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbars/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbars/index.html) | 88 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbars/navbar.css | 7 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/offcanvas-navbar/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/offcanvas-navbar/index.html) | 12 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/offcanvas-navbar/offcanvas.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/offcanvas-navbar/offcanvas.css) | 21 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/offcanvas-navbar/offcanvas.js (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/offcanvas-navbar/offcanvas.js) | 4 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/pricing/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/pricing/index.html) | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/pricing/pricing.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/pricing/pricing.css) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/product/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/product/index.html) | 4 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/product/product.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/product/product.css) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/sidebars/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/sidebars/index.html) | 138 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/sidebars/sidebars.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/sidebars/sidebars.css) | 30 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/sidebars/sidebars.js | 8 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/sign-in/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/sign-in/index.html) | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/sign-in/signin.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/sign-in/signin.css) | 6 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/starter-template/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/starter-template/index.html) | 17 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/starter-template/starter-template.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/starter-template/starter-template.css) | 9 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/sticky-footer-navbar/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/sticky-footer-navbar/index.html) | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/sticky-footer-navbar/sticky-footer-navbar.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/sticky-footer-navbar/sticky-footer-navbar.css) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/sticky-footer/index.html (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/sticky-footer/index.html) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/examples/sticky-footer/sticky-footer.css (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/examples/sticky-footer/sticky-footer.css) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/forms/checks-radios.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/forms/checks-radios.md) | 36 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/forms/floating-labels.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/forms/floating-labels.md) | 46 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/forms/form-control.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/forms/form-control.md) | 8 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/forms/input-group.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/forms/input-group.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/forms/layout.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/forms/layout.md) | 1 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/forms/overview.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/forms/overview.md) | 6 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/forms/range.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/forms/range.md) | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/forms/select.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/forms/select.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/forms/validation.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/forms/validation.md) | 8 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/accessibility.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/accessibility.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/best-practices.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/best-practices.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/browsers-devices.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/browsers-devices.md) | 69 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/contents.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/contents.md) | 101 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/contribute.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/contribute.md) | 58 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/download.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/download.md) | 6 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/introduction.md | 162 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/javascript.md | 337 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/parcel.md | 158 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/rfs.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/rfs.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/rtl.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/rtl.md) | 8 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/vite.md | 197 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/webpack.md | 234 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/helpers/clearfix.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/helpers/clearfix.md) | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/helpers/color-background.md | 52 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/helpers/colored-links.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/helpers/colored-links.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/helpers/position.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/helpers/position.md) | 23 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/helpers/ratio.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/helpers/ratio.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/helpers/stacks.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/helpers/stacks.md) | 1 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/helpers/stretched-link.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/helpers/stretched-link.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/helpers/text-truncation.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/helpers/text-truncation.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/helpers/vertical-rule.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/helpers/vertical-rule.md) | 1 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/helpers/visually-hidden.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/helpers/visually-hidden.md) | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/layout/breakpoints.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/layout/breakpoints.md) | 54 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/layout/columns.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/layout/columns.md) | 22 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/layout/containers.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/layout/containers.md) | 109 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/layout/css-grid.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/layout/css-grid.md) | 31 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/layout/grid.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/layout/grid.md) | 176 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/layout/gutters.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/layout/gutters.md) | 14 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/layout/utilities.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/layout/utilities.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/layout/z-index.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/layout/z-index.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/migration.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/migration.md) | 149 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/api.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/utilities/api.md) | 117 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/background.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/utilities/background.md) | 6 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/borders.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/utilities/borders.md) | 89 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/colors.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/utilities/colors.md) | 6 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/display.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/utilities/display.md) | 94 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/flex.md | 666 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/float.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/utilities/float.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/interactions.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/utilities/interactions.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/opacity.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/utilities/opacity.md) | 1 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/overflow.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/utilities/overflow.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/position.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/utilities/position.md) | 4 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/shadows.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/utilities/shadows.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/sizing.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/utilities/sizing.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/spacing.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/utilities/spacing.md) | 4 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/text.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/utilities/text.md) | 3 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/vertical-align.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/utilities/vertical-align.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/5.2/utilities/visibility.md (renamed from vendor/twbs/bootstrap/site/content/docs/5.1/utilities/visibility.md) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/content/docs/_index.html | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/data/docs-versions.yml | 3 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/data/examples.yml | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/data/icons.yml | 10 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/data/plugins.yml | 47 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/data/sidebar.yml | 28 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/data/translations.yml | 12 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/_default/_markup/render-heading.html | 5 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/_default/baseof.html | 1 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/_default/docs.html | 39 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/_default/examples.html | 37 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/_default/single.html | 19 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/partials/analytics.html | 2 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/partials/callout-warning-data-bs-title-vs-title.md | 1 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/partials/docs-navbar.html | 131 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/partials/docs-sidebar.html | 37 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/partials/docs-subnav.html | 14 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/partials/docs-versions.html | 44 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/partials/favicons.html | 4 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/partials/footer.html | 7 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/partials/guide-footer.md | 3 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/partials/header.html | 4 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/partials/home/masthead-followup.html | 361 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/partials/home/masthead.html | 50 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/partials/icons.html | 72 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/partials/js-data-attributes.md | 3 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/partials/scripts.html | 54 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/partials/stylesheet.html | 5 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/shortcodes/added-in.html | 5 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/shortcodes/bs-table.html | 3 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/layouts/shortcodes/example.html | 43 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/favicon-16x16.png | bin | 529 -> 0 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.1/assets/js/validate-forms.js | 20 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-logo-black.svg (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-logo-black.svg) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-logo-shadow.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-logo-shadow.png) | bin | 48625 -> 48625 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-logo-white.svg (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-logo-white.svg) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-logo.svg (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-logo.svg) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-social-logo.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-social-logo.png) | bin | 145590 -> 145590 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-social.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-social.png) | bin | 54961 -> 54961 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-icons.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-icons.png) | bin | 40798 -> 40798 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-icons@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-icons@2x.png) | bin | 125571 -> 125571 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-themes-collage.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-themes-collage.png) | bin | 74829 -> 74829 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-themes-collage@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-themes-collage@2x.png) | bin | 244640 -> 244640 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-themes.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-themes.png) | bin | 88695 -> 88695 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-themes@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-themes@2x.png) | bin | 278159 -> 278159 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/album-rtl.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/album-rtl.png) | bin | 6392 -> 6392 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/album-rtl@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/album-rtl@2x.png) | bin | 15450 -> 15450 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/album.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/album.png) | bin | 10760 -> 10760 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/album@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/album@2x.png) | bin | 25026 -> 25026 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/blog-rtl.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/blog-rtl.png) | bin | 12545 -> 12545 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/blog-rtl@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/blog-rtl@2x.png) | bin | 31035 -> 31035 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/blog.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/blog.png) | bin | 15245 -> 15245 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/blog@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/blog@2x.png) | bin | 36944 -> 36944 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/carousel-rtl.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/carousel-rtl.png) | bin | 10344 -> 10344 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/carousel-rtl@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/carousel-rtl@2x.png) | bin | 24535 -> 24535 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/carousel.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/carousel.png) | bin | 13314 -> 13314 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/carousel@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/carousel@2x.png) | bin | 31465 -> 31465 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cheatsheet-rtl.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cheatsheet-rtl.png) | bin | 6089 -> 6089 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cheatsheet-rtl@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cheatsheet-rtl@2x.png) | bin | 13863 -> 13863 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cheatsheet.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cheatsheet.png) | bin | 8132 -> 8132 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cheatsheet@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cheatsheet@2x.png) | bin | 19324 -> 19324 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/checkout-rtl.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/checkout-rtl.png) | bin | 8848 -> 8848 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/checkout-rtl@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/checkout-rtl@2x.png) | bin | 21965 -> 21965 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/checkout.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/checkout.png) | bin | 7639 -> 7639 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/checkout@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/checkout@2x.png) | bin | 19105 -> 19105 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cover.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cover.png) | bin | 7240 -> 7240 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cover@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cover@2x.png) | bin | 17927 -> 17927 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dashboard-rtl.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dashboard-rtl.png) | bin | 8261 -> 8261 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dashboard-rtl@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dashboard-rtl@2x.png) | bin | 19399 -> 19399 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dashboard.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dashboard.png) | bin | 11914 -> 11914 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dashboard@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dashboard@2x.png) | bin | 26556 -> 26556 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dropdowns.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dropdowns.png) | bin | 6146 -> 6146 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dropdowns@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dropdowns@2x.png) | bin | 15203 -> 15203 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/features.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/features.png) | bin | 6067 -> 6067 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/features@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/features@2x.png) | bin | 15002 -> 15002 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/footers.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/footers.png) | bin | 4324 -> 4324 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/footers@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/footers@2x.png) | bin | 10238 -> 10238 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/grid.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/grid.png) | bin | 14485 -> 14485 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/grid@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/grid@2x.png) | bin | 34834 -> 34834 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/headers.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/headers.png) | bin | 5197 -> 5197 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/headers@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/headers@2x.png) | bin | 12639 -> 12639 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/heroes.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/heroes.png) | bin | 9017 -> 9017 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/heroes@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/heroes@2x.png) | bin | 23433 -> 23433 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/jumbotron.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/jumbotron.png) | bin | 9155 -> 9155 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/jumbotron@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/jumbotron@2x.png) | bin | 23316 -> 23316 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/list-groups.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/list-groups.png) | bin | 7134 -> 7134 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/list-groups@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/list-groups@2x.png) | bin | 17804 -> 17804 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/masonry.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/masonry.png) | bin | 15253 -> 15253 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/masonry@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/masonry@2x.png) | bin | 37733 -> 37733 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/modals.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/modals.png) | bin | 4814 -> 4814 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/modals@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/modals@2x.png) | bin | 11689 -> 11689 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-bottom.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-bottom.png) | bin | 4873 -> 4873 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-bottom@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-bottom@2x.png) | bin | 11666 -> 11666 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-fixed.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-fixed.png) | bin | 5911 -> 5911 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-fixed@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-fixed@2x.png) | bin | 14103 -> 14103 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-static.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-static.png) | bin | 6624 -> 6624 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-static@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-static@2x.png) | bin | 15155 -> 15155 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbars-offcanvas.png | bin | 0 -> 6864 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbars-offcanvas@2x.png | bin | 0 -> 17070 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbars.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbars.png) | bin | 13126 -> 13126 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbars@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbars@2x.png) | bin | 31168 -> 31168 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/offcanvas-navbar.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/offcanvas-navbar.png) | bin | 9691 -> 9691 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/offcanvas-navbar@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/offcanvas-navbar@2x.png) | bin | 23975 -> 23975 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/pricing.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/pricing.png) | bin | 11621 -> 11621 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/pricing@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/pricing@2x.png) | bin | 29088 -> 29088 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/product.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/product.png) | bin | 12906 -> 12906 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/product@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/product@2x.png) | bin | 27953 -> 27953 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sidebars.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sidebars.png) | bin | 12287 -> 12287 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sidebars@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sidebars@2x.png) | bin | 33499 -> 33499 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sign-in.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sign-in.png) | bin | 2199 -> 2199 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sign-in@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sign-in@2x.png) | bin | 4568 -> 4568 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/starter-template.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/starter-template.png) | bin | 7753 -> 7753 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/starter-template@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/starter-template@2x.png) | bin | 20134 -> 20134 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sticky-footer-navbar.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sticky-footer-navbar.png) | bin | 6979 -> 6979 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sticky-footer-navbar@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sticky-footer-navbar@2x.png) | bin | 15836 -> 15836 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sticky-footer.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sticky-footer.png) | bin | 4280 -> 4280 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sticky-footer@2x.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sticky-footer@2x.png) | bin | 9665 -> 9665 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/android-chrome-192x192.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/android-chrome-192x192.png) | bin | 8364 -> 8364 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/android-chrome-512x512.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/android-chrome-512x512.png) | bin | 23832 -> 23832 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/apple-touch-icon.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/apple-touch-icon.png) | bin | 7650 -> 7650 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/favicon-16x16.png | bin | 0 -> 525 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/favicon-32x32.png (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/favicon-32x32.png) | bin | 1159 -> 1159 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/manifest.json (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/manifest.json) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/safari-pinned-tab.svg (renamed from vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/safari-pinned-tab.svg) | 0 | ||||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-parcel.png | bin | 0 -> 161826 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-parcel@2x.png | bin | 0 -> 564766 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-vite.png | bin | 0 -> 169189 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-vite@2x.png | bin | 0 -> 558538 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-webpack.png | bin | 0 -> 169872 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-webpack@2x.png | bin | 0 -> 572482 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/parcel-dev-server-bootstrap.png | bin | 0 -> 102674 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/parcel-dev-server.png | bin | 0 -> 75744 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/vite-dev-server-bootstrap.png | bin | 0 -> 75894 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/vite-dev-server.png | bin | 0 -> 74851 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/webpack-dev-server-bootstrap.png | bin | 0 -> 77318 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/webpack-dev-server.png | bin | 0 -> 76154 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/parcel.png | bin | 0 -> 6126 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/vite.png | bin | 0 -> 4072 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/webpack.png | bin | 0 -> 1906 bytes | |||
-rw-r--r-- | vendor/twbs/bootstrap/site/static/docs/5.2/assets/js/validate-forms.js | 19 |
363 files changed, 7792 insertions, 6912 deletions
diff --git a/vendor/twbs/bootstrap/site/.eslintrc.json b/vendor/twbs/bootstrap/site/.eslintrc.json index 0660ebbaf..7cca4bc20 100644 --- a/vendor/twbs/bootstrap/site/.eslintrc.json +++ b/vendor/twbs/bootstrap/site/.eslintrc.json @@ -1,61 +1,53 @@ { - "root": true, + "env": { + "browser": true, + "node": false + }, + "plugins": [ + "markdown" + ], + "overrides": [ + { + // 2. Enable the Markdown processor for all .md files. + "files": ["./**/*.md"], + "processor": "markdown/markdown" + }, + { + // In v2, configuration for fenced code blocks is separate from the + // containing Markdown file. Each code block has a virtual filename + // appended to the Markdown file's path. + "files": [ + "./**/*.md/*.js" + ], + // Configuration for fenced code blocks goes with the override for + // the code block's virtual filename, for example: + "parserOptions": { + "ecmaFeatures": { + "impliedStrict": true + } + }, + "rules": { + "no-array-for-each": "off", + "no-undef": "off", + "no-unused-vars": "off", + "unicorn/no-array-for-each": "off", + "unicorn/numeric-separators-style": "off", + "no-unused-expressions": "off", + "no-unused-labels": "off", + "no-labels": "off", + "no-redeclare": "off" + } + } + ], "parserOptions": { - "ecmaVersion": 5, "sourceType": "script" }, - "extends": [ - "plugin:unicorn/recommended", - "xo", - "xo/browser" - ], + "extends": "../.eslintrc.json", "rules": { - "arrow-body-style": "off", - "capitalized-comments": "off", - "comma-dangle": [ - "error", - "never" - ], - "indent": [ - "error", - 2, - { - "MemberExpression": "off", - "SwitchCase": 1 - } - ], - "multiline-ternary": [ - "error", - "always-multiline" - ], "no-new": "off", - "no-var": "off", - "object-curly-spacing": [ - "error", - "always" - ], - "object-shorthand": "off", - "operator-linebreak": [ - "error", - "after" - ], - "prefer-arrow-callback": "off", - "prefer-destructuring": "off", - "semi": [ - "error", - "never" - ], + "prefer-template": "error", "strict": "error", "unicorn/no-array-for-each": "off", - "unicorn/no-array-method-this-argument": "off", - "unicorn/no-for-loop": "off", - "unicorn/no-null": "off", - "unicorn/numeric-separators-style": "off", - "unicorn/prefer-array-flat": "off", - "unicorn/prefer-dom-node-dataset": "off", - "unicorn/prefer-module": "off", - "unicorn/prefer-prototype-methods": "off", - "unicorn/prefer-query-selector": "off", - "unicorn/prevent-abbreviations": "off" + "unicorn/numeric-separators-style": "off" } } diff --git a/vendor/twbs/bootstrap/site/assets/js/application.js b/vendor/twbs/bootstrap/site/assets/js/application.js index acf859764..dec23635d 100644 --- a/vendor/twbs/bootstrap/site/assets/js/application.js +++ b/vendor/twbs/bootstrap/site/assets/js/application.js @@ -4,167 +4,27 @@ /*! * JavaScript for Bootstrap's docs (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors - * Copyright 2011-2021 Twitter, Inc. + * Copyright 2011-2022 The Bootstrap Authors + * Copyright 2011-2022 Twitter, Inc. * Licensed under the Creative Commons Attribution 3.0 Unported License. * For details, see https://creativecommons.org/licenses/by/3.0/. */ -/* global ClipboardJS: false, anchors: false, bootstrap: false */ - -(function () { +(() => { 'use strict' - // Tooltip and popover demos - document.querySelectorAll('.tooltip-demo') - .forEach(function (tooltip) { - new bootstrap.Tooltip(tooltip, { - selector: '[data-bs-toggle="tooltip"]' - }) - }) - - document.querySelectorAll('[data-bs-toggle="popover"]') - .forEach(function (popover) { - new bootstrap.Popover(popover) - }) - - var toastPlacement = document.getElementById('toastPlacement') - if (toastPlacement) { - document.getElementById('selectToastPlacement').addEventListener('change', function () { - if (!toastPlacement.dataset.originalClass) { - toastPlacement.dataset.originalClass = toastPlacement.className - } - - toastPlacement.className = toastPlacement.dataset.originalClass + ' ' + this.value - }) - } - - document.querySelectorAll('.bd-example .toast') - .forEach(function (toastNode) { - var toast = new bootstrap.Toast(toastNode, { - autohide: false - }) - - toast.show() - }) - - var toastTrigger = document.getElementById('liveToastBtn') - var toastLiveExample = document.getElementById('liveToast') - if (toastTrigger) { - toastTrigger.addEventListener('click', function () { - var toast = new bootstrap.Toast(toastLiveExample) - - toast.show() - }) - } - - var alertPlaceholder = document.getElementById('liveAlertPlaceholder') - var alertTrigger = document.getElementById('liveAlertBtn') - - function alert(message, type) { - var wrapper = document.createElement('div') - wrapper.innerHTML = '<div class="alert alert-' + type + ' alert-dismissible" role="alert">' + message + '<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button></div>' - - alertPlaceholder.append(wrapper) - } - - if (alertTrigger) { - alertTrigger.addEventListener('click', function () { - alert('Nice, you triggered this alert message!', 'success') - }) - } - - // Demos within modals - document.querySelectorAll('.tooltip-test') - .forEach(function (tooltip) { - new bootstrap.Tooltip(tooltip) - }) - - document.querySelectorAll('.popover-test') - .forEach(function (popover) { - new bootstrap.Popover(popover) - }) - - // Indeterminate checkbox example - document.querySelectorAll('.bd-example-indeterminate [type="checkbox"]') - .forEach(function (checkbox) { - checkbox.indeterminate = true - }) - - // Disable empty links in docs examples - document.querySelectorAll('.bd-content [href="#"]') - .forEach(function (link) { - link.addEventListener('click', function (event) { - event.preventDefault() - }) - }) - - // Modal relatedTarget demo - var exampleModal = document.getElementById('exampleModal') - if (exampleModal) { - exampleModal.addEventListener('show.bs.modal', function (event) { - // Button that triggered the modal - var button = event.relatedTarget - // Extract info from data-bs-* attributes - var recipient = button.getAttribute('data-bs-whatever') - - // Update the modal's content. - var modalTitle = exampleModal.querySelector('.modal-title') - var modalBodyInput = exampleModal.querySelector('.modal-body input') - - modalTitle.textContent = 'New message to ' + recipient - modalBodyInput.value = recipient - }) - } - - // Insert copy to clipboard button before .highlight - var btnHtml = '<div class="bd-clipboard"><button type="button" class="btn-clipboard" title="Copy to clipboard">Copy</button></div>' - document.querySelectorAll('div.highlight') - .forEach(function (element) { - element.insertAdjacentHTML('beforebegin', btnHtml) - }) - - document.querySelectorAll('.btn-clipboard') - .forEach(function (btn) { - var tooltipBtn = new bootstrap.Tooltip(btn) - - btn.addEventListener('mouseleave', function () { - // Explicitly hide tooltip, since after clicking it remains - // focused (as it's a button), so tooltip would otherwise - // remain visible until focus is moved away - tooltipBtn.hide() - }) - }) - - var clipboard = new ClipboardJS('.btn-clipboard', { - target: function (trigger) { - return trigger.parentNode.nextElementSibling + // Scroll the active sidebar link into view + const sidenav = document.querySelector('.bd-sidebar') + if (sidenav) { + const sidenavHeight = sidenav.clientHeight + const sidenavActiveLink = document.querySelector('.bd-links-nav .active') + const sidenavActiveLinkTop = sidenavActiveLink.offsetTop + const sidenavActiveLinkHeight = sidenavActiveLink.clientHeight + const viewportTop = sidenavActiveLinkTop + const viewportBottom = viewportTop - sidenavHeight + sidenavActiveLinkHeight + + if (sidenav.scrollTop > viewportTop || sidenav.scrollTop < viewportBottom) { + sidenav.scrollTop = viewportTop - (sidenavHeight / 2) + (sidenavActiveLinkHeight / 2) } - }) - - clipboard.on('success', function (event) { - var tooltipBtn = bootstrap.Tooltip.getInstance(event.trigger) - - event.trigger.setAttribute('data-bs-original-title', 'Copied!') - tooltipBtn.show() - - event.trigger.setAttribute('data-bs-original-title', 'Copy to clipboard') - event.clearSelection() - }) - - clipboard.on('error', function (event) { - var modifierKey = /mac/i.test(navigator.userAgent) ? '\u2318' : 'Ctrl-' - var fallbackMsg = 'Press ' + modifierKey + 'C to copy' - var tooltipBtn = bootstrap.Tooltip.getInstance(event.trigger) - - event.trigger.setAttribute('data-bs-original-title', fallbackMsg) - tooltipBtn.show() - - event.trigger.setAttribute('data-bs-original-title', 'Copy to clipboard') - }) - - anchors.options = { - icon: '#' } - anchors.add('.bd-content > h2, .bd-content > h3, .bd-content > h4, .bd-content > h5') })() diff --git a/vendor/twbs/bootstrap/site/assets/js/code-examples.js b/vendor/twbs/bootstrap/site/assets/js/code-examples.js new file mode 100644 index 000000000..25486c2fe --- /dev/null +++ b/vendor/twbs/bootstrap/site/assets/js/code-examples.js @@ -0,0 +1,88 @@ +// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT +// IT'S ALL JUST JUNK FOR OUR DOCS! +// ++++++++++++++++++++++++++++++++++++++++++ + +/*! + * JavaScript for Bootstrap's docs (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Copyright 2011-2022 Twitter, Inc. + * Licensed under the Creative Commons Attribution 3.0 Unported License. + * For details, see https://creativecommons.org/licenses/by/3.0/. + */ + +/* global ClipboardJS: false, bootstrap: false */ + +(() => { + 'use strict' + // Insert copy to clipboard button before .highlight + const btnTitle = 'Copy to clipboard' + const btnEdit = 'Edit on StackBlitz' + + const btnHtml = [ + '<div class="bd-code-snippet">', + ' <div class="bd-clipboard">', + ' <button type="button" class="btn-clipboard">', + ' <svg class="bi" role="img" aria-label="Copy"><use xlink:href="#clipboard"/></svg>', + ' </button>', + ' </div>', + '</div>' + ].join('') + + // wrap programmatically code blocks and add copy btn. + document.querySelectorAll('.highlight') + .forEach(element => { + if (!element.closest('.bd-example-snippet')) { // Ignore examples made be shortcode + element.insertAdjacentHTML('beforebegin', btnHtml) + element.previousElementSibling.append(element) + } + }) + + /** + * + * @param {string} selector + * @param {string} title + */ + function snippetButtonTooltip(selector, title) { + document.querySelectorAll(selector).forEach(btn => { + bootstrap.Tooltip.getOrCreateInstance(btn, { title }) + }) + } + + snippetButtonTooltip('.btn-clipboard', btnTitle) + snippetButtonTooltip('.btn-edit', btnEdit) + + const clipboard = new ClipboardJS('.btn-clipboard', { + target: trigger => trigger.closest('.bd-code-snippet').querySelector('.highlight') + }) + + clipboard.on('success', event => { + const iconFirstChild = event.trigger.querySelector('.bi').firstChild + const tooltipBtn = bootstrap.Tooltip.getInstance(event.trigger) + const namespace = 'http://www.w3.org/1999/xlink' + const originalXhref = iconFirstChild.getAttributeNS(namespace, 'href') + const originalTitle = event.trigger.title + + tooltipBtn.setContent({ '.tooltip-inner': 'Copied!' }) + event.trigger.addEventListener('hidden.bs.tooltip', () => { + tooltipBtn.setContent({ '.tooltip-inner': btnTitle }) + }, { once: true }) + event.clearSelection() + iconFirstChild.setAttributeNS(namespace, 'href', originalXhref.replace('clipboard', 'check2')) + + setTimeout(() => { + iconFirstChild.setAttributeNS(namespace, 'href', originalXhref) + event.trigger.title = originalTitle + }, 2000) + }) + + clipboard.on('error', event => { + const modifierKey = /mac/i.test(navigator.userAgent) ? '\u2318' : 'Ctrl-' + const fallbackMsg = `Press ${modifierKey}C to copy` + const tooltipBtn = bootstrap.Tooltip.getInstance(event.trigger) + + tooltipBtn.setContent({ '.tooltip-inner': fallbackMsg }) + event.trigger.addEventListener('hidden.bs.tooltip', () => { + tooltipBtn.setContent({ '.tooltip-inner': btnTitle }) + }, { once: true }) + }) +})() diff --git a/vendor/twbs/bootstrap/site/assets/js/search.js b/vendor/twbs/bootstrap/site/assets/js/search.js index d88263d3f..9bad2749f 100644 --- a/vendor/twbs/bootstrap/site/assets/js/search.js +++ b/vendor/twbs/bootstrap/site/assets/js/search.js @@ -2,49 +2,43 @@ // IT'S ALL JUST JUNK FOR OUR DOCS! // ++++++++++++++++++++++++++++++++++++++++++ -(function () { +(() => { 'use strict' - var inputElement = document.getElementById('search-input') + const searchElement = document.getElementById('docsearch') - if (!window.docsearch || !inputElement) { + if (!window.docsearch || !searchElement) { return } - var siteDocsVersion = inputElement.getAttribute('data-bd-docs-version') - - document.addEventListener('keydown', function (event) { - if (event.ctrlKey && event.key === '/') { - event.preventDefault() - inputElement.focus() - } - }) + const siteDocsVersion = searchElement.getAttribute('data-bd-docs-version') window.docsearch({ - apiKey: '5990ad008512000bba2cf951ccf0332f', + apiKey: '3151f502c7b9e9dafd5e6372b691a24e', indexName: 'bootstrap', - inputSelector: '#search-input', - algoliaOptions: { - facetFilters: ['version:' + siteDocsVersion] + appId: 'AK7KMZKZHQ', + container: searchElement, + searchParameters: { + facetFilters: [`version:${siteDocsVersion}`] }, - transformData: function (hits) { - return hits.map(function (hit) { - var liveUrl = 'https://getbootstrap.com/' + transformItems(items) { + return items.map(item => { + const liveUrl = 'https://getbootstrap.com/' - hit.url = window.location.origin.startsWith(liveUrl) ? + item.url = window.location.origin.startsWith(liveUrl) ? // On production, return the result as is - hit.url : - // On development or Netlify, replace `hit.url` with a trailing slash, + item.url : + // On development or Netlify, replace `item.url` with a trailing slash, // so that the result link is relative to the server root - hit.url.replace(liveUrl, '/') + item.url.replace(liveUrl, '/') // Prevent jumping to first header - if (hit.anchor === 'content') { - hit.url = hit.url.replace(/#content$/, '') - hit.anchor = null + if (item.anchor === 'content') { + item.url = item.url.replace(/#content$/, '') + item.anchor = null } - return hit + return item }) }, // Set debug to `true` if you want to inspect the dropdown diff --git a/vendor/twbs/bootstrap/site/assets/js/snippets.js b/vendor/twbs/bootstrap/site/assets/js/snippets.js new file mode 100644 index 000000000..53f8a786e --- /dev/null +++ b/vendor/twbs/bootstrap/site/assets/js/snippets.js @@ -0,0 +1,154 @@ +// NOTICE!!! Initially embedded in our docs this JavaScript +// file contains elements that can help you create reproducible +// use cases in StackBlitz for instance. +// In a real project please adapt this content to your needs. +// ++++++++++++++++++++++++++++++++++++++++++ + +/*! + * JavaScript for Bootstrap's docs (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Copyright 2011-2022 Twitter, Inc. + * Licensed under the Creative Commons Attribution 3.0 Unported License. + * For details, see https://creativecommons.org/licenses/by/3.0/. + */ + +/* global bootstrap: false */ + +(() => { + 'use strict' + + // -------- + // Tooltips + // -------- + // Instantiate all tooltips in a docs or StackBlitz page + document.querySelectorAll('[data-bs-toggle="tooltip"]') + .forEach(tooltip => { + new bootstrap.Tooltip(tooltip) + }) + + // -------- + // Popovers + // -------- + // Instantiate all popovers in a docs or StackBlitz page + document.querySelectorAll('[data-bs-toggle="popover"]') + .forEach(popover => { + new bootstrap.Popover(popover) + }) + + // ------------------------------- + // Toasts + // ------------------------------- + // Used by 'Placement' example in docs or StackBlitz + const toastPlacement = document.getElementById('toastPlacement') + if (toastPlacement) { + document.getElementById('selectToastPlacement').addEventListener('change', function () { + if (!toastPlacement.dataset.originalClass) { + toastPlacement.dataset.originalClass = toastPlacement.className + } + + toastPlacement.className = `${toastPlacement.dataset.originalClass} ${this.value}` + }) + } + + // Instantiate all toasts in a docs page only + document.querySelectorAll('.bd-example .toast') + .forEach(toastNode => { + const toast = new bootstrap.Toast(toastNode, { + autohide: false + }) + + toast.show() + }) + + // Instantiate all toasts in a docs page only + const toastTrigger = document.getElementById('liveToastBtn') + const toastLiveExample = document.getElementById('liveToast') + if (toastTrigger) { + toastTrigger.addEventListener('click', () => { + const toast = new bootstrap.Toast(toastLiveExample) + + toast.show() + }) + } + + // ------------------------------- + // Alerts + // ------------------------------- + // Used in 'Show live toast' example in docs or StackBlitz + const alertPlaceholder = document.getElementById('liveAlertPlaceholder') + const alertTrigger = document.getElementById('liveAlertBtn') + + const appendAlert = (message, type) => { + const wrapper = document.createElement('div') + wrapper.innerHTML = [ + `<div class="alert alert-${type} alert-dismissible" role="alert">`, + ` <div>${message}</div>`, + ' <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>', + '</div>' + ].join('') + + alertPlaceholder.append(wrapper) + } + + if (alertTrigger) { + alertTrigger.addEventListener('click', () => { + appendAlert('Nice, you triggered this alert message!', 'success') + }) + } + + // ------------------------------- + // Checks & Radios + // ------------------------------- + // Indeterminate checkbox example in docs and StackBlitz + document.querySelectorAll('.bd-example-indeterminate [type="checkbox"]') + .forEach(checkbox => { + if (checkbox.id.includes('Indeterminate')) { + checkbox.indeterminate = true + } + }) + + // ------------------------------- + // Links + // ------------------------------- + // Disable empty links in docs examples only + document.querySelectorAll('.bd-content [href="#"]') + .forEach(link => { + link.addEventListener('click', event => { + event.preventDefault() + }) + }) + + // ------------------------------- + // Modal + // ------------------------------- + // Modal 'Varying modal content' example in docs and StackBlitz + const exampleModal = document.getElementById('exampleModal') + if (exampleModal) { + exampleModal.addEventListener('show.bs.modal', event => { + // Button that triggered the modal + const button = event.relatedTarget + // Extract info from data-bs-* attributes + const recipient = button.getAttribute('data-bs-whatever') + + // Update the modal's content. + const modalTitle = exampleModal.querySelector('.modal-title') + const modalBodyInput = exampleModal.querySelector('.modal-body input') + + modalTitle.textContent = `New message to ${recipient}` + modalBodyInput.value = recipient + }) + } + + // ------------------------------- + // Offcanvas + // ------------------------------- + // 'Offcanvas components' example in docs only + const myOffcanvas = document.querySelectorAll('.bd-example-offcanvas .offcanvas') + if (myOffcanvas) { + myOffcanvas.forEach(offcanvas => { + offcanvas.addEventListener('show.bs.offcanvas', event => { + event.preventDefault() + }, false) + }) + } +})() diff --git a/vendor/twbs/bootstrap/site/assets/js/vendor/anchor.min.js b/vendor/twbs/bootstrap/site/assets/js/vendor/anchor.min.js deleted file mode 100644 index 608fea9f7..000000000 --- a/vendor/twbs/bootstrap/site/assets/js/vendor/anchor.min.js +++ /dev/null @@ -1,9 +0,0 @@ -// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat -// -// AnchorJS - v4.3.1 - 2021-04-17 -// https://www.bryanbraun.com/anchorjs/ -// Copyright (c) 2021 Bryan Braun; Licensed MIT -// -// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat -!function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function d(A){A.icon=Object.prototype.hasOwnProperty.call(A,"icon")?A.icon:"",A.visible=Object.prototype.hasOwnProperty.call(A,"visible")?A.visible:"hover",A.placement=Object.prototype.hasOwnProperty.call(A,"placement")?A.placement:"right",A.ariaLabel=Object.prototype.hasOwnProperty.call(A,"ariaLabel")?A.ariaLabel:"Anchor",A.class=Object.prototype.hasOwnProperty.call(A,"class")?A.class:"",A.base=Object.prototype.hasOwnProperty.call(A,"base")?A.base:"",A.truncate=Object.prototype.hasOwnProperty.call(A,"truncate")?Math.floor(A.truncate):64,A.titleText=Object.prototype.hasOwnProperty.call(A,"titleText")?A.titleText:""}function w(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new TypeError("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],d(this.options),this.isTouchDevice=function(){return Boolean("ontouchstart"in window||window.TouchEvent||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var e,t,o,i,n,s,a,c,r,l,h,u,p=[];if(d(this.options),"touch"===(l=this.options.visible)&&(l=this.isTouchDevice()?"always":"hover"),0===(e=w(A=A||"h2, h3, h4, h5, h6")).length)return this;for(null===document.head.querySelector("style.anchorjs")&&((u=document.createElement("style")).className="anchorjs",u.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"],style'))?document.head.appendChild(u):document.head.insertBefore(u,A),u.sheet.insertRule(".anchorjs-link{opacity:0;text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}",u.sheet.cssRules.length),u.sheet.insertRule(":hover>.anchorjs-link,.anchorjs-link:focus{opacity:1}",u.sheet.cssRules.length),u.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",u.sheet.cssRules.length),u.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',u.sheet.cssRules.length)),u=document.querySelectorAll("[id]"),t=[].map.call(u,function(A){return A.id}),i=0;i<e.length;i++)if(this.hasAnchorJSLink(e[i]))p.push(i);else{if(e[i].hasAttribute("id"))o=e[i].getAttribute("id");else if(e[i].hasAttribute("data-anchor-id"))o=e[i].getAttribute("data-anchor-id");else{for(c=a=this.urlify(e[i].textContent),s=0;n=t.indexOf(c=void 0!==n?a+"-"+s:c),s+=1,-1!==n;);n=void 0,t.push(c),e[i].setAttribute("id",c),o=c}(r=document.createElement("a")).className="anchorjs-link "+this.options.class,r.setAttribute("aria-label",this.options.ariaLabel),r.setAttribute("data-anchorjs-icon",this.options.icon),this.options.titleText&&(r.title=this.options.titleText),h=document.querySelector("base")?window.location.pathname+window.location.search:"",h=this.options.base||h,r.href=h+"#"+o,"always"===l&&(r.style.opacity="1"),""===this.options.icon&&(r.style.font="1em/1 anchorjs-icons","left"===this.options.placement&&(r.style.lineHeight="inherit")),"left"===this.options.placement?(r.style.position="absolute",r.style.marginLeft="-1em",r.style.paddingRight=".5em",e[i].insertBefore(r,e[i].firstChild)):(r.style.paddingLeft=".375em",e[i].appendChild(r))}for(i=0;i<p.length;i++)e.splice(p[i]-i,1);return this.elements=this.elements.concat(e),this},this.remove=function(A){for(var e,t,o=w(A),i=0;i<o.length;i++)(t=o[i].querySelector(".anchorjs-link"))&&(-1!==(e=this.elements.indexOf(o[i]))&&this.elements.splice(e,1),o[i].removeChild(t));return this},this.removeAll=function(){this.remove(this.elements)},this.urlify=function(A){var e=document.createElement("textarea");return e.innerHTML=A,A=e.value,this.options.truncate||d(this.options),A.trim().replace(/'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),A=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||A||!1}}}); -// @license-end diff --git a/vendor/twbs/bootstrap/site/assets/js/vendor/clipboard.min.js b/vendor/twbs/bootstrap/site/assets/js/vendor/clipboard.min.js index 95f55d7b0..1103f811e 100644 --- a/vendor/twbs/bootstrap/site/assets/js/vendor/clipboard.min.js +++ b/vendor/twbs/bootstrap/site/assets/js/vendor/clipboard.min.js @@ -1,7 +1,7 @@ /*! - * clipboard.js v2.0.8 + * clipboard.js v2.0.11 * https://clipboardjs.com/ * * Licensed MIT © Zeno Rocha */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={134:function(t,e,n){"use strict";n.d(e,{default:function(){return r}});var e=n(279),i=n.n(e),e=n(370),a=n.n(e),e=n(817),o=n.n(e);function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var l=function(){function e(t){!function(t){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this),this.resolveOptions(t),this.initSelection()}var t,n,r;return t=e,(n=[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"createFakeElement",value:function(){var t="rtl"===document.documentElement.getAttribute("dir");this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[t?"right":"left"]="-9999px";t=window.pageYOffset||document.documentElement.scrollTop;return this.fakeElem.style.top="".concat(t,"px"),this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.fakeElem}},{key:"selectFake",value:function(){var t=this,e=this.createFakeElement();this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.container.appendChild(e),this.selectedText=o()(e),this.copyText(),this.removeFake()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=o()(this.target),this.copyText()}},{key:"copyText",value:function(){var e;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),document.activeElement.blur(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==c(t)||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}])&&u(t.prototype,n),r&&u(t,r),e}();function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function f(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function h(t,e){return(h=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function d(n){var r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=p(n);return t=r?(t=p(this).constructor,Reflect.construct(e,arguments,t)):e.apply(this,arguments),e=this,!(t=t)||"object"!==s(t)&&"function"!=typeof t?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(e):t}}function p(t){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function y(t,e){t="data-clipboard-".concat(t);if(e.hasAttribute(t))return e.getAttribute(t)}var r=function(){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&h(t,e)}(o,i());var t,e,n,r=d(o);function o(t,e){var n;return function(t){if(!(t instanceof o))throw new TypeError("Cannot call a class as a function")}(this),(n=r.call(this)).resolveOptions(e),n.listenClick(t),n}return t=o,n=[{key:"isSupported",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:["copy","cut"],t="string"==typeof t?[t]:t,e=!!document.queryCommandSupported;return t.forEach(function(t){e=e&&!!document.queryCommandSupported(t)}),e}}],(e=[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===s(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=a()(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){t=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l({action:this.action(t),target:this.target(t),text:this.text(t),container:this.container,trigger:t,emitter:this})}},{key:"defaultAction",value:function(t){return y("action",t)}},{key:"defaultTarget",value:function(t){t=y("target",t);if(t)return document.querySelector(t)}},{key:"defaultText",value:function(t){return y("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}])&&f(t.prototype,e),n&&f(t,n),o}()},828:function(t){var e;"undefined"==typeof Element||Element.prototype.matches||((e=Element.prototype).matches=e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector),t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},438:function(t,e,n){var a=n(828);function i(t,e,n,r,o){var i=function(e,n,t,r){return function(t){t.delegateTarget=a(t.target,n),t.delegateTarget&&r.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,o),{destroy:function(){t.removeEventListener(n,i,o)}}}t.exports=function(t,e,n,r,o){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,r,o)}))}},879:function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},370:function(t,e,n){var l=n(879),s=n(438);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!l.string(e))throw new TypeError("Second argument must be a String");if(!l.fn(n))throw new TypeError("Third argument must be a Function");if(l.node(t))return c=e,u=n,(a=t).addEventListener(c,u),{destroy:function(){a.removeEventListener(c,u)}};if(l.nodeList(t))return r=t,o=e,i=n,Array.prototype.forEach.call(r,function(t){t.addEventListener(o,i)}),{destroy:function(){Array.prototype.forEach.call(r,function(t){t.removeEventListener(o,i)})}};if(l.string(t))return t=t,e=e,n=n,s(document.body,t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var r,o,i,a,c,u}},817:function(t){t.exports=function(t){var e,n="SELECT"===t.nodeName?(t.focus(),t.value):"INPUT"===t.nodeName||"TEXTAREA"===t.nodeName?((e=t.hasAttribute("readonly"))||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),e||t.removeAttribute("readonly"),t.value):(t.hasAttribute("contenteditable")&&t.focus(),n=window.getSelection(),(e=document.createRange()).selectNodeContents(t),n.removeAllRanges(),n.addRange(e),n.toString());return n}},279:function(t){function e(){}e.prototype={on:function(t,e,n){var r=this.e||(this.e={});return(r[t]||(r[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var r=this;function o(){r.off(t,o),e.apply(n,arguments)}return o._=e,this.on(t,o,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),r=0,o=n.length;r<o;r++)n[r].fn.apply(n[r].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),r=n[t],o=[];if(r&&e)for(var i=0,a=r.length;i<a;i++)r[i].fn!==e&&r[i].fn._!==e&&o.push(r[i]);return o.length?n[t]=o:delete n[t],this}},t.exports=e,t.exports.TinyEmitter=e}},o={},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,{a:e}),e},r.d=function(t,e){for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r(134).default;function r(t){if(o[t])return o[t].exports;var e=o[t]={exports:{}};return n[t](e,e.exports,r),e.exports}var n,o});
\ No newline at end of file +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{container:document.body},n="";return"string"==typeof t?n=o(t,e):t instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(null==t?void 0:t.type)?n=o(t.value,e):(n=r()(t),c("copy")),n};function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var s=function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e=t.action,n=void 0===e?"copy":e,o=t.container,e=t.target,t=t.text;if("copy"!==n&&"cut"!==n)throw new Error('Invalid "action" value, use either "copy" or "cut"');if(void 0!==e){if(!e||"object"!==l(e)||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===n&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===n&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes')}return t?f(t,{container:o}):e?"cut"===n?a(e):f(e,{container:o}):void 0};function p(t){return(p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function y(t,e){return(y=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function h(n){var o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=v(n);return t=o?(t=v(this).constructor,Reflect.construct(e,arguments,t)):e.apply(this,arguments),e=this,!(t=t)||"object"!==p(t)&&"function"!=typeof t?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(e):t}}function v(t){return(v=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function m(t,e){t="data-clipboard-".concat(t);if(e.hasAttribute(t))return e.getAttribute(t)}var b=function(){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&y(t,e)}(r,i());var t,e,n,o=h(r);function r(t,e){var n;return function(t){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this),(n=o.call(this)).resolveOptions(e),n.listenClick(t),n}return t=r,n=[{key:"copy",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{container:document.body};return f(t,e)}},{key:"cut",value:function(t){return a(t)}},{key:"isSupported",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:["copy","cut"],t="string"==typeof t?[t]:t,e=!!document.queryCommandSupported;return t.forEach(function(t){e=e&&!!document.queryCommandSupported(t)}),e}}],(e=[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===p(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=u()(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget,n=this.action(e)||"copy",t=s({action:n,container:this.container,target:this.target(e),text:this.text(e)});this.emit(t?"success":"error",{action:n,text:t,trigger:e,clearSelection:function(){e&&e.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(t){return m("action",t)}},{key:"defaultTarget",value:function(t){t=m("target",t);if(t)return document.querySelector(t)}},{key:"defaultText",value:function(t){return m("text",t)}},{key:"destroy",value:function(){this.listener.destroy()}}])&&d(t.prototype,e),n&&d(t,n),r}()},828:function(t){var e;"undefined"==typeof Element||Element.prototype.matches||((e=Element.prototype).matches=e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector),t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},438:function(t,e,n){var u=n(828);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=u(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}t.exports=function(t,e,n,o,r){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},879:function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},370:function(t,e,n){var f=n(879),l=n(438);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!f.string(e))throw new TypeError("Second argument must be a String");if(!f.fn(n))throw new TypeError("Third argument must be a Function");if(f.node(t))return c=e,a=n,(u=t).addEventListener(c,a),{destroy:function(){u.removeEventListener(c,a)}};if(f.nodeList(t))return o=t,r=e,i=n,Array.prototype.forEach.call(o,function(t){t.addEventListener(r,i)}),{destroy:function(){Array.prototype.forEach.call(o,function(t){t.removeEventListener(r,i)})}};if(f.string(t))return t=t,e=e,n=n,l(document.body,t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var o,r,i,u,c,a}},817:function(t){t.exports=function(t){var e,n="SELECT"===t.nodeName?(t.focus(),t.value):"INPUT"===t.nodeName||"TEXTAREA"===t.nodeName?((e=t.hasAttribute("readonly"))||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),e||t.removeAttribute("readonly"),t.value):(t.hasAttribute("contenteditable")&&t.focus(),n=window.getSelection(),(e=document.createRange()).selectNodeContents(t),n.removeAllRanges(),n.addRange(e),n.toString());return n}},279:function(t){function e(){}e.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,u=o.length;i<u;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=e,t.exports.TinyEmitter=e}},r={},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,{a:e}),e},o.d=function(t,e){for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o(686).default;function o(t){if(r[t])return r[t].exports;var e=r[t]={exports:{}};return n[t](e,e.exports,o),e.exports}var n,r});
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/site/assets/scss/_ads.scss b/vendor/twbs/bootstrap/site/assets/scss/_ads.scss index 026d1a17a..b9369eb19 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/_ads.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/_ads.scss @@ -14,7 +14,7 @@ @include font-size(.8125rem); line-height: 1.4; text-align: left; - background-color: rgba(0, 0, 0, .05); + background-color: $gray-100; a { color: $gray-800; @@ -22,8 +22,7 @@ } @include media-breakpoint-up(sm) { - max-width: 330px; - @include border-radius(4px); + @include border-radius(.5rem); } } diff --git a/vendor/twbs/bootstrap/site/assets/scss/_algolia.scss b/vendor/twbs/bootstrap/site/assets/scss/_algolia.scss deleted file mode 100644 index 097dbdd55..000000000 --- a/vendor/twbs/bootstrap/site/assets/scss/_algolia.scss +++ /dev/null @@ -1,92 +0,0 @@ -// Docsearch theming - -.algolia-autocomplete { - width: 100%; -} - -.ds-dropdown-menu { - width: 100%; - padding: $dropdown-padding-y 0; - margin: $dropdown-spacer 0 0; - @include font-size(.875rem); - background-color: $dropdown-bg; - border: $dropdown-border-width solid $dropdown-border-color; - @include border-radius($dropdown-border-radius); - @include box-shadow($dropdown-box-shadow); - - @include media-breakpoint-up(md) { - width: 400px; - } -} - -.algolia-docsearch-suggestion--category-header { - padding: .125rem 1rem; - font-weight: 600; - color: $bd-purple-bright; - - // stylelint-disable-next-line selector-class-pattern - :not(.algolia-docsearch-suggestion__main) > & { - display: none; - } - - .ds-suggestion:not(:first-child) & { - padding-top: .75rem; - margin-top: .75rem; - border-top: 1px solid rgba(0, 0, 0, .1); - } -} - -.algolia-docsearch-suggestion--content { - padding: .25rem 1rem; - - .ds-cursor & { - background-color: rgba($bd-purple-light, .2); - } -} - -.algolia-docsearch-suggestion { - display: block; - text-decoration: none; -} - -.algolia-docsearch-suggestion--subcategory-column { - display: none; -} - -.algolia-docsearch-suggestion--subcategory-inline { - display: inline; - color: $gray-700; - - &::after { - padding: 0 .25rem; - content: "/"; - } -} - -.algolia-docsearch-suggestion--title { - display: inline; - font-weight: 500; - color: $gray-800; -} - -.algolia-docsearch-suggestion--text { - color: $gray-800; - @include font-size(.75rem); -} - -.algolia-docsearch-suggestion--highlight { - color: $purple; - background-color: rgba($purple, .1); -} - -.algolia-docsearch-footer { - padding: .5rem 1rem 0; - margin-top: .625rem; - @include font-size(.75rem); - color: $gray-600; - border-top: 1px solid rgba(0, 0, 0, .1); -} - -.algolia-docsearch-footer--logo { - color: inherit; -} diff --git a/vendor/twbs/bootstrap/site/assets/scss/_anchor.scss b/vendor/twbs/bootstrap/site/assets/scss/_anchor.scss index 96a7dbf9c..5bb39150b 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/_anchor.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/_anchor.scss @@ -1,11 +1,21 @@ -.anchorjs-link { +.anchor-link { + padding: 0 .175rem; font-weight: 400; color: rgba($link-color, .5); - @include transition(color .15s ease-in-out); + text-decoration: none; + opacity: 0; + @include transition(color .15s ease-in-out, opacity .15s ease-in-out); + + &::after { + content: "#"; + } &:focus, - &:hover { + &:hover, + :hover > &, + :target > & { color: $link-color; text-decoration: none; + opacity: 1; } } diff --git a/vendor/twbs/bootstrap/site/assets/scss/_brand.scss b/vendor/twbs/bootstrap/site/assets/scss/_brand.scss index 73db11e18..9637cfb18 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/_brand.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/_brand.scss @@ -4,11 +4,11 @@ // Logo series wrapper .bd-brand-logos { - color: $bd-purple-bright; + color: $bd-violet; .inverse { color: $white; - background-color: $bd-purple-bright; + background-color: $bd-violet; } } diff --git a/vendor/twbs/bootstrap/site/assets/scss/_buttons.scss b/vendor/twbs/bootstrap/site/assets/scss/_buttons.scss index b266d3e88..13bd6e48a 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/_buttons.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/_buttons.scss @@ -2,54 +2,44 @@ // // Custom buttons for the docs. +// scss-docs-start btn-css-vars-example .btn-bd-primary { - font-weight: 600; - color: $white; - background-color: $bd-purple-bright; - border-color: $bd-purple-bright; - - &:hover, - &:active { - color: $white; - background-color: shade-color($bd-purple-bright, 20%); - border-color: shade-color($bd-purple-bright, 20%); - } - - &:focus { - box-shadow: 0 0 0 3px rgba($bd-purple-bright, .25); - } + --bs-btn-font-weight: 600; + --bs-btn-color: var(--bs-white); + --bs-btn-bg: var(--bd-violet); + --bs-btn-border-color: var(--bd-violet); + --bs-btn-border-radius: .5rem; + --bs-btn-hover-color: var(--bs-white); + --bs-btn-hover-bg: #{shade-color($bd-violet, 10%)}; + --bs-btn-hover-border-color: #{shade-color($bd-violet, 10%)}; + --bs-btn-focus-shadow-rgb: var(--bd-violet-rgb); + --bs-btn-active-color: var(--bs-btn-hover-color); + --bs-btn-active-bg: #{shade-color($bd-violet, 20%)}; + --bs-btn-active-border-color: #{shade-color($bd-violet, 20%)}; } - -.btn-bd-download { - font-weight: 600; - color: $bd-download; - border-color: $bd-download; - - &:hover, - &:active { - color: $bd-dark; - background-color: $bd-download; - border-color: $bd-download; - } - - &:focus { - box-shadow: 0 0 0 3px rgba($bd-download, .25); - } +// scss-docs-end btn-css-vars-example + +.btn-bd-accent { + --bs-btn-font-weight: 600; + --bs-btn-color: var(--bd-accent); + --bs-btn-border-color: var(--bd-accent); + --bs-btn-hover-color: var(--bd-dark); + --bs-btn-hover-bg: var(--bd-accent); + --bs-btn-hover-border-color: var(--bd-accent); + --bs-btn-focus-shadow-rgb: var(--bd-accent-rgb); + --bs-btn-active-color: var(--bs-btn-hover-color); + --bs-btn-active-bg: var(--bs-btn-hover-bg); + --bs-btn-active-border-color: var(--bs-btn-hover-border-color); } .btn-bd-light { - color: $gray-600; - border-color: $gray-300; - - .show > &, - &:hover, - &:active { - color: $bd-purple-bright; - background-color: $white; - border-color: $bd-purple-bright; - } - - &:focus { - box-shadow: 0 0 0 3px rgba($bd-purple-bright, .25); - } + --bs-btn-color: var(--bs-gray-600); + --bs-btn-border-color: var(--bs-gray-400); + --bs-btn-hover-color: var(--bd-violet); + --bs-btn-hover-border-color: var(--bd-violet); + --bs-btn-active-color: var(--bd-violet); + --bs-btn-active-bg: var(--bs-white); + --bs-btn-active-border-color: var(--bd-violet); + --bs-btn-focus-border-color: var(--bd-violet); + --bs-btn-focus-shadow-rgb: var(--bd-violet-rgb); } diff --git a/vendor/twbs/bootstrap/site/assets/scss/_callouts.scss b/vendor/twbs/bootstrap/site/assets/scss/_callouts.scss index aff91f18b..4513a7d1d 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/_callouts.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/_callouts.scss @@ -6,36 +6,30 @@ padding: 1.25rem; margin-top: 1.25rem; margin-bottom: 1.25rem; - border: 1px solid $gray-200; - border-left-width: .25rem; - @include border-radius(); + background-color: var(--bd-callout-bg, var(--bs-gray-100)); + border-left: .25rem solid var(--bd-callout-border, var(--bs-gray-300)); h4 { margin-bottom: .25rem; } - p:last-child { + > :last-child { margin-bottom: 0; } - code { - @include border-radius(); - } - + .bd-callout { margin-top: -.25rem; } -} -// Variations -.bd-callout-info { - border-left-color: $bd-info; -} - -.bd-callout-warning { - border-left-color: $bd-warning; + .highlight { + background-color: rgba($black, .05); + } } -.bd-callout-danger { - border-left-color: $bd-danger; +// Variations +@each $variant in $bd-callout-variants { + .bd-callout-#{$variant} { + --bd-callout-bg: rgba(var(--bs-#{$variant}-rgb), .075); + --bd-callout-border: rgba(var(--bs-#{$variant}-rgb), .5); + } } diff --git a/vendor/twbs/bootstrap/site/assets/scss/_clipboard-js.scss b/vendor/twbs/bootstrap/site/assets/scss/_clipboard-js.scss index 83b9a8b9e..3a876a5e6 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/_clipboard-js.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/_clipboard-js.scss @@ -2,7 +2,8 @@ // // JS-based `Copy` buttons for code snippets. -.bd-clipboard { +.bd-clipboard, +.bd-edit { position: relative; display: none; float: right; @@ -16,22 +17,28 @@ } } -.btn-clipboard { - position: absolute; - top: .65rem; - right: .65rem; - z-index: 10; +.btn-clipboard, +.btn-edit { display: block; - padding: .25rem .5rem; - @include font-size(.65em); - color: $primary; - background-color: $white; - border: 1px solid; - @include border-radius(); + padding: .5em; + line-height: 1; + color: $gray-900; + background-color: $gray-100; + border: 0; + @include border-radius(.25rem); + + &:hover { + color: $primary; + } - &:hover, &:focus { - color: $white; - background-color: $primary; + z-index: 3; } } + +.btn-clipboard { + position: relative; + z-index: 2; + margin-top: .75rem; + margin-right: .75rem; +} diff --git a/vendor/twbs/bootstrap/site/assets/scss/_component-examples.scss b/vendor/twbs/bootstrap/site/assets/scss/_component-examples.scss index f93f1ee98..6f3256894 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/_component-examples.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/_component-examples.scss @@ -1,105 +1,39 @@ // -// Grid examples +// Docs examples // -.bd-example-row { - .row { - > .col, - > [class^="col-"] { - padding-top: .75rem; - padding-bottom: .75rem; - background-color: rgba(39, 41, 43, .03); - border: 1px solid rgba(39, 41, 43, .1); - } - } - - .row + .row { - margin-top: 1rem; - } -} - -.bd-example-row-flex-cols .row { - min-height: 10rem; - background-color: rgba(255, 0, 0, .1); -} - -.bd-example-cssgrid { - text-align: center; - - .grid + .grid { - margin-top: 1rem; - } - - .grid > * { - padding-top: .75rem; - padding-bottom: .75rem; - background-color: rgba(255, 0, 255, .1); - border: 1px solid rgba(255, 0, 255, .25); - } -} - -.bd-highlight { - background-color: rgba($bd-purple, .15); - border: 1px solid rgba($bd-purple, .15); -} - -// Grid mixins -.example-container { - width: 800px; - @include make-container(); -} - -.example-row { - @include make-row(); -} - -.example-content-main { - @include make-col-ready(); - - @include media-breakpoint-up(sm) { - @include make-col(6); - } - - @include media-breakpoint-up(lg) { - @include make-col(8); - } -} - -.example-content-secondary { - @include make-col-ready(); - - @include media-breakpoint-up(sm) { - @include make-col(6); - } +.bd-example-snippet { + border: solid $border-color; + border-width: 1px 0; - @include media-breakpoint-up(lg) { - @include make-col(4); + @include media-breakpoint-up(md) { + border-width: 1px; } } - -// -// Docs examples -// - .bd-example { + --bd-example-padding: 1rem; + position: relative; - padding: 1rem; - margin: 1rem (-$grid-gutter-width * .5) 0; - border: solid $gray-300; - border-width: 1px 0 0; + padding: var(--bd-example-padding); + margin: 0 ($bd-gutter-x * -.5); + border: solid $border-color; + border-width: 1px 0; @include clearfix(); - @include media-breakpoint-up(sm) { - padding: 1.5rem; + @include media-breakpoint-up(md) { + --bd-example-padding: 1.5rem; + margin-right: 0; margin-left: 0; border-width: 1px; - @include border-top-radius(.25rem); + @include border-top-radius(var(--bs-border-radius)); + } - + .bd-clipboard + .highlight { - @include border-bottom-radius(.25rem); - } + + .bd-code-snippet { + @include border-top-radius(0); + border: solid $border-color; + border-width: 0 1px 1px; } + p { @@ -116,7 +50,7 @@ > .alert + .alert, > .navbar + .navbar, > .progress + .progress { - margin-top: 1rem; + margin-top: $spacer; } > .dropdown-menu { @@ -128,6 +62,10 @@ margin-bottom: 0; } + > hr:last-child { + margin-bottom: $spacer; + } + // Images > svg + svg, > img + img { @@ -156,28 +94,80 @@ .fixed-top, .sticky-top { position: static; - margin: -1rem -1rem 1rem; + margin: calc(var(--bd-example-padding) * -1) calc(var(--bd-example-padding) * -1) var(--bd-example-padding); // stylelint-disable-line function-disallowed-list } - .fixed-bottom { + .fixed-bottom, + .sticky-bottom { position: static; - margin: 1rem -1rem -1rem; - } + margin: var(--bd-example-padding) calc(var(--bd-example-padding) * -1) calc(var(--bd-example-padding) * -1); // stylelint-disable-line function-disallowed-list - @include media-breakpoint-up(sm) { - .fixed-top, - .sticky-top { - margin: -1.5rem -1.5rem 1rem; - } - .fixed-bottom { - margin: 1rem -1.5rem -1.5rem; - } } // Pagination .pagination { - margin-top: .5rem; - margin-bottom: .5rem; + margin-bottom: 0; + } +} + +// +// Grid examples +// + +.bd-example-row [class^="col"], +.bd-example-cssgrid .grid > * { + padding-top: .75rem; + padding-bottom: .75rem; + background-color: rgba(var(--bd-violet-rgb), .1); + border: 1px solid rgba(var(--bd-violet-rgb), .25); +} + +.bd-example-row .row + .row, +.bd-example-cssgrid .grid + .grid { + margin-top: 1rem; +} + +.bd-example-row-flex-cols .row { + min-height: 10rem; + background-color: rgba(255, 0, 0, .1); +} + +.bd-example-flex div { + background-color: rgba($bd-purple, .15); + border: 1px solid rgba($bd-purple, .15); +} + +// Grid mixins +.example-container { + width: 800px; + @include make-container(); +} + +.example-row { + @include make-row(); +} + +.example-content-main { + @include make-col-ready(); + + @include media-breakpoint-up(sm) { + @include make-col(6); + } + + @include media-breakpoint-up(lg) { + @include make-col(8); + } +} + +.example-content-secondary { + @include make-col-ready(); + + @include media-breakpoint-up(sm) { + @include make-col(6); + } + + @include media-breakpoint-up(lg) { + @include make-col(4); } } @@ -188,7 +178,7 @@ width: 10rem; color: $gray-600; background-color: $gray-100; - border: $border-width solid $border-color; + border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color); > div { display: flex; @@ -207,18 +197,7 @@ } } -.bd-example-modal { - background-color: #fafafa; - - .modal { - position: static; - display: block; - } -} - .bd-example-offcanvas { - @include border-start-radius(0); - .offcanvas { position: static; display: block; @@ -233,20 +212,41 @@ white-space: nowrap; } +// scss-docs-start custom-tooltip +.custom-tooltip { + --bs-tooltip-bg: var(--bs-primary); +} +// scss-docs-end custom-tooltip + +// scss-docs-start custom-popovers +.custom-popover { + --bs-popover-max-width: 200px; + --bs-popover-border-color: var(--bs-primary); + --bs-popover-header-bg: var(--bs-primary); + --bs-popover-header-color: var(--bs-white); + --bs-popover-body-padding-x: 1rem; + --bs-popover-body-padding-y: .5rem; +} +// scss-docs-end custom-popovers + // Scrollspy demo on fixed height div .scrollspy-example { - position: relative; height: 200px; margin-top: .5rem; overflow: auto; } .scrollspy-example-2 { - position: relative; height: 350px; overflow: auto; } +.simple-list-example-scrollspy { + .active { + background-color: rgba(var(--bd-violet-rgb), .15); + } +} + .bd-example-border-utils { [class^="border"] { display: inline-block; @@ -257,12 +257,6 @@ } } -.bd-example-border-utils-0 { - [class^="border"] { - border: 1px solid $border-color; - } -} - .bd-example-rounded-utils { [class*="rounded"] { margin: .25rem; @@ -271,7 +265,7 @@ .bd-example-position-utils { position: relative; - padding: 3em; + padding: 2rem; .position-relative { height: 200px; @@ -279,8 +273,8 @@ } .position-absolute { - width: 2em; - height: 2em; + width: 2rem; + height: 2rem; background-color: $dark; @include border-radius(); } @@ -313,21 +307,28 @@ // .highlight { - padding: 1rem; + position: relative; + padding: .75rem ($bd-gutter-x * .5); margin-bottom: 1rem; - background-color: $gray-100; + background-color: var(--bs-gray-100); - @include media-breakpoint-up(sm) { - padding: 1rem 1.5rem; + @include media-breakpoint-up(md) { + padding: .75rem 1.25rem; + @include border-radius(var(--bs-border-radius)); } pre { padding: 0; - margin-top: .65rem; - margin-bottom: .65rem; + margin-top: .625rem; + margin-bottom: .625rem; white-space: pre; background-color: transparent; border: 0; + + // Undo tabindex that's automatically added by Hugo + &:focus { + outline: 0; + } } pre code { @@ -337,12 +338,26 @@ } } -.bd-content .highlight { - margin-right: (-$grid-gutter-width * .5); - margin-left: (-$grid-gutter-width * .5); +.bd-code-snippet { + margin: 0 ($bd-gutter-x * -.5) $spacer; - @include media-breakpoint-up(sm) { + .highlight { + margin-bottom: 0; + } + + .bd-example { + margin: 0; + border: 0; + } + + @include media-breakpoint-up(md) { margin-right: 0; margin-left: 0; + @include border-radius($border-radius); } } + +.highlight-toolbar { + border: solid $border-color; + border-width: 1px 0; +} diff --git a/vendor/twbs/bootstrap/site/assets/scss/_content.scss b/vendor/twbs/bootstrap/site/assets/scss/_content.scss index f2b5cfc54..cd594335a 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/_content.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/_content.scss @@ -2,14 +2,13 @@ // Bootstrap docs content theming // -// Offset for the sticky header -@include media-breakpoint-up(md) { - :root { - scroll-padding-top: 4rem; +.bd-content { + // Offset content from fixed navbar when jumping to headings + > :target { + padding-top: 5rem; + margin-top: -5rem; } -} -.bd-content { > h2:not(:first-child) { margin-top: 3rem; } @@ -31,20 +30,25 @@ } // Override Bootstrap defaults - > .table { - max-width: 100%; + > .table, + > .table-responsive .table { margin-bottom: 1.5rem; @include font-size(.875rem); @include media-breakpoint-down(lg) { - display: block; - overflow-x: auto; - &.table-bordered { border: 0; } } + thead { + border-bottom: 2px solid currentcolor; + } + + tbody:not(:first-child) { + border-top: 2px solid currentcolor; + } + th, td { &:first-child { @@ -57,12 +61,25 @@ } // Prevent breaking of code + // stylelint-disable-next-line selector-max-compound-selectors + th, td:first-child > code { white-space: nowrap; } } } +.table-options { + td:nth-child(2) { + min-width: 160px; + } +} + +.table-options td:last-child, +.table-utilities td:last-child { + min-width: 280px; +} + .bd-title { @include font-size(3rem); } @@ -72,10 +89,38 @@ font-weight: 300; } -.bd-text-purple-bright { - color: $bd-purple-bright; +.bd-bg-violet { + background-color: $bd-violet; +} + +.bi { + width: 1em; + height: 1em; + fill: currentcolor; +} + +.icon-link { + display: flex; + align-items: center; + text-decoration-color: rgba($primary, .5); + text-underline-offset: .5rem; + backface-visibility: hidden; + + .bi { + width: 1.5em; + height: 1.5em; + transition: .2s ease-in-out transform; // stylelint-disable-line property-disallowed-list + } + + &:hover { + .bi { + transform: translate3d(5px, 0, 0); + } + } } -.bd-bg-purple-bright { - background-color: $bd-purple-bright; +.border-lg-start { + @include media-breakpoint-up(lg) { + border-left: $border-width solid $border-color; + } } diff --git a/vendor/twbs/bootstrap/site/assets/scss/_layout.scss b/vendor/twbs/bootstrap/site/assets/scss/_layout.scss index 707c4949d..d0482d9b7 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/_layout.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/_layout.scss @@ -1,13 +1,14 @@ +.bd-gutter { + --bs-gutter-x: #{$bd-gutter-x}; +} + .bd-layout { - @include media-breakpoint-up(md) { - display: grid; - gap: $grid-gutter-width; - grid-template-areas: "sidebar main"; - grid-template-columns: 1fr 3fr; - } @include media-breakpoint-up(lg) { + display: grid; + grid-template-areas: "sidebar main"; grid-template-columns: 1fr 5fr; + gap: $grid-gutter-width; } } @@ -18,22 +19,27 @@ .bd-main { grid-area: main; + @include media-breakpoint-down(lg) { + max-width: 760px; + margin-inline: auto; + } + @include media-breakpoint-up(md) { display: grid; - gap: inherit; grid-template-areas: "intro" "toc" "content"; grid-template-rows: auto auto 1fr; + gap: inherit; } @include media-breakpoint-up(lg) { grid-template-areas: "intro toc" "content toc"; - grid-template-columns: 4fr 1fr; grid-template-rows: auto 1fr; + grid-template-columns: 4fr 1fr; } } diff --git a/vendor/twbs/bootstrap/site/assets/scss/_masthead.scss b/vendor/twbs/bootstrap/site/assets/scss/_masthead.scss index 2e742e76d..81d4d998c 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/_masthead.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/_masthead.scss @@ -1,38 +1,96 @@ .bd-masthead { + --bd-pink-rgb: #{to-rgb($pink)}; padding: 3rem 0; - background: linear-gradient(165deg, tint-color($bd-purple-light, 85%) 50%, $white 50%); + // stylelint-disable + background-image: linear-gradient(180deg, rgba(var(--bs-body-bg-rgb), .01), rgba(var(--bs-body-bg-rgb), 1) 85%), + radial-gradient(ellipse at top left, rgba(var(--bs-primary-rgb), .5), transparent 50%), + radial-gradient(ellipse at top right, rgba(var(--bd-accent-rgb), .5), transparent 50%), + radial-gradient(ellipse at center right, rgba(var(--bd-violet-rgb), .5), transparent 50%), + radial-gradient(ellipse at center left, rgba(var(--bd-pink-rgb), .5), transparent 50%); + // stylelint-enable h1 { @include font-size(4rem); line-height: 1; } - p:not(.lead) { + .lead { + @include font-size(1rem); + font-weight: 400; color: $gray-700; } - .btn { - padding: .8rem 2rem; - font-weight: 600; + .bd-code-snippet { + margin: 0; + @include border-radius(.5rem); + } + + .highlight { + width: 100%; + padding: .5rem 1rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + background-color: rgba(var(--bs-body-color-rgb), .075); + @include border-radius(.5rem); + + @include media-breakpoint-up(lg) { + padding-right: 4rem; + } + } + .btn-clipboard { + position: absolute; + top: -.125rem; + right: 0; + background-color: transparent; + } + + #carbonads { // stylelint-disable-line selector-max-id + margin-right: auto; + margin-left: auto; + } + + @include media-breakpoint-up(md) { + .lead { + @include font-size(1.5rem); + } } +} + +.masthead-followup { .lead { - @include font-size(1.5rem); - font-weight: 400; - color: $gray-700; + @include font-size(1rem); + } + + .highlight { + @include border-radius(.5rem); + } + + @include media-breakpoint-up(md) { + .lead { + @include font-size(1.25rem); + } } } -@include media-breakpoint-up(md) { - .mw-md-75 { max-width: 75%; } +.bd-btn-lg { + padding: .8rem 2rem; } .masthead-followup-icon { - padding: .75rem; - background-image: linear-gradient(to bottom right, rgba(255, 255, 255, .2), rgba(255, 255, 255, .01)); - @include border-radius(.75rem); - box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .1); + padding: 1rem; + color: rgba(var(--bg-rgb), 1); + background-color: rgba(var(--bg-rgb), .1); + background-blend-mode: multiple; + @include border-radius(1rem); + mix-blend-mode: darken; + + svg { + filter: drop-shadow(0 1px 1px #fff); + } } -.masthead-followup-svg { - filter: drop-shadow(0 1px 0 rgba(0, 0, 0, .125)); +.masthead-notice { + background-color: var(--bd-accent); + box-shadow: inset 0 -1px 1px rgba(var(--bs-body-color-rgb), .15), 0 .25rem 1.5rem rgba(var(--bs-body-bg-rgb), .75); } diff --git a/vendor/twbs/bootstrap/site/assets/scss/_navbar.scss b/vendor/twbs/bootstrap/site/assets/scss/_navbar.scss index 053cadf2e..4805a3c47 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/_navbar.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/_navbar.scss @@ -1,32 +1,85 @@ .bd-navbar { padding: .75rem 0; - background-color: $bd-purple-bright; + background-color: transparent; + background-image: linear-gradient(to bottom, rgba(var(--bd-violet-rgb), 1), rgba(var(--bd-violet-rgb), .95)); + box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15), inset 0 -1px 0 rgba(0, 0, 0, .15); .navbar-toggler { padding: 0; + margin-right: -.5rem; border: 0; + + &:first-child { + margin-left: -.5rem; + } + + .bi { + width: 1.5rem; + height: 1.5rem; + } + + &:focus { + box-shadow: none; + } } - .navbar-nav { - .nav-link { - padding-right: $spacer * .25; - padding-left: $spacer * .25; - color: rgba($white, .85); + .navbar-brand { + transition: .2s ease-in-out transform; // stylelint-disable-line property-disallowed-list - &:hover, - &:focus { - color: $white; - } + &:hover { + transform: rotate(-5deg) scale(1.1); + } + } + + .navbar-toggler, + .nav-link { + padding-right: $spacer * .25; + padding-left: $spacer * .25; + color: rgba($white, .85); + + &:hover, + &:focus { + color: $white; + } - &.active { - font-weight: 600; - color: $white; - } + &.active { + font-weight: 600; + color: $white; } } .navbar-nav-svg { - width: 1rem; - height: 1rem; + display: inline-block; + vertical-align: -.125rem; + } + + .offcanvas-lg { + background-color: var(--bd-violet); + border-left: 0; + + @include media-breakpoint-down(lg) { + box-shadow: $box-shadow-lg; + } + } + + .dropdown-toggle { + &:focus:not(:focus-visible) { + outline: 0; + } + } + + .dropdown-menu { + --#{$prefix}dropdown-min-width: 12rem; + --#{$prefix}dropdown-link-hover-bg: rgba(var(--bd-violet-rgb), .1); + @include rfs(.875rem, --#{$prefix}dropdown-font-size); + box-shadow: $dropdown-box-shadow; + } + + .dropdown-item.current { + font-weight: 600; + background-image: escape-svg($dropdown-active-icon); + background-repeat: no-repeat; + background-position: right $dropdown-item-padding-x top .6rem; + background-size: .75rem .75rem; } } diff --git a/vendor/twbs/bootstrap/site/assets/scss/_placeholder-img.scss b/vendor/twbs/bootstrap/site/assets/scss/_placeholder-img.scss index 90a29544e..6f5bbe418 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/_placeholder-img.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/_placeholder-img.scss @@ -6,8 +6,8 @@ .bd-placeholder-img { @include font-size(1.125rem); - text-anchor: middle; user-select: none; + text-anchor: middle; } .bd-placeholder-img-lg { diff --git a/vendor/twbs/bootstrap/site/assets/scss/_search.scss b/vendor/twbs/bootstrap/site/assets/scss/_search.scss new file mode 100644 index 000000000..24c0e2dc8 --- /dev/null +++ b/vendor/twbs/bootstrap/site/assets/scss/_search.scss @@ -0,0 +1,121 @@ +// stylelint-disable selector-class-pattern + +.bd-search { + position: relative; + width: 100%; + + @include media-breakpoint-up(lg) { + position: absolute; + top: .875rem; + left: 50%; + width: 200px; + margin-left: -100px; + } + + @include media-breakpoint-up(xl) { + width: 280px; + margin-left: -140px; + } + +} + +.DocSearch-Container { + --docsearch-muted-color: #{$text-muted}; + --docsearch-hit-shadow: none; + + z-index: 2000; // Make sure to be over all components showcased in the documentation + + @include media-breakpoint-up(lg) { + padding-top: 4rem; + } +} + +.DocSearch-Button { + --docsearch-searchbox-background: #{rgba($black, .1)}; + --docsearch-searchbox-color: #{$white}; + --docsearch-searchbox-focus-background: #{rgba($black, .25)}; + --docsearch-searchbox-shadow: #{0 0 0 .25rem rgba($bd-accent, .4)}; + --docsearch-text-color: #{$white}; + --docsearch-muted-color: #{rgba($white, .65)}; + + width: 100%; + height: 38px; // Match Bootstrap inputs + margin: 0; + border: 1px solid rgba($white, .4); + @include border-radius(.375rem); + + .DocSearch-Search-Icon { + opacity: .65; + } + + &:active, + &:focus, + &:hover { + border-color: rgba($bd-accent, 1); + + .DocSearch-Search-Icon { + opacity: 1; + } + } +} + +.DocSearch-Button-Keys { + min-width: 0; + padding: .125rem .25rem; + background: rgba($black, .25); + @include border-radius(.25rem); +} + +.DocSearch-Button-Key { + top: 0; + width: auto; + height: 1.25rem; + padding-right: .125rem; + padding-left: .125rem; + margin-right: 0; + font-size: .875rem; + background: none; + box-shadow: none; +} + +.DocSearch-Commands-Key { + padding-left: 1px; + font-size: .875rem; + background-color: rgba($black, .1); + background-image: none; + box-shadow: none; +} + +.DocSearch-Form { + @include border-radius(var(--bs-border-radius)); +} + +.DocSearch-Hits { + mark { + padding: 0; + } +} + +.DocSearch-Hit { + padding-bottom: 0; + @include border-radius(0); + + a { + @include border-radius(0); + border: solid var(--bs-border-color); + border-width: 0 1px 1px; + } + + &:first-child a { + @include border-top-radius(var(--bs-border-radius)); + border-top-width: 1px; + } + &:last-child a { + @include border-bottom-radius(var(--bs-border-radius)); + } +} + +.DocSearch-Hit-icon { + display: flex; + align-items: center; +} diff --git a/vendor/twbs/bootstrap/site/assets/scss/_sidebar.scss b/vendor/twbs/bootstrap/site/assets/scss/_sidebar.scss index d893ba9dc..ed76b3ca8 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/_sidebar.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/_sidebar.scss @@ -1,87 +1,53 @@ .bd-sidebar { - @include media-breakpoint-down(md) { - margin: 0 -.75rem 1rem; - } -} - -.bd-links { - overflow: auto; - font-weight: 600; - - @include media-breakpoint-up(md) { + @include media-breakpoint-up(lg) { position: sticky; top: 5rem; // Override collapse behaviors // stylelint-disable-next-line declaration-no-important display: block !important; - height: subtract(100vh, 7rem); + height: subtract(100vh, 6rem); // Prevent focus styles to be cut off: padding-left: .25rem; margin-left: -.25rem; overflow-y: auto; } +} - > ul { - @include media-breakpoint-down(md) { - padding: 1.5rem .75rem; - background-color: $gray-100; - border-bottom: 1px solid $gray-200; - } - } - - a { - padding: .1875rem .5rem; - margin-top: .125rem; - margin-left: 1.25rem; - color: rgba($black, .65); - text-decoration: if($link-decoration == none, null, none); - - &:hover, - &:focus { - color: rgba($black, .85); - text-decoration: if($link-hover-decoration == underline, none, null); - background-color: rgba($bd-purple-bright, .1); - } +.bd-links-nav { + @include media-breakpoint-down(lg) { + font-size: .875rem; } - .btn { - // Custom styles (as we don't have a completely neutral button style) - padding: .25rem .5rem; - font-weight: 600; - color: rgba($black, .65); - background-color: transparent; - border: 0; + @include media-breakpoint-between(xs, lg) { + column-count: 2; + column-gap: 1.5rem; - &:hover, - &:focus { - color: rgba($black, .85); - background-color: rgba($bd-purple-bright, .1); + .bd-links-group { + break-inside: avoid; } - &:focus { - box-shadow: 0 0 0 1px rgba($bd-purple-bright, .7); - } - - // Add chevron if there's a submenu - &::before { - width: 1.25em; - line-height: 0; // Align in the middle - content: escape-svg($sidebar-collapse-icon); - @include transition(transform .35s ease); - transform-origin: .5em 50%; + .bd-links-span-all { + column-span: all; } + } +} - &[aria-expanded="true"] { - color: rgba($black, .85); +.bd-links-link { + padding: .1875rem .5rem; + margin-top: .125rem; + margin-left: 1rem; + color: rgba($black, .65); + text-decoration: if($link-decoration == none, null, none); - &::before { - transform: rotate(90deg); - } - } + &:hover, + &:focus, + &.active { + color: rgba($black, .85); + text-decoration: if($link-hover-decoration == underline, none, null); + background-color: rgba(var(--bd-violet-rgb), .1); } - .active { + &.active { font-weight: 600; - color: rgba($black, .85); } } diff --git a/vendor/twbs/bootstrap/site/assets/scss/_subnav.scss b/vendor/twbs/bootstrap/site/assets/scss/_subnav.scss deleted file mode 100644 index 8377ff423..000000000 --- a/vendor/twbs/bootstrap/site/assets/scss/_subnav.scss +++ /dev/null @@ -1,79 +0,0 @@ -.bd-subnavbar { - // The position and z-index are needed for the dropdown to stay on top of the content - position: relative; - z-index: $zindex-sticky; - background-color: rgba($white, .95); - box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .05), inset 0 -1px 0 rgba(0, 0, 0, .15); - - .dropdown-menu { - @include font-size(.875rem); - box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .05); - } - - .dropdown-item.current { - font-weight: 600; - background-image: escape-svg($dropdown-active-icon); - background-repeat: no-repeat; - background-position: right $dropdown-item-padding-x top .6rem; - background-size: .75rem .75rem; - } - - @include media-breakpoint-up(md) { - position: sticky; - top: 0; - } -} - -.bd-search { - position: relative; - - &::after { - position: absolute; - top: .4rem; - right: .4rem; - display: flex; - align-items: center; - justify-content: center; - height: 1.5rem; - padding-right: .25rem; - padding-left: .25rem; - @include font-size(.75rem); - color: $gray-600; - content: "Ctrl + /"; - border: $border-width solid $border-color; - @include border-radius(.125rem); - } - - @include media-breakpoint-down(md) { - width: 100%; - } - - .form-control { - padding-right: 3.75rem; - - &:focus { - border-color: $bd-purple-bright; - box-shadow: 0 0 0 3px rgba($bd-purple-bright, .25); - } - } -} - -.bd-sidebar-toggle { - color: $text-muted; - - &:hover, - &:focus { - color: $bd-purple-bright; - } - - &:focus { - box-shadow: 0 0 0 3px rgba($bd-purple-bright, .25); - } - - .bi-collapse { display: none; } - - &:not(.collapsed) { - .bi-expand { display: none; } - .bi-collapse { display: inline-block; } - } -} diff --git a/vendor/twbs/bootstrap/site/assets/scss/_syntax.scss b/vendor/twbs/bootstrap/site/assets/scss/_syntax.scss index 8120bbef2..106032c07 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/_syntax.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/_syntax.scss @@ -1,94 +1,107 @@ -// stylelint-disable comment-empty-line-before, declaration-block-single-line-max-declarations, selector-class-pattern +:root { + --base00: #fff; + --base01: #f5f5f5; + --base02: #c8c8fa; + --base03: #565c64; + --base04: #030303; + --base05: #333; + --base06: #fff; + --base07: #9a6700; + --base08: #bc4c00; + --base09: #087990; + --base0A: #795da3; + --base0B: #183691; + --base0C: #183691; + --base0D: #795da3; + --base0E: #a71d5d; + --base0F: #333; +} + +.hl { background-color: var(--base02); } +.c { color: var(--base03); } +.err { color: var(--base08); } +.k { color: var(--base0E); } +.l { color: var(----base09); } +.n { color: var(--base08); } +.o { color: var(--base05); } +.p { color: var(--base05); } +.cm { color: var(--base04); } +.cp { color: var(--base08); } +.c1 { color: var(--base03); } +.cs { color: var(--base04); } +.gd { color: var(--base08); } +.ge { font-style: italic; } +.gh { + font-weight: 600; + color: #fff; +} +.gi { color: var(--bs-success); } +.gp { + font-weight: 600; + color: var(--base04); +} +.gs { font-weight: 600; } +.gu { + font-weight: 600; + color: var(--base0C); +} +.kc { color: var(--base0E); } +.kd { color: var(--base0E); } +.kn { color: var(--base0C); } +.kp { color: var(--base0E); } +.kr { color: var(--base0E); } +.kt { color: var(--base0A); } +.ld { color: var(--base0C); } +.m { color: var(--base09); } +.s { color: var(--base0C); } +.na { color: var(--base0A); } +.nb { color: var(--base05); } +.nc { color: var(--base07); } +.no { color: var(--base08); } +.nd { color: var(--base07); } +.ni { color: var(--base08); } +.ne { color: var(--base08); } +.nf { color: var(--base0B); } +.nl { color: var(--base05); } +.nn { color: var(--base0A); } +.nx { color: var(--base0A); } +.py { color: var(--base08); } +.nt { color: var(--base08); } +.nv { color: var(--base08); } +.ow { color: var(--base0C); } +.w { color: #fff; } +.mf { color: var(--base09); } +.mh { color: var(--base09); } +.mi { color: var(--base09); } +.mo { color: var(--base09); } +.sb { color: var(--base0C); } +.sc { color: #fff; } +.sd { color: var(--base04); } +.s2 { color: var(--base0C); } +.se { color: var(--base09); } +.sh { color: var(--base0C); } +.si { color: var(--base09); } +.sx { color: var(--base0C); } +.sr { color: var(--base0C); } +.s1 { color: var(--base0C); } +.ss { color: var(--base0C); } +.bp { color: var(--base05); } +.vc { color: var(--base08); } +.vg { color: var(--base08); } +.vi { color: var(--base08); } +.il { color: var(--base09); } -/* Background .chroma { background-color: #f0f0f0; } */ -/* Other .chroma .x { } */ -/* Error .chroma .err { } */ -/* LineTableTD .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } */ -/* LineTable .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; } */ -/* LineHighlight .chroma .hl { display: block; width: 100%; background-color: #ffffcc; } */ -/* LineNumbersTable .chroma .lnt { margin-right: .4em; padding: 0 .4em; } */ -/* LineNumbers .chroma .ln { margin-right: .4em; padding: 0 .4em; } */ +// Color commas in rgba() values +.m + .o { color: var(--base03); } -/* Comment */ .chroma .c { color: #727272; } -/* CommentHashbang */ .chroma .ch { font-style: italic; color: #60a0b0; } -/* CommentMultiline */ .chroma .cm { color: #727272; } -/* CommentPreproc */ .chroma .cp { color: #008085; } -/* CommentPreprocFile */ .chroma .cpf { color: #007020; } -/* CommentSingle */ .chroma .c1 { color: #727272; } -/* CommentSpecial */ .chroma .cs { color: #727272; } -/* Generic .chroma .g { } */ -/* GenericDeleted */ .chroma .gd { background-color: #fcc; border: 1px solid #c00; } -/* GenericEmph */ .chroma .ge { font-style: italic; } -/* GenericError */ .chroma .gr { color: #f00; } -/* GenericHeading */ .chroma .gh { color: #030; } -/* GenericInserted */ .chroma .gi { background-color: #cfc; border: 1px solid #0c0; } -/* GenericOutput */ .chroma .go { color: #aaa; } -/* GenericPrompt */ .chroma .gp { color: #009; } -/* GenericStrong */ .chroma .gs { font-weight: 700; } -/* GenericSubheading */ .chroma .gu { color: #030; } -/* GenericTraceback */ .chroma .gt { color: #9c6; } -/* GenericUnderline */ .chroma .gl { text-decoration: underline; } -/* Keyword */ .chroma .k { color: #069; } -/* KeywordConstant */ .chroma .kc { color: #069; } -/* KeywordDeclaration */ .chroma .kd { color: #069; } -/* KeywordNamespace */ .chroma .kn { color: #069; } -/* KeywordPseudo */ .chroma .kp { color: #069; } -/* KeywordReserved */ .chroma .kr { color: #069; } -/* KeywordType */ .chroma .kt { color: #078; } -/* Literal .chroma .l { } */ -/* LiteralDate .chroma .ld { color: #c24f19 } */ -/* LiteralNumber */ .chroma .m { color: #c24f19; } -/* LiteralNumberBin */ .chroma .mb { color: #40a070; } -/* LiteralNumberFloat */ .chroma .mf { color: #c24f19; } -/* LiteralNumberHex */ .chroma .mh { color: #c24f19; } -/* LiteralNumberInteger */ .chroma .mi { color: #c24f19; } -/* LiteralNumberIntegerLong */ .chroma .il { color: #c24f19; } -/* LiteralNumberOct */ .chroma .mo { color: #c24f19; } -/* LiteralString */ .chroma .s { color: #d73038; } -/* LiteralStringAffix */ .chroma .sa { color: #4070a0; } -/* LiteralStringBacktick */ .chroma .sb { color: #c30; } -/* LiteralStringChar */ .chroma .sc { color: #c30; } -/* LiteralStringDelimiter */ .chroma .dl { color: #4070a0; } -/* LiteralStringDoc */ .chroma .sd { font-style: italic; color: #c30; } -/* LiteralStringDouble */ .chroma .s2 { color: #c30; } -/* LiteralStringEscape */ .chroma .se { color: #c30; } -/* LiteralStringHeredoc */ .chroma .sh { color: #c30; } -/* LiteralStringInterpol */ .chroma .si { color: #a00; } -/* LiteralStringOther */ .chroma .sx { color: #c30; } -/* LiteralStringRegex */ .chroma .sr { color: #337e7e; } -/* LiteralStringSingle */ .chroma .s1 { color: #c30; } -/* LiteralStringSymbol */ .chroma .ss { color: #fc3; } -/* Name .chroma .n { } */ -/* NameAttribute */ .chroma .na { color: #006ee0; } -/* NameBuiltin */ .chroma .nb { color: #366; } -/* NameBuiltinPseudo .chroma .bp { } */ -/* NameClass */ .chroma .nc { color: #168174; } -/* NameConstant */ .chroma .no { color: #360; } -/* NameDecorator */ .chroma .nd { color: #6b62de; } -/* NameEntity */ .chroma .ni { color: #727272; } -/* NameException */ .chroma .ne { color: #c00; } -/* NameFunction */ .chroma .nf { color: #b715f4; } -/* NameFunctionMagic .chroma .fm { } */ -/* NameLabel */ .chroma .nl { color: #6b62de; } -/* NameNamespace */ .chroma .nn { color: #007ca5; } -/* NameOther .chroma .nx { } */ -/* NameProperty .chroma .py { } */ -/* NameTag */ .chroma .nt { color: #2f6f9f; } -/* NameVariable */ .chroma .nv { color: #033; } -/* NameVariableClass .chroma .vc { } */ -/* NameVariableGlobal .chroma .vg { } */ -/* NameVariableInstance .chroma .vi { } */ -/* NameVariableMagic .chroma .vm { } */ -/* Operator */ .chroma .o { color: #555; } -/* OperatorWord */ .chroma .ow { color: #000; } -/* Punctuation .chroma .p { } */ -/* TextWhitespace */ .chroma .w { color: #bbb; } +// Fix bash +.language-sh .c { color: var(--base03); } .chroma { .language-bash, .language-sh { - &::before { - color: #009; + .line::before { + color: #777; content: "$ "; user-select: none; } diff --git a/vendor/twbs/bootstrap/site/assets/scss/_toc.scss b/vendor/twbs/bootstrap/site/assets/scss/_toc.scss index 596945628..512a11b42 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/_toc.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/_toc.scss @@ -15,6 +15,7 @@ ul { padding-left: 0; + margin-bottom: 0; list-style: none; ul { @@ -40,3 +41,47 @@ } } } + +.bd-toc-toggle { + display: flex; + align-items: center; + + @include media-breakpoint-down(sm) { + justify-content: space-between; + width: 100%; + } + + @include media-breakpoint-down(md) { + border: 1px solid $border-color; + @include border-radius(.4rem); + + &:hover, + &:focus, + &:active, + &[aria-expanded="true"] { + color: var(--bd-violet); + background-color: $white; + border-color: var(--bd-violet); + } + + &:focus, + &[aria-expanded="true"] { + box-shadow: 0 0 0 3px rgba(var(--bd-violet-rgb), .25); + } + } +} + +.bd-toc-collapse { + @include media-breakpoint-down(md) { + nav { + padding: 1.25rem; + background-color: var(--bs-gray-100); + border: 1px solid $border-color; + @include border-radius(.25rem); + } + } + + @include media-breakpoint-up(md) { + display: block !important; // stylelint-disable-line declaration-no-important + } +} diff --git a/vendor/twbs/bootstrap/site/assets/scss/_variables.scss b/vendor/twbs/bootstrap/site/assets/scss/_variables.scss index 110600260..b460392d0 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/_variables.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/_variables.scss @@ -1,13 +1,23 @@ // stylelint-disable scss/dollar-variable-default // Local docs variables -$bd-purple: #563d7c; -$bd-purple-bright: lighten(saturate($bd-purple, 5%), 15%); // stylelint-disable-line function-disallowed-list +$bd-purple: #4c0bce; +$bd-violet: lighten(saturate($bd-purple, 5%), 15%); // stylelint-disable-line function-disallowed-list $bd-purple-light: lighten(saturate($bd-purple, 5%), 45%); // stylelint-disable-line function-disallowed-list -$bd-dark: #2a2730; -$bd-download: #ffe484; -$bd-info: #5bc0de; -$bd-warning: #f0ad4e; -$bd-danger: #d9534f; +$bd-accent: #ffe484; $dropdown-active-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#292b2c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>"); -$sidebar-collapse-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'><path fill='none' stroke='rgba(0,0,0,.5)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/></svg>"); + +$bd-gutter-x: 3rem; +$bd-callout-variants: info, warning, danger !default; + +:root { + --bd-purple: #{$bd-purple}; + --bd-violet: #{$bd-violet}; + --bd-accent: #{$bd-accent}; + --bd-violet-rgb: #{to-rgb($bd-violet)}; + --bd-accent-rgb: #{to-rgb($bd-accent)}; + --bd-pink-rgb: #{to-rgb($pink-500)}; + --bd-teal-rgb: #{to-rgb($teal-500)}; + --docsearch-primary-color: var(--bd-violet); + --docsearch-logo-color: var(--bd-violet); +} diff --git a/vendor/twbs/bootstrap/site/assets/scss/docs.scss b/vendor/twbs/bootstrap/site/assets/scss/docs.scss index 8b7bc99a1..521493461 100644 --- a/vendor/twbs/bootstrap/site/assets/scss/docs.scss +++ b/vendor/twbs/bootstrap/site/assets/scss/docs.scss @@ -1,7 +1,7 @@ /*! * Bootstrap Docs (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors - * Copyright 2011-2021 Twitter, Inc. + * Copyright 2011-2022 The Bootstrap Authors + * Copyright 2011-2022 Twitter, Inc. * Licensed under the Creative Commons Attribution 3.0 Unported License. * For details, see https://creativecommons.org/licenses/by/3.0/. */ @@ -37,7 +37,7 @@ $enable-cssgrid: true; // stylelint-disable-line scss/dollar-variable-default // Load docs components @import "variables"; @import "navbar"; -@import "subnav"; +@import "search"; @import "masthead"; @import "ads"; @import "content"; @@ -57,4 +57,3 @@ $enable-cssgrid: true; // stylelint-disable-line scss/dollar-variable-default // Load docs dependencies @import "syntax"; @import "anchor"; -@import "algolia"; diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/_index.html b/vendor/twbs/bootstrap/site/content/docs/5.1/_index.html deleted file mode 100644 index 198e6af8c..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/_index.html +++ /dev/null @@ -1,5 +0,0 @@ ---- -layout: redirect -sitemap_exclude: true -redirect: "/docs/5.1/getting-started/introduction/" ---- diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/popovers.md b/vendor/twbs/bootstrap/site/content/docs/5.1/components/popovers.md deleted file mode 100644 index 4511645ce..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/popovers.md +++ /dev/null @@ -1,443 +0,0 @@ ---- -layout: docs -title: Popovers -description: Documentation and examples for adding Bootstrap popovers, like those found in iOS, to any element on your site. -group: components -toc: true ---- - -## Overview - -Things to know when using the popover plugin: - -- Popovers rely on the 3rd party library [Popper](https://popper.js.org/) for positioning. You must include [popper.min.js]({{< param "cdn.popper" >}}) before bootstrap.js or use `bootstrap.bundle.min.js` / `bootstrap.bundle.js` which contains Popper in order for popovers to work! -- Popovers require the [tooltip plugin]({{< docsref "/components/tooltips" >}}) as a dependency. -- Popovers are opt-in for performance reasons, so **you must initialize them yourself**. -- Zero-length `title` and `content` values will never show a popover. -- Specify `container: 'body'` to avoid rendering problems in more complex components (like our input groups, button groups, etc). -- Triggering popovers on hidden elements will not work. -- Popovers for `.disabled` or `disabled` elements must be triggered on a wrapper element. -- When triggered from anchors that wrap across multiple lines, popovers will be centered between the anchors' overall width. Use `.text-nowrap` on your `<a>`s to avoid this behavior. -- Popovers must be hidden before their corresponding elements have been removed from the DOM. -- Popovers can be triggered thanks to an element inside a shadow DOM. - -{{< callout info >}} -{{< partial "callout-info-sanitizer.md" >}} -{{< /callout >}} - -{{< callout info >}} -{{< partial "callout-info-prefersreducedmotion.md" >}} -{{< /callout >}} - -Keep reading to see how popovers work with some examples. - -## Example: Enable popovers everywhere - -One way to initialize all popovers on a page would be to select them by their `data-bs-toggle` attribute: - -```js -var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')) -var popoverList = popoverTriggerList.map(function (popoverTriggerEl) { - return new bootstrap.Popover(popoverTriggerEl) -}) -``` - -## Example: Using the `container` option - -When you have some styles on a parent element that interfere with a popover, you'll want to specify a custom `container` so that the popover's HTML appears within that element instead. - -```js -var popover = new bootstrap.Popover(document.querySelector('.example-popover'), { - container: 'body' -}) -``` - -## Example - -{{< example >}} -<button type="button" class="btn btn-lg btn-danger" data-bs-toggle="popover" title="Popover title" data-bs-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button> -{{< /example >}} - -### Four directions - -Four options are available: top, right, bottom, and left aligned. Directions are mirrored when using Bootstrap in RTL. - -{{< example >}} -<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="top" data-bs-content="Top popover"> - Popover on top -</button> -<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="right" data-bs-content="Right popover"> - Popover on right -</button> -<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="bottom" data-bs-content="Bottom popover"> - Popover on bottom -</button> -<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="left" data-bs-content="Left popover"> - Popover on left -</button> -{{< /example >}} - -### Dismiss on next click - -Use the `focus` trigger to dismiss popovers on the user's next click of a different element than the toggle element. - -{{< callout danger >}} -#### Specific markup required for dismiss-on-next-click - -For proper cross-browser and cross-platform behavior, you must use the `<a>` tag, _not_ the `<button>` tag, and you also must include a [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) attribute. -{{< /callout >}} - -{{< example >}} -<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-bs-toggle="popover" data-bs-trigger="focus" title="Dismissible popover" data-bs-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a> -{{< /example >}} - -```js -var popover = new bootstrap.Popover(document.querySelector('.popover-dismiss'), { - trigger: 'focus' -}) -``` - -### Disabled elements - -Elements with the `disabled` attribute aren't interactive, meaning users cannot hover or click them to trigger a popover (or tooltip). As a workaround, you'll want to trigger the popover from a wrapper `<div>` or `<span>`, ideally made keyboard-focusable using `tabindex="0"`. - -For disabled popover triggers, you may also prefer `data-bs-trigger="hover focus"` so that the popover appears as immediate visual feedback to your users as they may not expect to _click_ on a disabled element. - -{{< example >}} -<span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="Disabled popover"> - <button class="btn btn-primary" type="button" disabled>Disabled button</button> -</span> -{{< /example >}} - -## Sass - -### Variables - -{{< scss-docs name="popover-variables" file="scss/_variables.scss" >}} - -## Usage - -Enable popovers via JavaScript: - -```js -var exampleEl = document.getElementById('example') -var popover = new bootstrap.Popover(exampleEl, options) -``` - -{{< callout warning >}} -### Making popovers work for keyboard and assistive technology users - -To allow keyboard users to activate your popovers, you should only add them to HTML elements that are traditionally keyboard-focusable and interactive (such as links or form controls). Although arbitrary HTML elements (such as `<span>`s) can be made focusable by adding the `tabindex="0"` attribute, this will add potentially annoying and confusing tab stops on non-interactive elements for keyboard users, and most assistive technologies currently do not announce the popover's content in this situation. Additionally, do not rely solely on `hover` as the trigger for your popovers, as this will make them impossible to trigger for keyboard users. - -While you can insert rich, structured HTML in popovers with the `html` option, we strongly recommend that you avoid adding an excessive amount of content. The way popovers currently work is that, once displayed, their content is tied to the trigger element with the `aria-describedby` attribute. As a result, the entirety of the popover's content will be announced to assistive technology users as one long, uninterrupted stream. - -Additionally, while it is possible to also include interactive controls (such as form elements or links) in your popover (by adding these elements to the `allowList` of allowed attributes and tags), be aware that currently the popover does not manage keyboard focus order. When a keyboard user opens a popover, focus remains on the triggering element, and as the popover usually does not immediately follow the trigger in the document's structure, there is no guarantee that moving forward/pressing <kbd>TAB</kbd> will move a keyboard user into the popover itself. In short, simply adding interactive controls to a popover is likely to make these controls unreachable/unusable for keyboard users and users of assistive technologies, or at the very least make for an illogical overall focus order. In these cases, consider using a modal dialog instead. -{{< /callout >}} - -### Options - -Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-bs-`, as in `data-bs-animation=""`. Make sure to change the case type of the option name from camelCase to kebab-case when passing the options via data attributes. For example, instead of using `data-bs-customClass="beautifier"`, use `data-bs-custom-class="beautifier"`. - -{{< callout warning >}} -Note that for security reasons the `sanitize`, `sanitizeFn`, and `allowList` options cannot be supplied using data attributes. -{{< /callout >}} - -<table class="table"> - <thead> - <tr> - <th style="width: 100px;">Name</th> - <th style="width: 100px;">Type</th> - <th style="width: 50px;">Default</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>animation</code></td> - <td>boolean</td> - <td><code>true</code></td> - <td>Apply a CSS fade transition to the popover</td> - </tr> - <tr> - <td><code>container</code></td> - <td>string | element | false</td> - <td><code>false</code></td> - <td> - <p>Appends the popover to a specific element. Example: <code>container: 'body'</code>. This option is particularly useful in that it allows you to position the popover in the flow of the document near the triggering element - which will prevent the popover from floating away from the triggering element during a window resize.</p> - </td> - </tr> - <tr> - <td><code>content</code></td> - <td>string | element | function</td> - <td><code>''</code></td> - <td> - <p>Default content value if <code>data-bs-content</code> attribute isn't present.</p> - <p>If a function is given, it will be called with its <code>this</code> reference set to the element that the popover is attached to.</p> - </td> - </tr> - <tr> - <td><code>delay</code></td> - <td>number | object</td> - <td><code>0</code></td> - <td> - <p>Delay showing and hiding the popover (ms) - does not apply to manual trigger type</p> - <p>If a number is supplied, delay is applied to both hide/show</p> - <p>Object structure is: <code>delay: { "show": 500, "hide": 100 }</code></p> - </td> - </tr> - <tr> - <td><code>html</code></td> - <td>boolean</td> - <td><code>false</code></td> - <td>Insert HTML into the popover. If false, <code>innerText</code> property will be used to insert content into the DOM. Use text if you're worried about XSS attacks.</td> - </tr> - <tr> - <td><code>placement</code></td> - <td>string | function</td> - <td><code>'right'</code></td> - <td> - <p>How to position the popover - auto | top | bottom | left | right.<br>When <code>auto</code> is specified, it will dynamically reorient the popover.</p> - <p>When a function is used to determine the placement, it is called with the popover DOM node as its first argument and the triggering element DOM node as its second. The <code>this</code> context is set to the popover instance.</p> - </td> - </tr> - <tr> - <td><code>selector</code></td> - <td>string | false</td> - <td><code>false</code></td> - <td>If a selector is provided, popover objects will be delegated to the specified targets. In practice, this is used to enable dynamic HTML content to have popovers added. See <a href="{{< param repo >}}/issues/4215">this</a> and <a href="https://codepen.io/team/bootstrap/pen/zYBXGwX?editors=1010">an informative example</a>.</td> - </tr> - <tr> - <td><code>template</code></td> - <td>string</td> - <td><code>'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'</code></td> - <td> - <p>Base HTML to use when creating the popover.</p> - <p>The popover's <code>title</code> will be injected into the <code>.popover-header</code>.</p> - <p>The popover's <code>content</code> will be injected into the <code>.popover-body</code>.</p> - <p><code>.popover-arrow</code> will become the popover's arrow.</p> - <p>The outermost wrapper element should have the <code>.popover</code> class.</p> - </td> - </tr> - <tr> - <td><code>title</code></td> - <td>string | element | function</td> - <td><code>''</code></td> - <td> - <p>Default title value if <code>title</code> attribute isn't present.</p> - <p>If a function is given, it will be called with its <code>this</code> reference set to the element that the popover is attached to.</p> - </td> - </tr> - <tr> - <td><code>trigger</code></td> - <td>string</td> - <td><code>'click'</code></td> - <td>How popover is triggered - click | hover | focus | manual. You may pass multiple triggers; separate them with a space. <code>manual</code> cannot be combined with any other trigger.</td> - </tr> - <tr> - <td><code>fallbackPlacements</code></td> - <td>array</td> - <td><code>['top', 'right', 'bottom', 'left']</code></td> - <td>Define fallback placements by providing a list of placements in array (in order of preference). For more information refer to - Popper's <a href="https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements">behavior docs</a></td> - </tr> - <tr> - <td><code>boundary</code></td> - <td>string | element</td> - <td><code>'clippingParents'</code></td> - <td>Overflow constraint boundary of the popover (applies only to Popper's preventOverflow modifier). By default it's <code>'clippingParents'</code> and can accept an HTMLElement reference (via JavaScript only). For more information refer to Popper's <a href="https://popper.js.org/docs/v2/utils/detect-overflow/#boundary">detectOverflow docs</a>.</td> - </tr> - <tr> - <td><code>customClass</code></td> - <td>string | function</td> - <td><code>''</code></td> - <td> - <p>Add classes to the popover when it is shown. Note that these classes will be added in addition to any classes specified in the template. To add multiple classes, separate them with spaces: <code>'class-1 class-2'</code>.</p> - <p>You can also pass a function that should return a single string containing additional class names.</p> - </td> - </tr> - <tr> - <td><code>sanitize</code></td> - <td>boolean</td> - <td><code>true</code></td> - <td>Enable or disable the sanitization. If activated <code>'template'</code>, <code>'content'</code> and <code>'title'</code> options will be sanitized. See the <a href="{{< docsref "/getting-started/javascript#sanitizer" >}}">sanitizer section in our JavaScript documentation</a>.</td> - </tr> - <tr> - <td><code>allowList</code></td> - <td>object</td> - <td><a href="{{< docsref "/getting-started/javascript#sanitizer" >}}">Default value</a></td> - <td>Object which contains allowed attributes and tags</td> - </tr> - <tr> - <td><code>sanitizeFn</code></td> - <td>null | function</td> - <td><code>null</code></td> - <td>Here you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization.</td> - </tr> - <tr> - <td><code>offset</code></td> - <td>array | string | function</td> - <td><code>[0, 8]</code></td> - <td> - <p>Offset of the popover relative to its target. You can pass a string in data attributes with comma separated values like: <code>data-bs-offset="10,20"</code></p> - <p>When a function is used to determine the offset, it is called with an object containing the popper placement, the reference, and popper rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: <code>[<a href="https://popper.js.org/docs/v2/modifiers/offset/#skidding-1">skidding</a>, <a href="https://popper.js.org/docs/v2/modifiers/offset/#distance-1">distance</a>]</code>.</p> - <p>For more information refer to Popper's <a href="https://popper.js.org/docs/v2/modifiers/offset/#options">offset docs</a>.</p> - </td> - </tr> - <tr> - <td><code>popperConfig</code></td> - <td>null | object | function</td> - <td><code>null</code></td> - <td> - <p>To change Bootstrap's default Popper config, see <a href="https://popper.js.org/docs/v2/constructors/#options">Popper's configuration</a>.</p> - <p>When a function is used to create the Popper configuration, it's called with an object that contains the Bootstrap's default Popper configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Popper.</p> - </td> - </tr> - </tbody> -</table> - -{{< callout info >}} -#### Data attributes for individual popovers - -Options for individual popovers can alternatively be specified through the use of data attributes, as explained above. -{{< /callout >}} - -#### Using function with `popperConfig` - -```js -var popover = new bootstrap.Popover(element, { - popperConfig: function (defaultBsPopperConfig) { - // var newPopperConfig = {...} - // use defaultBsPopperConfig if needed... - // return newPopperConfig - } -}) -``` - -### Methods - -{{< callout danger >}} -{{< partial "callout-danger-async-methods.md" >}} -{{< /callout >}} - - -#### show - -Reveals an element's popover. **Returns to the caller before the popover has actually been shown** (i.e. before the `shown.bs.popover` event occurs). This is considered a "manual" triggering of the popover. Popovers whose title and content are both zero-length are never displayed. - -```js -myPopover.show() -``` - -#### hide - -Hides an element's popover. **Returns to the caller before the popover has actually been hidden** (i.e. before the `hidden.bs.popover` event occurs). This is considered a "manual" triggering of the popover. - -```js -myPopover.hide() -``` - -#### toggle - -Toggles an element's popover. **Returns to the caller before the popover has actually been shown or hidden** (i.e. before the `shown.bs.popover` or `hidden.bs.popover` event occurs). This is considered a "manual" triggering of the popover. - -```js -myPopover.toggle() -``` - -#### dispose - -Hides and destroys an element's popover (Removes stored data on the DOM element). Popovers that use delegation (which are created using [the `selector` option](#options)) cannot be individually destroyed on descendant trigger elements. - -```js -myPopover.dispose() -``` - -#### enable - -Gives an element's popover the ability to be shown. **Popovers are enabled by default.** - -```js -myPopover.enable() -``` - -#### disable - -Removes the ability for an element's popover to be shown. The popover will only be able to be shown if it is re-enabled. - -```js -myPopover.disable() -``` - -#### toggleEnabled - -Toggles the ability for an element's popover to be shown or hidden. - -```js -myPopover.toggleEnabled() -``` - -#### update - -Updates the position of an element's popover. - -```js -myPopover.update() -``` - -#### getInstance - -*Static* method which allows you to get the popover instance associated with a DOM element - -```js -var exampleTriggerEl = document.getElementById('example') -var popover = bootstrap.Popover.getInstance(exampleTriggerEl) // Returns a Bootstrap popover instance -``` - -#### getOrCreateInstance - -*Static* method which allows you to get the popover instance associated with a DOM element, or create a new one in case it wasn't initialized - -```js -var exampleTriggerEl = document.getElementById('example') -var popover = bootstrap.Popover.getOrCreateInstance(exampleTriggerEl) // Returns a Bootstrap popover instance -``` - -### Events - -<table class="table"> - <thead> - <tr> - <th style="width: 150px;">Event type</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td>show.bs.popover</td> - <td>This event fires immediately when the <code>show</code> instance method is called.</td> - </tr> - <tr> - <td>shown.bs.popover</td> - <td>This event is fired when the popover has been made visible to the user (will wait for CSS transitions to complete).</td> - </tr> - <tr> - <td>hide.bs.popover</td> - <td>This event is fired immediately when the <code>hide</code> instance method has been called.</td> - </tr> - <tr> - <td>hidden.bs.popover</td> - <td>This event is fired when the popover has finished being hidden from the user (will wait for CSS transitions to complete).</td> - </tr> - <tr> - <td>inserted.bs.popover</td> - <td>This event is fired after the <code>show.bs.popover</code> event when the popover template has been added to the DOM.</td> - </tr> - </tbody> -</table> - -```js -var myPopoverTrigger = document.getElementById('myPopover') -myPopoverTrigger.addEventListener('hidden.bs.popover', function () { - // do something... -}) -``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/progress.md b/vendor/twbs/bootstrap/site/content/docs/5.1/components/progress.md deleted file mode 100644 index fccd546c6..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/progress.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -layout: docs -title: Progress -description: Documentation and examples for using Bootstrap custom progress bars featuring support for stacked bars, animated backgrounds, and text labels. -group: components -toc: true ---- - -## How it works - -Progress components are built with two HTML elements, some CSS to set the width, and a few attributes. We don't use [the HTML5 `<progress>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress), ensuring you can stack progress bars, animate them, and place text labels over them. - -- We use the `.progress` as a wrapper to indicate the max value of the progress bar. -- We use the inner `.progress-bar` to indicate the progress so far. -- The `.progress-bar` requires an inline style, utility class, or custom CSS to set their width. -- The `.progress-bar` also requires some `role` and `aria` attributes to make it accessible. - -Put that all together, and you have the following examples. - -{{< example >}} -<div class="progress"> - <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div> -</div> -<div class="progress"> - <div class="progress-bar" role="progressbar" style="width: 25%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div> -</div> -<div class="progress"> - <div class="progress-bar" role="progressbar" style="width: 50%" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div> -</div> -<div class="progress"> - <div class="progress-bar" role="progressbar" style="width: 75%" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"></div> -</div> -<div class="progress"> - <div class="progress-bar" role="progressbar" style="width: 100%" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div> -</div> -{{< /example >}} - -Bootstrap provides a handful of [utilities for setting width]({{< docsref "/utilities/sizing" >}}). Depending on your needs, these may help with quickly configuring progress. - -{{< example >}} -<div class="progress"> - <div class="progress-bar w-75" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"></div> -</div> -{{< /example >}} - -## Labels - -Add labels to your progress bars by placing text within the `.progress-bar`. - -{{< example >}} -<div class="progress"> - <div class="progress-bar" role="progressbar" style="width: 25%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">25%</div> -</div> -{{< /example >}} - -## Height - -We only set a `height` value on the `.progress`, so if you change that value the inner `.progress-bar` will automatically resize accordingly. - -{{< example >}} -<div class="progress" style="height: 1px;"> - <div class="progress-bar" role="progressbar" style="width: 25%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div> -</div> -<div class="progress" style="height: 20px;"> - <div class="progress-bar" role="progressbar" style="width: 25%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div> -</div> -{{< /example >}} - -## Backgrounds - -Use background utility classes to change the appearance of individual progress bars. - -{{< example >}} -<div class="progress"> - <div class="progress-bar bg-success" role="progressbar" style="width: 25%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div> -</div> -<div class="progress"> - <div class="progress-bar bg-info" role="progressbar" style="width: 50%" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div> -</div> -<div class="progress"> - <div class="progress-bar bg-warning" role="progressbar" style="width: 75%" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"></div> -</div> -<div class="progress"> - <div class="progress-bar bg-danger" role="progressbar" style="width: 100%" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div> -</div> -{{< /example >}} - -## Multiple bars - -Include multiple progress bars in a progress component if you need. - -{{< example >}} -<div class="progress"> - <div class="progress-bar" role="progressbar" style="width: 15%" aria-valuenow="15" aria-valuemin="0" aria-valuemax="100"></div> - <div class="progress-bar bg-success" role="progressbar" style="width: 30%" aria-valuenow="30" aria-valuemin="0" aria-valuemax="100"></div> - <div class="progress-bar bg-info" role="progressbar" style="width: 20%" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100"></div> -</div> -{{< /example >}} - -## Striped - -Add `.progress-bar-striped` to any `.progress-bar` to apply a stripe via CSS gradient over the progress bar's background color. - -{{< example >}} -<div class="progress"> - <div class="progress-bar progress-bar-striped" role="progressbar" style="width: 10%" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100"></div> -</div> -<div class="progress"> - <div class="progress-bar progress-bar-striped bg-success" role="progressbar" style="width: 25%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div> -</div> -<div class="progress"> - <div class="progress-bar progress-bar-striped bg-info" role="progressbar" style="width: 50%" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div> -</div> -<div class="progress"> - <div class="progress-bar progress-bar-striped bg-warning" role="progressbar" style="width: 75%" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"></div> -</div> -<div class="progress"> - <div class="progress-bar progress-bar-striped bg-danger" role="progressbar" style="width: 100%" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div> -</div> -{{< /example >}} - -## Animated stripes - -The striped gradient can also be animated. Add `.progress-bar-animated` to `.progress-bar` to animate the stripes right to left via CSS3 animations. - -{{< example >}} -<div class="progress"> - <div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" style="width: 75%"></div> -</div> -{{< /example >}} - -## Sass - -### Variables - -{{< scss-docs name="progress-variables" file="scss/_variables.scss" >}} - -### Keyframes - -Used for creating the CSS animations for `.progress-bar-animated`. Included in `scss/_progress-bar.scss`. - -{{< scss-docs name="progress-keyframes" file="scss/_progress.scss" >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/scrollspy.md b/vendor/twbs/bootstrap/site/content/docs/5.1/components/scrollspy.md deleted file mode 100644 index bcd9fb78a..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/scrollspy.md +++ /dev/null @@ -1,367 +0,0 @@ ---- -layout: docs -title: Scrollspy -description: Automatically update Bootstrap navigation or list group components based on scroll position to indicate which link is currently active in the viewport. -group: components -toc: true ---- - -## How it works - -Scrollspy has a few requirements to function properly: - -- It must be used on a Bootstrap [nav component]({{< docsref "/components/navs-tabs" >}}) or [list group]({{< docsref "/components/list-group" >}}). -- Scrollspy requires `position: relative;` on the element you're spying on, usually the `<body>`. -- Anchors (`<a>`) are required and must point to an element with that `id`. - -When successfully implemented, your nav or list group will update accordingly, moving the `.active` class from one item to the next based on their associated targets. - -{{< callout >}} -### Scrollable containers and keyboard access - -If you're making a scrollable container (other than the `<body>`), be sure to have a `height` set and `overflow-y: scroll;` applied to it—alongside a `tabindex="0"` to ensure keyboard access. -{{< /callout >}} - -## Example in navbar - -Scroll the area below the navbar and watch the active class change. The dropdown items will be highlighted as well. - -<div class="bd-example"> - <nav id="navbar-example2" class="navbar navbar-light bg-light px-3"> - <a class="navbar-brand" href="#">Navbar</a> - <ul class="nav nav-pills"> - <li class="nav-item"> - <a class="nav-link" href="#scrollspyHeading1">First</a> - </li> - <li class="nav-item"> - <a class="nav-link" href="#scrollspyHeading2">Second</a> - </li> - <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a> - <ul class="dropdown-menu"> - <li><a class="dropdown-item" href="#scrollspyHeading3">Third</a></li> - <li><a class="dropdown-item" href="#scrollspyHeading4">Fourth</a></li> - <li><hr class="dropdown-divider"></li> - <li><a class="dropdown-item" href="#scrollspyHeading5">Fifth</a></li> - </ul> - </li> - </ul> - </nav> - <div data-bs-spy="scroll" data-bs-target="#navbar-example2" data-bs-offset="0" class="scrollspy-example" tabindex="0"> - <h4 id="scrollspyHeading1">First heading</h4> - <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> - <h4 id="scrollspyHeading2">Second heading</h4> - <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> - <h4 id="scrollspyHeading3">Third heading</h4> - <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> - <h4 id="scrollspyHeading4">Fourth heading</h4> - <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> - <h4 id="scrollspyHeading5">Fifth heading</h4> - <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> - </div> -</div> - -```html -<nav id="navbar-example2" class="navbar navbar-light bg-light px-3"> - <a class="navbar-brand" href="#">Navbar</a> - <ul class="nav nav-pills"> - <li class="nav-item"> - <a class="nav-link" href="#scrollspyHeading1">First</a> - </li> - <li class="nav-item"> - <a class="nav-link" href="#scrollspyHeading2">Second</a> - </li> - <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a> - <ul class="dropdown-menu"> - <li><a class="dropdown-item" href="#scrollspyHeading3">Third</a></li> - <li><a class="dropdown-item" href="#scrollspyHeading4">Fourth</a></li> - <li><hr class="dropdown-divider"></li> - <li><a class="dropdown-item" href="#scrollspyHeading5">Fifth</a></li> - </ul> - </li> - </ul> -</nav> -<div data-bs-spy="scroll" data-bs-target="#navbar-example2" data-bs-offset="0" class="scrollspy-example" tabindex="0"> - <h4 id="scrollspyHeading1">First heading</h4> - <p>...</p> - <h4 id="scrollspyHeading2">Second heading</h4> - <p>...</p> - <h4 id="scrollspyHeading3">Third heading</h4> - <p>...</p> - <h4 id="scrollspyHeading4">Fourth heading</h4> - <p>...</p> - <h4 id="scrollspyHeading5">Fifth heading</h4> - <p>...</p> -</div> -``` - -## Example with nested nav - -Scrollspy also works with nested `.nav`s. If a nested `.nav` is `.active`, its parents will also be `.active`. Scroll the area next to the navbar and watch the active class change. - -<div class="bd-example"> - <div class="row"> - <div class="col-4"> - <nav id="navbar-example3" class="navbar navbar-light bg-light flex-column align-items-stretch p-3"> - <a class="navbar-brand" href="#">Navbar</a> - <nav class="nav nav-pills flex-column"> - <a class="nav-link" href="#item-1">Item 1</a> - <nav class="nav nav-pills flex-column"> - <a class="nav-link ms-3 my-1" href="#item-1-1">Item 1-1</a> - <a class="nav-link ms-3 my-1" href="#item-1-2">Item 1-2</a> - </nav> - <a class="nav-link" href="#item-2">Item 2</a> - <a class="nav-link" href="#item-3">Item 3</a> - <nav class="nav nav-pills flex-column"> - <a class="nav-link ms-3 my-1" href="#item-3-1">Item 3-1</a> - <a class="nav-link ms-3 my-1" href="#item-3-2">Item 3-2</a> - </nav> - </nav> - </nav> - </div> - <div class="col-8"> - <div data-bs-spy="scroll" data-bs-target="#navbar-example3" data-bs-offset="0" class="scrollspy-example-2" tabindex="0"> - <h4 id="item-1">Item 1</h4> - <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> - <h5 id="item-1-1">Item 1-1</h5> - <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> - <h5 id="item-1-2">Item 1-2</h5> - <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> - <h4 id="item-2">Item 2</h4> - <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> - <h4 id="item-3">Item 3</h4> - <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> - <h5 id="item-3-1">Item 3-1</h5> - <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> - <h5 id="item-3-2">Item 3-2</h5> - <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> - </div> - </div> - </div> -</div> - -```html -<nav id="navbar-example3" class="navbar navbar-light bg-light flex-column align-items-stretch p-3"> - <a class="navbar-brand" href="#">Navbar</a> - <nav class="nav nav-pills flex-column"> - <a class="nav-link" href="#item-1">Item 1</a> - <nav class="nav nav-pills flex-column"> - <a class="nav-link ms-3 my-1" href="#item-1-1">Item 1-1</a> - <a class="nav-link ms-3 my-1" href="#item-1-2">Item 1-2</a> - </nav> - <a class="nav-link" href="#item-2">Item 2</a> - <a class="nav-link" href="#item-3">Item 3</a> - <nav class="nav nav-pills flex-column"> - <a class="nav-link ms-3 my-1" href="#item-3-1">Item 3-1</a> - <a class="nav-link ms-3 my-1" href="#item-3-2">Item 3-2</a> - </nav> - </nav> -</nav> - -<div data-bs-spy="scroll" data-bs-target="#navbar-example3" data-bs-offset="0" tabindex="0"> - <h4 id="item-1">Item 1</h4> - <p>...</p> - <h5 id="item-1-1">Item 1-1</h5> - <p>...</p> - <h5 id="item-1-2">Item 1-2</h5> - <p>...</p> - <h4 id="item-2">Item 2</h4> - <p>...</p> - <h4 id="item-3">Item 3</h4> - <p>...</p> - <h5 id="item-3-1">Item 3-1</h5> - <p>...</p> - <h5 id="item-3-2">Item 3-2</h5> - <p>...</p> -</div> -``` - -## Example with list-group - -Scrollspy also works with `.list-group`s. Scroll the area next to the list group and watch the active class change. - -<div class="bd-example"> - <div class="row"> - <div class="col-4"> - <div id="list-example" class="list-group"> - <a class="list-group-item list-group-item-action" href="#list-item-1">Item 1</a> - <a class="list-group-item list-group-item-action" href="#list-item-2">Item 2</a> - <a class="list-group-item list-group-item-action" href="#list-item-3">Item 3</a> - <a class="list-group-item list-group-item-action" href="#list-item-4">Item 4</a> - </div> - </div> - <div class="col-8"> - <div data-bs-spy="scroll" data-bs-target="#list-example" data-bs-offset="0" class="scrollspy-example" tabindex="0"> - <h4 id="list-item-1">Item 1</h4> - <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> - <h4 id="list-item-2">Item 2</h4> - <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> - <h4 id="list-item-3">Item 3</h4> - <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> - <h4 id="list-item-4">Item 4</h4> - <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> - </div> - </div> - </div> -</div> - -```html -<div id="list-example" class="list-group"> - <a class="list-group-item list-group-item-action" href="#list-item-1">Item 1</a> - <a class="list-group-item list-group-item-action" href="#list-item-2">Item 2</a> - <a class="list-group-item list-group-item-action" href="#list-item-3">Item 3</a> - <a class="list-group-item list-group-item-action" href="#list-item-4">Item 4</a> -</div> -<div data-bs-spy="scroll" data-bs-target="#list-example" data-bs-offset="0" class="scrollspy-example" tabindex="0"> - <h4 id="list-item-1">Item 1</h4> - <p>...</p> - <h4 id="list-item-2">Item 2</h4> - <p>...</p> - <h4 id="list-item-3">Item 3</h4> - <p>...</p> - <h4 id="list-item-4">Item 4</h4> - <p>...</p> -</div> -``` - -## Usage - -### Via data attributes - -To easily add scrollspy behavior to your topbar navigation, add `data-bs-spy="scroll"` to the element you want to spy on (most typically this would be the `<body>`). Then add the `data-bs-target` attribute with the ID or class of the parent element of any Bootstrap `.nav` component. - -```css -body { - position: relative; -} -``` - -```html -<body data-bs-spy="scroll" data-bs-target="#navbar-example"> - ... - <div id="navbar-example"> - <ul class="nav nav-tabs" role="tablist"> - ... - </ul> - </div> - ... -</body> -``` - -### Via JavaScript - -After adding `position: relative;` in your CSS, call the scrollspy via JavaScript: - -```js -var scrollSpy = new bootstrap.ScrollSpy(document.body, { - target: '#navbar-example' -}) -``` - -{{< callout danger >}} -#### Resolvable ID targets required - -Navbar links must have resolvable id targets. For example, a `<a href="#home">home</a>` must correspond to something in the DOM like `<div id="home"></div>`. -{{< /callout >}} - -{{< callout info >}} -#### Non-visible target elements ignored - -Target elements that are not visible will be ignored and their corresponding nav items will never be highlighted. -{{< /callout >}} - -### Methods - -#### refresh - -When using scrollspy in conjunction with adding or removing of elements from the DOM, you'll need to call the refresh method like so: - -```js -var dataSpyList = [].slice.call(document.querySelectorAll('[data-bs-spy="scroll"]')) -dataSpyList.forEach(function (dataSpyEl) { - bootstrap.ScrollSpy.getInstance(dataSpyEl) - .refresh() -}) -``` - -#### dispose - -Destroys an element's scrollspy. (Removes stored data on the DOM element) - -#### getInstance - -*Static* method which allows you to get the scrollspy instance associated with a DOM element - -```js -var scrollSpyContentEl = document.getElementById('content') -var scrollSpy = bootstrap.ScrollSpy.getInstance(scrollSpyContentEl) // Returns a Bootstrap scrollspy instance -``` - -#### getOrCreateInstance - -*Static* method which allows you to get the scrollspy instance associated with a DOM element, or create a new one in case it wasn't initialized - -```js -var scrollSpyContentEl = document.getElementById('content') -var scrollSpy = bootstrap.ScrollSpy.getOrCreateInstance(scrollSpyContentEl) // Returns a Bootstrap scrollspy instance -``` - -### Options - -Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-bs-`, as in `data-bs-offset=""`. - -<table class="table"> - <thead> - <tr> - <th style="width: 100px;">Name</th> - <th style="width: 100px;">Type</th> - <th style="width: 50px;">Default</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>offset</code></td> - <td>number</td> - <td><code>10</code></td> - <td>Pixels to offset from top when calculating position of scroll.</td> - </tr> - <tr> - <td><code>method</code></td> - <td>string</td> - <td><code>auto</code></td> - <td>Finds which section the spied element is in. <code>auto</code> will choose the best method to get scroll coordinates. <code>offset</code> will use the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect"><code>Element.getBoundingClientRect()</code></a> method to get scroll coordinates. <code>position</code> will use the <a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop"><code>HTMLElement.offsetTop</code></a> and <a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetLeft"><code>HTMLElement.offsetLeft</code></a> properties to get scroll coordinates.</td> - </tr> - <tr> - <td><code>target</code></td> - <td>string | jQuery object | DOM element</td> - <td></td> - <td>Specifies element to apply Scrollspy plugin.</td> - </tr> - </tbody> -</table> - -### Events - -<table class="table"> - <thead> - <tr> - <th style="width: 150px;">Event type</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>activate.bs.scrollspy</code></td> - <td>This event fires on the scroll element whenever a new item becomes activated by the scrollspy.</td> - </tr> - </tbody> -</table> - -```js -var firstScrollSpyEl = document.querySelector('[data-bs-spy="scroll"]') -firstScrollSpyEl.addEventListener('activate.bs.scrollspy', function () { - // do something... -}) -``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/tooltips.md b/vendor/twbs/bootstrap/site/content/docs/5.1/components/tooltips.md deleted file mode 100644 index 58da2076b..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/tooltips.md +++ /dev/null @@ -1,471 +0,0 @@ ---- -layout: docs -title: Tooltips -description: Documentation and examples for adding custom Bootstrap tooltips with CSS and JavaScript using CSS3 for animations and data-bs-attributes for local title storage. -group: components -toc: true ---- - -## Overview - -Things to know when using the tooltip plugin: - -- Tooltips rely on the 3rd party library [Popper](https://popper.js.org/) for positioning. You must include [popper.min.js]({{< param "cdn.popper" >}}) before bootstrap.js or use `bootstrap.bundle.min.js` / `bootstrap.bundle.js` which contains Popper in order for tooltips to work! -- Tooltips are opt-in for performance reasons, so **you must initialize them yourself**. -- Tooltips with zero-length titles are never displayed. -- Specify `container: 'body'` to avoid rendering problems in more complex components (like our input groups, button groups, etc). -- Triggering tooltips on hidden elements will not work. -- Tooltips for `.disabled` or `disabled` elements must be triggered on a wrapper element. -- When triggered from hyperlinks that span multiple lines, tooltips will be centered. Use `white-space: nowrap;` on your `<a>`s to avoid this behavior. -- Tooltips must be hidden before their corresponding elements have been removed from the DOM. -- Tooltips can be triggered thanks to an element inside a shadow DOM. - -{{< callout info >}} -{{< partial "callout-info-sanitizer.md" >}} -{{< /callout >}} - -{{< callout info >}} -{{< partial "callout-info-prefersreducedmotion.md" >}} -{{< /callout >}} - -Got all that? Great, let's see how they work with some examples. - -## Example: Enable tooltips everywhere - -One way to initialize all tooltips on a page would be to select them by their `data-bs-toggle` attribute: - -```js -var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')) -var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) { - return new bootstrap.Tooltip(tooltipTriggerEl) -}) -``` - -## Examples - -Hover over the links below to see tooltips: - -<div class="bd-example tooltip-demo"> - <p class="muted">Placeholder text to demonstrate some <a href="#" data-bs-toggle="tooltip" title="Default tooltip">inline links</a> with tooltips. This is now just filler, no killer. Content placed here just to mimic the presence of <a href="#" data-bs-toggle="tooltip" title="Another tooltip">real text</a>. And all that just to give you an idea of how tooltips would look when used in real-world situations. So hopefully you've now seen how <a href="#" data-bs-toggle="tooltip" title="Another one here too">these tooltips on links</a> can work in practice, once you use them on <a href="#" data-bs-toggle="tooltip" title="The last tip!">your own</a> site or project. - </p> -</div> - -Hover over the buttons below to see the four tooltips directions: top, right, bottom, and left. Directions are mirrored when using Bootstrap in RTL. - -<div class="bd-example tooltip-demo"> - <div class="bd-example-tooltips"> - <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="Tooltip on top">Tooltip on top</button> - <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" title="Tooltip on right">Tooltip on right</button> - <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Tooltip on bottom">Tooltip on bottom</button> - <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" title="Tooltip on left">Tooltip on left</button> - <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-html="true" title="<em>Tooltip</em> <u>with</u> <b>HTML</b>">Tooltip with HTML</button> - </div> -</div> - -```html -<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="Tooltip on top"> - Tooltip on top -</button> -<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" title="Tooltip on right"> - Tooltip on right -</button> -<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Tooltip on bottom"> - Tooltip on bottom -</button> -<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" title="Tooltip on left"> - Tooltip on left -</button> -``` - -And with custom HTML added: - -```html -<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-html="true" title="<em>Tooltip</em> <u>with</u> <b>HTML</b>"> - Tooltip with HTML -</button> -``` - -With an SVG: - -<div class="bd-example tooltip-demo"> - <a href="#" class="d-inline-block" data-bs-toggle="tooltip" title="Default tooltip"> - <svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 100 100"> - <rect width="100%" height="100%" fill="#563d7c"/> - <circle cx="50" cy="50" r="30" fill="#007bff"/> - </svg> - </a> -</div> - -## Sass - -### Variables - -{{< scss-docs name="tooltip-variables" file="scss/_variables.scss" >}} - -## Usage - -The tooltip plugin generates content and markup on demand, and by default places tooltips after their trigger element. - -Trigger the tooltip via JavaScript: - -```js -var exampleEl = document.getElementById('example') -var tooltip = new bootstrap.Tooltip(exampleEl, options) -``` - -{{< callout warning >}} -##### Overflow `auto` and `scroll` - -Tooltip position attempts to automatically change when a **parent container** has `overflow: auto` or `overflow: scroll` like our `.table-responsive`, but still keeps the original placement's positioning. To resolve this, set the [`boundary` option](https://popper.js.org/docs/v2/modifiers/flip/#boundary) (for the flip modifier using the `popperConfig` option) to any HTMLElement to override the default value, `'clippingParents'`, such as `document.body`: - -```js -var exampleEl = document.getElementById('example') -var tooltip = new bootstrap.Tooltip(exampleEl, { - boundary: document.body // or document.querySelector('#boundary') -}) -``` -{{< /callout >}} - -### Markup - -The required markup for a tooltip is only a `data` attribute and `title` on the HTML element you wish to have a tooltip. The generated markup of a tooltip is rather simple, though it does require a position (by default, set to `top` by the plugin). - -{{< callout warning >}} -##### Making tooltips work for keyboard and assistive technology users - -You should only add tooltips to HTML elements that are traditionally keyboard-focusable and interactive (such as links or form controls). Although arbitrary HTML elements (such as `<span>`s) can be made focusable by adding the `tabindex="0"` attribute, this will add potentially annoying and confusing tab stops on non-interactive elements for keyboard users, and most assistive technologies currently do not announce the tooltip in this situation. Additionally, do not rely solely on `hover` as the trigger for your tooltip, as this will make your tooltips impossible to trigger for keyboard users. -{{< /callout >}} - -```html -<!-- HTML to write --> -<a href="#" data-bs-toggle="tooltip" title="Some tooltip text!">Hover over me</a> - -<!-- Generated markup by the plugin --> -<div class="tooltip bs-tooltip-top" role="tooltip"> - <div class="tooltip-arrow"></div> - <div class="tooltip-inner"> - Some tooltip text! - </div> -</div> -``` - -### Disabled elements - -Elements with the `disabled` attribute aren't interactive, meaning users cannot focus, hover, or click them to trigger a tooltip (or popover). As a workaround, you'll want to trigger the tooltip from a wrapper `<div>` or `<span>`, ideally made keyboard-focusable using `tabindex="0"`. - -<div class="tooltip-demo"> -{{< example >}} -<span class="d-inline-block" tabindex="0" data-bs-toggle="tooltip" title="Disabled tooltip"> - <button class="btn btn-primary" type="button" disabled>Disabled button</button> -</span> -{{< /example >}} -</div> - -### Options - -Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-bs-`, as in `data-bs-animation=""`. Make sure to change the case type of the option name from camelCase to kebab-case when passing the options via data attributes. For example, instead of using `data-bs-customClass="beautifier"`, use `data-bs-custom-class="beautifier"`. - -{{< callout warning >}} -Note that for security reasons the `sanitize`, `sanitizeFn`, and `allowList` options cannot be supplied using data attributes. -{{< /callout >}} - -<table class="table"> - <thead> - <tr> - <th style="width: 100px;">Name</th> - <th style="width: 100px;">Type</th> - <th style="width: 50px;">Default</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>animation</code></td> - <td>boolean</td> - <td><code>true</code></td> - <td>Apply a CSS fade transition to the tooltip</td> - </tr> - <tr> - <td><code>container</code></td> - <td>string | element | false</td> - <td><code>false</code></td> - <td> - <p>Appends the tooltip to a specific element. Example: <code>container: 'body'</code>. This option is particularly useful in that it allows you to position the tooltip in the flow of the document near the triggering element - which will prevent the tooltip from floating away from the triggering element during a window resize.</p> - </td> - </tr> - <tr> - <td><code>delay</code></td> - <td>number | object</td> - <td><code>0</code></td> - <td> - <p>Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type</p> - <p>If a number is supplied, delay is applied to both hide/show</p> - <p>Object structure is: <code>delay: { "show": 500, "hide": 100 }</code></p> - </td> - </tr> - <tr> - <td><code>html</code></td> - <td>boolean</td> - <td><code>false</code></td> - <td> - <p>Allow HTML in the tooltip.</p> - <p>If true, HTML tags in the tooltip's <code>title</code> will be rendered in the tooltip. If false, <code>innerText</code> property will be used to insert content into the DOM.</p> - <p>Use text if you're worried about XSS attacks.</p> - </td> - </tr> - <tr> - <td><code>placement</code></td> - <td>string | function</td> - <td><code>'top'</code></td> - <td> - <p>How to position the tooltip - auto | top | bottom | left | right.<br>When <code>auto</code> is specified, it will dynamically reorient the tooltip.</p> - <p>When a function is used to determine the placement, it is called with the tooltip DOM node as its first argument and the triggering element DOM node as its second. The <code>this</code> context is set to the tooltip instance.</p> - </td> - </tr> - <tr> - <td><code>selector</code></td> - <td>string | false</td> - <td><code>false</code></td> - <td>If a selector is provided, tooltip objects will be delegated to the specified targets. In practice, this is used to also apply tooltips to dynamically added DOM elements (<code>jQuery.on</code> support). See <a href="{{< param repo >}}/issues/4215">this</a> and <a href="https://codepen.io/team/bootstrap/pen/zYBXGwX?editors=1010">an informative example</a>.</td> - </tr> - <tr> - <td><code>template</code></td> - <td>string</td> - <td><code>'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'</code></td> - <td> - <p>Base HTML to use when creating the tooltip.</p> - <p>The tooltip's <code>title</code> will be injected into the <code>.tooltip-inner</code>.</p> - <p><code>.tooltip-arrow</code> will become the tooltip's arrow.</p> - <p>The outermost wrapper element should have the <code>.tooltip</code> class and <code>role="tooltip"</code>.</p> - </td> - </tr> - <tr> - <td><code>title</code></td> - <td>string | element | function</td> - <td><code>''</code></td> - <td> - <p>Default title value if <code>title</code> attribute isn't present.</p> - <p>If a function is given, it will be called with its <code>this</code> reference set to the element that the tooltip is attached to.</p> - </td> - </tr> - <tr> - <td><code>trigger</code></td> - <td>string</td> - <td><code>'hover focus'</code></td> - <td> - <p>How tooltip is triggered - click | hover | focus | manual. You may pass multiple triggers; separate them with a space.</p> - <p><code>'manual'</code> indicates that the tooltip will be triggered programmatically via the <code>.show()</code>, <code>.hide()</code> and <code>.toggle()</code> methods; this value cannot be combined with any other trigger.</p> - <p><code>'hover'</code> on its own will result in tooltips that cannot be triggered via the keyboard, and should only be used if alternative methods for conveying the same information for keyboard users is present.</p> - </td> - </tr> - <tr> - <td><code>fallbackPlacements</code></td> - <td>array</td> - <td><code>['top', 'right', 'bottom', 'left']</code></td> - <td>Define fallback placements by providing a list of placements in array (in order of preference). For more information refer to - Popper's <a href="https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements">behavior docs</a></td> - </tr> - <tr> - <td><code>boundary</code></td> - <td>string | element</td> - <td><code>'clippingParents'</code></td> - <td>Overflow constraint boundary of the tooltip (applies only to Popper's preventOverflow modifier). By default it's <code>'clippingParents'</code> and can accept an HTMLElement reference (via JavaScript only). For more information refer to Popper's <a href="https://popper.js.org/docs/v2/utils/detect-overflow/#boundary">detectOverflow docs</a>.</td> - </tr> - <tr> - <td><code>customClass</code></td> - <td>string | function</td> - <td><code>''</code></td> - <td> - <p>Add classes to the tooltip when it is shown. Note that these classes will be added in addition to any classes specified in the template. To add multiple classes, separate them with spaces: <code>'class-1 class-2'</code>.</p> - <p>You can also pass a function that should return a single string containing additional class names.</p> - </td> - </tr> - <tr> - <td><code>sanitize</code></td> - <td>boolean</td> - <td><code>true</code></td> - <td>Enable or disable the sanitization. If activated <code>'template'</code> and <code>'title'</code> options will be sanitized. See the <a href="{{< docsref "/getting-started/javascript#sanitizer" >}}">sanitizer section in our JavaScript documentation</a>.</td> - </tr> - <tr> - <td><code>allowList</code></td> - <td>object</td> - <td><a href="{{< docsref "/getting-started/javascript#sanitizer" >}}">Default value</a></td> - <td>Object which contains allowed attributes and tags</td> - </tr> - <tr> - <td><code>sanitizeFn</code></td> - <td>null | function</td> - <td><code>null</code></td> - <td>Here you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization.</td> - </tr> - <tr> - <td><code>offset</code></td> - <td>array | string | function</td> - <td><code>[0, 0]</code></td> - <td> - <p>Offset of the tooltip relative to its target. You can pass a string in data attributes with comma separated values like: <code>data-bs-offset="10,20"</code></p> - <p>When a function is used to determine the offset, it is called with an object containing the popper placement, the reference, and popper rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: <code>[<a href="https://popper.js.org/docs/v2/modifiers/offset/#skidding-1">skidding</a>, <a href="https://popper.js.org/docs/v2/modifiers/offset/#distance-1">distance</a>]</code>.</p> - <p>For more information refer to Popper's <a href="https://popper.js.org/docs/v2/modifiers/offset/#options">offset docs</a>.</p> - </td> - </tr> - <tr> - <td><code>popperConfig</code></td> - <td>null | object | function</td> - <td><code>null</code></td> - <td> - <p>To change Bootstrap's default Popper config, see <a href="https://popper.js.org/docs/v2/constructors/#options">Popper's configuration</a>.</p> - <p>When a function is used to create the Popper configuration, it's called with an object that contains the Bootstrap's default Popper configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Popper.</p> - </td> - </tr> - </tbody> -</table> - -{{< callout info >}} -#### Data attributes for individual tooltips - -Options for individual tooltips can alternatively be specified through the use of data attributes, as explained above. -{{< /callout >}} - -#### Using function with `popperConfig` - -```js -var tooltip = new bootstrap.Tooltip(element, { - popperConfig: function (defaultBsPopperConfig) { - // var newPopperConfig = {...} - // use defaultBsPopperConfig if needed... - // return newPopperConfig - } -}) -``` - -### Methods - -{{< callout danger >}} -{{< partial "callout-danger-async-methods.md" >}} -{{< /callout >}} - -#### show - -Reveals an element's tooltip. **Returns to the caller before the tooltip has actually been shown** (i.e. before the `shown.bs.tooltip` event occurs). This is considered a "manual" triggering of the tooltip. Tooltips with zero-length titles are never displayed. - -```js -tooltip.show() -``` - -#### hide - -Hides an element's tooltip. **Returns to the caller before the tooltip has actually been hidden** (i.e. before the `hidden.bs.tooltip` event occurs). This is considered a "manual" triggering of the tooltip. - -```js -tooltip.hide() -``` - -#### toggle - -Toggles an element's tooltip. **Returns to the caller before the tooltip has actually been shown or hidden** (i.e. before the `shown.bs.tooltip` or `hidden.bs.tooltip` event occurs). This is considered a "manual" triggering of the tooltip. - -```js -tooltip.toggle() -``` - -#### dispose - -Hides and destroys an element's tooltip (Removes stored data on the DOM element). Tooltips that use delegation (which are created using [the `selector` option](#options)) cannot be individually destroyed on descendant trigger elements. - -```js -tooltip.dispose() -``` - -#### enable - -Gives an element's tooltip the ability to be shown. **Tooltips are enabled by default.** - -```js -tooltip.enable() -``` - -#### disable - -Removes the ability for an element's tooltip to be shown. The tooltip will only be able to be shown if it is re-enabled. - -```js -tooltip.disable() -``` - -#### toggleEnabled - -Toggles the ability for an element's tooltip to be shown or hidden. - -```js -tooltip.toggleEnabled() -``` - -#### update - -Updates the position of an element's tooltip. - -```js -tooltip.update() -``` - -#### getInstance - -*Static* method which allows you to get the tooltip instance associated with a DOM element - -```js -var exampleTriggerEl = document.getElementById('example') -var tooltip = bootstrap.Tooltip.getInstance(exampleTriggerEl) // Returns a Bootstrap tooltip instance -``` - -#### getOrCreateInstance - -*Static* method which allows you to get the tooltip instance associated with a DOM element, or create a new one in case it wasn't initialized - -```js -var exampleTriggerEl = document.getElementById('example') -var tooltip = bootstrap.Tooltip.getOrCreateInstance(exampleTriggerEl) // Returns a Bootstrap tooltip instance -``` - -### Events - -<table class="table"> - <thead> - <tr> - <th style="width: 150px;">Event type</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>show.bs.tooltip</code></td> - <td>This event fires immediately when the <code>show</code> instance method is called.</td> - </tr> - <tr> - <td><code>shown.bs.tooltip</code></td> - <td>This event is fired when the tooltip has been made visible to the user (will wait for CSS transitions to complete).</td> - </tr> - <tr> - <td><code>hide.bs.tooltip</code></td> - <td>This event is fired immediately when the <code>hide</code> instance method has been called.</td> - </tr> - <tr> - <td><code>hidden.bs.tooltip</code></td> - <td>This event is fired when the tooltip has finished being hidden from the user (will wait for CSS transitions to complete).</td> - </tr> - <tr> - <td><code>inserted.bs.tooltip</code></td> - <td>This event is fired after the <code>show.bs.tooltip</code> event when the tooltip template has been added to the DOM.</td> - </tr> - </tbody> -</table> - -```js -var myTooltipEl = document.getElementById('myTooltip') -var tooltip = new bootstrap.Tooltip(myTooltipEl) - -myTooltipEl.addEventListener('hidden.bs.tooltip', function () { - // do something... -}) - -tooltip.hide() -``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/_index.md b/vendor/twbs/bootstrap/site/content/docs/5.1/examples/_index.md deleted file mode 100644 index 3d5bfab2f..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/_index.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: single -title: Examples -description: Quickly get a project started with any of our examples ranging from using parts of the framework to custom components and layouts. -aliases: "/examples/" ---- - -{{< list-examples.inline >}} -{{ range $entry := $.Site.Data.examples -}} - <h2 id="{{ $entry.category | urlize }}">{{ $entry.category }}</h2> - <p>{{ $entry.description }}</p> - {{ if eq $entry.category "RTL" -}} - <div class="bd-callout bd-callout-warning"> - <p>The RTL feature is still <strong>experimental</strong> and will probably evolve according to user feedback. Spotted something or have an improvement to suggest? <a href="{{ $.Site.Params.repo }}/issues/new">Open an issue</a>, we'd love to get your insights.</p> - </div> - {{ end -}} - - {{ range $i, $example := $entry.examples -}} - {{- $len := len $entry.examples -}} - {{ if (eq $i 0) }}<div class="row">{{ end }} - <div class="col-sm-6 col-md-4 col-xl-3 mb-3"> - <a class="d-block" href="/docs/{{ $.Site.Params.docs_version }}/examples/{{ $example.name | urlize }}/"{{ if in $example.name "RTL" }} hreflang="ar"{{ end }}> - <img class="img-thumbnail mb-3" srcset="/docs/{{ $.Site.Params.docs_version }}/assets/img/examples/{{ $example.name | urlize }}.png, - /docs/{{ $.Site.Params.docs_version }}/assets/img/examples/{{ $example.name | urlize }}@2x.png 2x" - src="/docs/{{ $.Site.Params.docs_version }}/assets/img/examples/{{ $example.name | urlize }}.png" - alt="" - width="480" height="300" - loading="lazy"> - <h3 class="h5 mb-1">{{ $example.name }}</h3> - </a> - <p class="text-muted">{{ $example.description }}</p> - </div> - {{ if (eq (add $i 1) $len) }}</div>{{ end }} - {{ end -}} -{{ end -}} -{{< /list-examples.inline >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/checkout/form-validation.js b/vendor/twbs/bootstrap/site/content/docs/5.1/examples/checkout/form-validation.js deleted file mode 100644 index f8fd583de..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/checkout/form-validation.js +++ /dev/null @@ -1,20 +0,0 @@ -// Example starter JavaScript for disabling form submissions if there are invalid fields -(function () { - 'use strict' - - // Fetch all the forms we want to apply custom Bootstrap validation styles to - var forms = document.querySelectorAll('.needs-validation') - - // Loop over them and prevent submission - Array.prototype.slice.call(forms) - .forEach(function (form) { - form.addEventListener('submit', function (event) { - if (!form.checkValidity()) { - event.preventDefault() - event.stopPropagation() - } - - form.classList.add('was-validated') - }, false) - }) -})() diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/features/features.css b/vendor/twbs/bootstrap/site/content/docs/5.1/examples/features/features.css deleted file mode 100644 index 33942f7f1..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/features/features.css +++ /dev/null @@ -1,61 +0,0 @@ -.b-example-divider { - height: 3rem; - background-color: rgba(0, 0, 0, .1); - border: solid rgba(0, 0, 0, .15); - border-width: 1px 0; - box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); -} - -.bi { - vertical-align: -.125em; - fill: currentColor; -} - -.feature-icon { - display: inline-flex; - align-items: center; - justify-content: center; - width: 4rem; - height: 4rem; - margin-bottom: 1rem; - font-size: 2rem; - color: #fff; - border-radius: .75rem; -} - -.icon-link { - display: inline-flex; - align-items: center; -} -.icon-link > .bi { - margin-top: .125rem; - margin-left: .125rem; - transition: transform .25s ease-in-out; - fill: currentColor; -} -.icon-link:hover > .bi { - transform: translate(.25rem); -} - -.icon-square { - display: inline-flex; - align-items: center; - justify-content: center; - width: 3rem; - height: 3rem; - font-size: 1.5rem; - border-radius: .75rem; -} - -.rounded-4 { border-radius: .5rem; } -.rounded-5 { border-radius: 1rem; } - -.text-shadow-1 { text-shadow: 0 .125rem .25rem rgba(0, 0, 0, .25); } -.text-shadow-2 { text-shadow: 0 .25rem .5rem rgba(0, 0, 0, .25); } -.text-shadow-3 { text-shadow: 0 .5rem 1.5rem rgba(0, 0, 0, .25); } - -.card-cover { - background-repeat: no-repeat; - background-position: center center; - background-size: cover; -} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/footers/footers.css b/vendor/twbs/bootstrap/site/content/docs/5.1/examples/footers/footers.css deleted file mode 100644 index 4e826827e..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/footers/footers.css +++ /dev/null @@ -1,12 +0,0 @@ -.b-example-divider { - height: 3rem; - background-color: rgba(0, 0, 0, .1); - border: solid rgba(0, 0, 0, .15); - border-width: 1px 0; - box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); -} - -.bi { - vertical-align: -.125em; - fill: currentColor; -} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/headers/headers.css b/vendor/twbs/bootstrap/site/content/docs/5.1/examples/headers/headers.css deleted file mode 100644 index 661a74d55..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/headers/headers.css +++ /dev/null @@ -1,32 +0,0 @@ -.b-example-divider { - height: 3rem; - background-color: rgba(0, 0, 0, .1); - border: solid rgba(0, 0, 0, .15); - border-width: 1px 0; - box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); -} - -.form-control-dark { - color: #fff; - background-color: var(--bs-dark); - border-color: var(--bs-gray); -} -.form-control-dark:focus { - color: #fff; - background-color: var(--bs-dark); - border-color: #fff; - box-shadow: 0 0 0 .25rem rgba(255, 255, 255, .25); -} - -.bi { - vertical-align: -.125em; - fill: currentColor; -} - -.text-small { - font-size: 85%; -} - -.dropdown-toggle { - outline: 0; -} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/heroes/heroes.css b/vendor/twbs/bootstrap/site/content/docs/5.1/examples/heroes/heroes.css deleted file mode 100644 index 380b70a4a..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/heroes/heroes.css +++ /dev/null @@ -1,11 +0,0 @@ -.b-example-divider { - height: 3rem; - background-color: rgba(0, 0, 0, .1); - border: solid rgba(0, 0, 0, .15); - border-width: 1px 0; - box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); -} - -@media (min-width: 992px) { - .rounded-lg-3 { border-radius: .3rem; } -} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/modals/modals.css b/vendor/twbs/bootstrap/site/content/docs/5.1/examples/modals/modals.css deleted file mode 100644 index 8fda8212a..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/modals/modals.css +++ /dev/null @@ -1,34 +0,0 @@ -.b-example-divider { - height: 3rem; - background-color: rgba(0, 0, 0, .1); - border: solid rgba(0, 0, 0, .15); - border-width: 1px 0; - box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); -} - -.bi { - vertical-align: -.125em; - fill: currentColor; -} - -.rounded-4 { border-radius: .5rem; } -.rounded-5 { border-radius: .75rem; } -.rounded-6 { border-radius: 1rem; } - -.modal-sheet .modal-dialog { - width: 380px; - transition: bottom .75s ease-in-out; -} -.modal-sheet .modal-footer { - padding-bottom: 2rem; -} - -.modal-alert .modal-dialog { - width: 380px; -} - -.border-right { border-right: 1px solid #eee; } - -.modal-tour .modal-dialog { - width: 380px; -} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sidebars/sidebars.js b/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sidebars/sidebars.js deleted file mode 100644 index 68384c163..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sidebars/sidebars.js +++ /dev/null @@ -1,8 +0,0 @@ -/* global bootstrap: false */ -(function () { - 'use strict' - var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')) - tooltipTriggerList.forEach(function (tooltipTriggerEl) { - new bootstrap.Tooltip(tooltipTriggerEl) - }) -})() diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/introduction.md b/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/introduction.md deleted file mode 100644 index b2fe767d7..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/introduction.md +++ /dev/null @@ -1,162 +0,0 @@ ---- -layout: docs -title: Introduction -description: Get started with Bootstrap, the world's most popular framework for building responsive, mobile-first sites, with jsDelivr and a template starter page. -group: getting-started -aliases: - - "/docs/5.1/getting-started/" - - "/docs/getting-started/" - - "/getting-started/" -toc: true ---- - -## Quick start - -Looking to quickly add Bootstrap to your project? Use jsDelivr, a free open source CDN. Using a package manager or need to download the source files? [Head to the downloads page]({{< docsref "/getting-started/download" >}}). - -### CSS - -Copy-paste the stylesheet `<link>` into your `<head>` before all other stylesheets to load our CSS. - -```html -<link href="{{< param "cdn.css" >}}" rel="stylesheet" integrity="{{< param "cdn.css_hash" >}}" crossorigin="anonymous"> -``` - -### JS - -Many of our components require the use of JavaScript to function. Specifically, they require our own JavaScript plugins and [Popper](https://popper.js.org/). Place **one of the following `<script>`s** near the end of your pages, right before the closing `</body>` tag, to enable them. - -#### Bundle - -Include every Bootstrap JavaScript plugin and dependency with one of our two bundles. Both `bootstrap.bundle.js` and `bootstrap.bundle.min.js` include [Popper](https://popper.js.org/) for our tooltips and popovers. For more information about what's included in Bootstrap, please see our [contents]({{< docsref "/getting-started/contents#precompiled-bootstrap" >}}) section. - -```html -<script src="{{< param "cdn.js_bundle" >}}" integrity="{{< param "cdn.js_bundle_hash" >}}" crossorigin="anonymous"></script> -``` - -#### Separate - -If you decide to go with the separate scripts solution, Popper must come first (if you're using tooltips or popovers), and then our JavaScript plugins. - -```html -<script src="{{< param "cdn.popper" >}}" integrity="{{< param "cdn.popper_hash" >}}" crossorigin="anonymous"></script> -<script src="{{< param "cdn.js" >}}" integrity="{{< param "cdn.js_hash" >}}" crossorigin="anonymous"></script> -``` - -#### Modules - -If you use `<script type="module">`, please refer to our [using Bootstrap as a module]({{< docsref "/getting-started/javascript#using-bootstrap-as-a-module" >}}) section. - -#### Components - -Curious which components explicitly require our JavaScript and Popper? Click the show components link below. If you're at all unsure about the general page structure, keep reading for an example page template. - -<details> -<summary class="text-primary mb-3">Show components requiring JavaScript</summary> -{{< markdown >}} -- Alerts for dismissing -- Buttons for toggling states and checkbox/radio functionality -- Carousel for all slide behaviors, controls, and indicators -- Collapse for toggling visibility of content -- Dropdowns for displaying and positioning (also requires [Popper](https://popper.js.org/)) -- Modals for displaying, positioning, and scroll behavior -- Navbar for extending our Collapse plugin to implement responsive behavior -- Offcanvases for displaying, positioning, and scroll behavior -- Toasts for displaying and dismissing -- Tooltips and popovers for displaying and positioning (also requires [Popper](https://popper.js.org/)) -- Scrollspy for scroll behavior and navigation updates -{{< /markdown >}} -</details> - -## Starter template - -Be sure to have your pages set up with the latest design and development standards. That means using an HTML5 doctype and including a viewport meta tag for proper responsive behaviors. Put it all together and your pages should look like this: - -```html -<!doctype html> -<html lang="en"> - <head> - <!-- Required meta tags --> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - - <!-- Bootstrap CSS --> - <link href="{{< param "cdn.css" >}}" rel="stylesheet" integrity="{{< param "cdn.css_hash" >}}" crossorigin="anonymous"> - - <title>Hello, world!</title> - </head> - <body> - <h1>Hello, world!</h1> - - <!-- Optional JavaScript; choose one of the two! --> - - <!-- Option 1: Bootstrap Bundle with Popper --> - <script src="{{< param "cdn.js_bundle" >}}" integrity="{{< param "cdn.js_bundle_hash" >}}" crossorigin="anonymous"></script> - - <!-- Option 2: Separate Popper and Bootstrap JS --> - <!-- - <script src="{{< param "cdn.popper" >}}" integrity="{{< param "cdn.popper_hash" >}}" crossorigin="anonymous"></script> - <script src="{{< param "cdn.js" >}}" integrity="{{< param "cdn.js_hash" >}}" crossorigin="anonymous"></script> - --> - </body> -</html> -``` - -For next steps, visit the [Layout docs]({{< docsref "/layout/grid" >}}) or [our official examples]({{< docsref "/examples" >}}) to start laying out your site's content and components. - -## Important globals - -Bootstrap employs a handful of important global styles and settings that you'll need to be aware of when using it, all of which are almost exclusively geared towards the *normalization* of cross browser styles. Let's dive in. - -### HTML5 doctype - -Bootstrap requires the use of the HTML5 doctype. Without it, you'll see some funky incomplete styling, but including it shouldn't cause any considerable hiccups. - -```html -<!doctype html> -<html lang="en"> - ... -</html> -``` - -### Responsive meta tag - -Bootstrap is developed *mobile first*, a strategy in which we optimize code for mobile devices first and then scale up components as necessary using CSS media queries. To ensure proper rendering and touch zooming for all devices, **add the responsive viewport meta tag** to your `<head>`. - -```html -<meta name="viewport" content="width=device-width, initial-scale=1"> -``` - -You can see an example of this in action in the [starter template](#starter-template). - -### Box-sizing - -For more straightforward sizing in CSS, we switch the global `box-sizing` value from `content-box` to `border-box`. This ensures `padding` does not affect the final computed width of an element, but it can cause problems with some third-party software like Google Maps and Google Custom Search Engine. - -On the rare occasion you need to override it, use something like the following: - -```css -.selector-for-some-widget { - box-sizing: content-box; -} -``` - -With the above snippet, nested elements—including generated content via `::before` and `::after`—will all inherit the specified `box-sizing` for that `.selector-for-some-widget`. - -Learn more about [box model and sizing at CSS Tricks](https://css-tricks.com/box-sizing/). - -### Reboot - -For improved cross-browser rendering, we use [Reboot]({{< docsref "/content/reboot" >}}) to correct inconsistencies across browsers and devices while providing slightly more opinionated resets to common HTML elements. - -## Community - -Stay up to date on the development of Bootstrap and reach out to the community with these helpful resources. - -- Read and subscribe to [The Official Bootstrap Blog]({{< param blog >}}). -- Join [the official Slack room]({{< param slack >}}). -- Chat with fellow Bootstrappers in IRC. On the `irc.libera.chat` server, in the `#bootstrap` channel. -- Implementation help may be found at Stack Overflow (tagged [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5)). -- Developers should use the keyword `bootstrap` on packages that modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/search?q=keywords:bootstrap) or similar delivery mechanisms for maximum discoverability. - -You can also follow [@getbootstrap on Twitter](https://twitter.com/{{< param twitter >}}) for the latest gossip and awesome music videos. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/javascript.md b/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/javascript.md deleted file mode 100644 index 8ee428921..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/javascript.md +++ /dev/null @@ -1,238 +0,0 @@ ---- -layout: docs -title: JavaScript -description: Bring Bootstrap to life with our optional JavaScript plugins. Learn about each plugin, our data and programmatic API options, and more. -group: getting-started -toc: true ---- - -## Individual or compiled - -Plugins can be included individually (using Bootstrap's individual `js/dist/*.js`), or all at once using `bootstrap.js` or the minified `bootstrap.min.js` (don't include both). - -If you use a bundler (Webpack, Rollup...), you can use `/js/dist/*.js` files which are UMD ready. - -## Using Bootstrap as a module - -We provide a version of Bootstrap built as `ESM` (`bootstrap.esm.js` and `bootstrap.esm.min.js`) which allows you to use Bootstrap as a module in your browser, if your [targeted browsers support it](https://caniuse.com/es6-module). - -```html -<script type="module"> - import { Toast } from 'bootstrap.esm.min.js' - - Array.from(document.querySelectorAll('.toast')) - .forEach(toastNode => new Toast(toastNode)) -</script> -``` - -{{< callout warning >}} -## Incompatible plugins - -Due to browser limitations, some of our plugins, namely Dropdown, Tooltip and Popover plugins, cannot be used in a `<script>` tag with `module` type because they depend on Popper. For more information about the issue see [here](https://v8.dev/features/modules#specifiers). -{{< /callout >}} - -## Dependencies - -Some plugins and CSS components depend on other plugins. If you include plugins individually, make sure to check for these dependencies in the docs. - -Our dropdowns, popovers and tooltips also depend on [Popper](https://popper.js.org/). - -## Still want to use jQuery? It's possible! - -Bootstrap 5 is designed to be used without jQuery, but it's still possible to use our components with jQuery. **If Bootstrap detects `jQuery` in the `window` object** it'll add all of our components in jQuery's plugin system; this means you'll be able to do `$('[data-bs-toggle="tooltip"]').tooltip()` to enable tooltips. The same goes for our other components. - -## Data attributes - -Nearly all Bootstrap plugins can be enabled and configured through HTML alone with data attributes (our preferred way of using JavaScript functionality). Be sure to **only use one set of data attributes on a single element** (e.g., you cannot trigger a tooltip and modal from the same button.) - -{{< callout warning >}} -## Selectors - -Currently to query DOM elements we use the native methods `querySelector` and `querySelectorAll` for performance reasons, so you have to use [valid selectors](https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier). -If you use special selectors, for example: `collapse:Example` be sure to escape them. -{{< /callout >}} - -## Events - -Bootstrap provides custom events for most plugins' unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. `show`) is triggered at the start of an event, and its past participle form (ex. `shown`) is triggered on the completion of an action. - -All infinitive events provide [`preventDefault()`](https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault) functionality. This provides the ability to stop the execution of an action before it starts. Returning false from an event handler will also automatically call `preventDefault()`. - -```js -var myModal = document.getElementById('myModal') - -myModal.addEventListener('show.bs.modal', function (event) { - if (!data) { - return event.preventDefault() // stops modal from being shown - } -}) -``` - -{{< callout warning >}} -## jQuery events - -Bootstrap will detect jQuery if `jQuery` is present in the `window` object and there is no `data-bs-no-jquery` attribute set on `<body>`. If jQuery is found, Bootstrap will emit events thanks to jQuery's event system. So if you want to listen to Bootstrap's events, you'll have to use the jQuery methods (`.on`, `.one`) instead of `addEventListener`. - -```js -$('#myTab a').on('shown.bs.tab', function () { - // do something... -}) -``` -{{< /callout >}} - -## Programmatic API - -All constructors accept an optional options object or nothing (which initiates a plugin with its default behavior): - -```js -var myModalEl = document.getElementById('myModal') - -var modal = new bootstrap.Modal(myModalEl) // initialized with defaults -var modal = new bootstrap.Modal(myModalEl, { keyboard: false }) // initialized with no keyboard -``` - -If you'd like to get a particular plugin instance, each plugin exposes a `getInstance` method. In order to retrieve it directly from an element, do this: `bootstrap.Popover.getInstance(myPopoverEl)`. - -### CSS selectors in constructors - -You can also use a CSS selector as the first argument instead of a DOM element to initialize the plugin. Currently the element for the plugin is found by the `querySelector` method since our plugins support a single element only. - -```js -var modal = new bootstrap.Modal('#myModal') -var dropdown = new bootstrap.Dropdown('[data-bs-toggle="dropdown"]') -``` - -### Asynchronous functions and transitions - -All programmatic API methods are **asynchronous** and return to the caller once the transition is started but **before it ends**. - -In order to execute an action once the transition is complete, you can listen to the corresponding event. - -```js -var myCollapseEl = document.getElementById('myCollapse') - -myCollapseEl.addEventListener('shown.bs.collapse', function (event) { - // Action to execute once the collapsible area is expanded -}) -``` - -In addition a method call on a **transitioning component will be ignored**. - -```js -var myCarouselEl = document.getElementById('myCarousel') -var carousel = bootstrap.Carousel.getInstance(myCarouselEl) // Retrieve a Carousel instance - -myCarouselEl.addEventListener('slid.bs.carousel', function (event) { - carousel.to('2') // Will slide to the slide 2 as soon as the transition to slide 1 is finished -}) - -carousel.to('1') // Will start sliding to the slide 1 and returns to the caller -carousel.to('2') // !! Will be ignored, as the transition to the slide 1 is not finished !! -``` - -### Default settings - -You can change the default settings for a plugin by modifying the plugin's `Constructor.Default` object: - -```js -// changes default for the modal plugin's `keyboard` option to false -bootstrap.Modal.Default.keyboard = false -``` - -## No conflict (only if you use jQuery) - -Sometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances, namespace collisions can occasionally occur. If this happens, you may call `.noConflict` on the plugin you wish to revert the value of. - -```js -var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value -$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality -``` - -## Version numbers - -The version of each of Bootstrap's plugins can be accessed via the `VERSION` property of the plugin's constructor. For example, for the tooltip plugin: - -```js -bootstrap.Tooltip.VERSION // => "{{< param current_version >}}" -``` - -## No special fallbacks when JavaScript is disabled - -Bootstrap's plugins don't fall back particularly gracefully when JavaScript is disabled. If you care about the user experience in this case, use [`<noscript>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript) to explain the situation (and how to re-enable JavaScript) to your users, and/or add your own custom fallbacks. - -{{< callout warning >}} -##### Third-party libraries - -**Bootstrap does not officially support third-party JavaScript libraries** like Prototype or jQuery UI. Despite `.noConflict` and namespaced events, there may be compatibility problems that you need to fix on your own. -{{< /callout >}} - -## Sanitizer - -Tooltips and Popovers use our built-in sanitizer to sanitize options which accept HTML. - -The default `allowList` value is the following: - -```js -var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i -var DefaultAllowlist = { - // Global attributes allowed on any supplied element below. - '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], - a: ['target', 'href', 'title', 'rel'], - area: [], - b: [], - br: [], - col: [], - code: [], - div: [], - em: [], - hr: [], - h1: [], - h2: [], - h3: [], - h4: [], - h5: [], - h6: [], - i: [], - img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], - li: [], - ol: [], - p: [], - pre: [], - s: [], - small: [], - span: [], - sub: [], - sup: [], - strong: [], - u: [], - ul: [] -} -``` - -If you want to add new values to this default `allowList` you can do the following: - -```js -var myDefaultAllowList = bootstrap.Tooltip.Default.allowList - -// To allow table elements -myDefaultAllowList.table = [] - -// To allow td elements and data-bs-option attributes on td elements -myDefaultAllowList.td = ['data-bs-option'] - -// You can push your custom regex to validate your attributes. -// Be careful about your regular expressions being too lax -var myCustomRegex = /^data-my-app-[\w-]+/ -myDefaultAllowList['*'].push(myCustomRegex) -``` - -If you want to bypass our sanitizer because you prefer to use a dedicated library, for example [DOMPurify](https://www.npmjs.com/package/dompurify), you should do the following: - -```js -var yourTooltipEl = document.getElementById('yourTooltip') -var tooltip = new bootstrap.Tooltip(yourTooltipEl, { - sanitizeFn: function (content) { - return DOMPurify.sanitize(content) - } -}) -``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/parcel.md b/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/parcel.md deleted file mode 100644 index 23aab0054..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/parcel.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -layout: docs -title: Parcel -description: Learn how to include Bootstrap in your project using Parcel. -group: getting-started -toc: true ---- - -## Install Parcel - -Install [Parcel Bundler](https://en.parceljs.org/getting_started.html). - -## Install Bootstrap - -[Install bootstrap]({{< docsref "/getting-started/download#npm" >}}) as a Node.js module using npm. - -Bootstrap depends on [Popper](https://popper.js.org/), which is specified in the `peerDependencies` property. This means that you will have to make sure to add both of them to your `package.json` using `npm install @popperjs/core`. - -When all will be completed, your project will be structured like this: - -```text -project-name/ -├── build/ -├── node_modules/ -│ └── bootstrap/ -│ └── popper.js/ -├── scss/ -│ └── custom.scss -├── src/ -│ └── index.html -│ └── index.js -└── package.json -``` - -## Importing JavaScript - -Import [Bootstrap's JavaScript]({{< docsref "/getting-started/javascript" >}}) in your app's entry point (usually `src/index.js`). You can import all our plugins in one file or separately if you require only a subset of them. - -```js -// Import all plugins -import * as bootstrap from 'bootstrap'; - -// Or import only needed plugins -import { Tooltip as Tooltip, Toast as Toast, Popover as Popover } from 'bootstrap'; - -// Or import just one -import Alert as Alert from '../node_modules/bootstrap/js/dist/alert'; -``` - -## Importing CSS - -To utilize the full potential of Bootstrap and customize it to your needs, use the source files as a part of your project's bundling process. - -Create your own `scss/custom.scss` to [import Bootstrap's Sass files]({{< docsref "/customize/sass#importing" >}}) and then override the [built-in custom variables]({{< docsref "/customize/sass#variable-defaults" >}}). - -## Build app - -Include `src/index.js` before the closing `</body>` tag. - -```html -<!doctype html> -<html lang="en"> - <head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - </head> - <body> - <script src="./index.js"></script> - </body> -</html> -``` - -### Edit `package.json` - -Add `dev` and `build` scripts in your `package.json` file. - -```json -"scripts": { - "dev": "parcel ./src/index.html", - "prebuild": "npx rimraf build", - "build": "parcel build --public-url ./ ./src/index.html --experimental-scope-hoisting --out-dir build" -} -``` - -### Run dev script - -Your app will be accessible at `http://127.0.0.1:1234`. - -```sh -npm run dev -``` - -### Build app files - -Built files are in the `build/` folder. - -```sh -npm run build -``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/webpack.md b/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/webpack.md deleted file mode 100644 index b87460ebe..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/webpack.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -layout: docs -title: Webpack and bundlers -description: Learn how to include Bootstrap in your project using Webpack or other bundlers. -group: getting-started -toc: true ---- - -## Installing Bootstrap - -[Install bootstrap]({{< docsref "/getting-started/download#npm" >}}) as a Node.js module using npm. - -## Importing JavaScript - -Import [Bootstrap's JavaScript]({{< docsref "/getting-started/javascript" >}}) by adding this line to your app's entry point (usually `index.js` or `app.js`): - -```js -import 'bootstrap'; - -// or get all of the named exports for further usage -import * as bootstrap from 'bootstrap'; -``` - -Alternatively, if you only need just a few of our plugins, you may **import plugins individually** as needed: - -```js -import Alert from 'bootstrap/js/dist/alert'; - -// or, specify which plugins you need: -import { Tooltip, Toast, Popover } from 'bootstrap'; -``` - -Bootstrap depends on [Popper](https://popper.js.org/), which is specified in the `peerDependencies` property. -This means that you will have to make sure to add it to your `package.json` using `npm install @popperjs/core`. - -## Importing Styles - -### Importing Precompiled Sass - -To enjoy the full potential of Bootstrap and customize it to your needs, use the source files as a part of your project's bundling process. - -First, create your own `_custom.scss` and use it to override the [built-in custom variables]({{< docsref "/customize/sass" >}}). Then, use your main Sass file to import your custom variables, followed by Bootstrap: - -```scss -@import "custom"; -@import "~bootstrap/scss/bootstrap"; -``` - -For Bootstrap to compile, make sure you install and use the required loaders: [sass-loader](https://github.com/webpack-contrib/sass-loader), [postcss-loader](https://github.com/webpack-contrib/postcss-loader) with [Autoprefixer](https://github.com/postcss/autoprefixer#webpack). With minimal setup, your webpack config should include this rule or similar: - -```js -// ... -{ - test: /\.(scss)$/, - use: [{ - // inject CSS to page - loader: 'style-loader' - }, { - // translates CSS into CommonJS modules - loader: 'css-loader' - }, { - // Run postcss actions - loader: 'postcss-loader', - options: { - // `postcssOptions` is needed for postcss 8.x; - // if you use postcss 7.x skip the key - postcssOptions: { - // postcss plugins, can be exported to postcss.config.js - plugins: function () { - return [ - require('autoprefixer') - ]; - } - } - } - }, { - // compiles Sass to CSS - loader: 'sass-loader' - }] -} -// ... -``` - -### Importing Compiled CSS - -Alternatively, you may use Bootstrap's ready-to-use CSS by simply adding this line to your project's entry point: - -```js -import 'bootstrap/dist/css/bootstrap.min.css'; -``` - -In this case you may use your existing rule for `css` without any special modifications to webpack config, except you don't need `sass-loader` just [style-loader](https://github.com/webpack-contrib/style-loader) and [css-loader](https://github.com/webpack-contrib/css-loader). - -```js -// ... -module: { - rules: [ - { - test: /\.css$/, - use: [ - 'style-loader', - 'css-loader' - ] - } - ] -} -// ... -``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/flex.md b/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/flex.md deleted file mode 100644 index bbb1824b4..000000000 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/flex.md +++ /dev/null @@ -1,665 +0,0 @@ ---- -layout: docs -title: Flex -description: Quickly manage the layout, alignment, and sizing of grid columns, navigation, components, and more with a full suite of responsive flexbox utilities. For more complex implementations, custom CSS may be necessary. -group: utilities -toc: true ---- - -## Enable flex behaviors - -Apply `display` utilities to create a flexbox container and transform **direct children elements** into flex items. Flex containers and items are able to be modified further with additional flex properties. - -{{< example >}} -<div class="d-flex p-2 bd-highlight">I'm a flexbox container!</div> -{{< /example >}} - -{{< example >}} -<div class="d-inline-flex p-2 bd-highlight">I'm an inline flexbox container!</div> -{{< /example >}} - -Responsive variations also exist for `.d-flex` and `.d-inline-flex`. - -{{< markdown >}} -{{< flex.inline >}} -{{- range $.Site.Data.breakpoints }} -- `.d{{ .abbr }}-flex` -- `.d{{ .abbr }}-inline-flex` -{{- end -}} -{{< /flex.inline >}} -{{< /markdown >}} - -## Direction - -Set the direction of flex items in a flex container with direction utilities. In most cases you can omit the horizontal class here as the browser default is `row`. However, you may encounter situations where you needed to explicitly set this value (like responsive layouts). - -Use `.flex-row` to set a horizontal direction (the browser default), or `.flex-row-reverse` to start the horizontal direction from the opposite side. - -{{< example >}} -<div class="d-flex flex-row bd-highlight mb-3"> - <div class="p-2 bd-highlight">Flex item 1</div> - <div class="p-2 bd-highlight">Flex item 2</div> - <div class="p-2 bd-highlight">Flex item 3</div> -</div> -<div class="d-flex flex-row-reverse bd-highlight"> - <div class="p-2 bd-highlight">Flex item 1</div> - <div class="p-2 bd-highlight">Flex item 2</div> - <div class="p-2 bd-highlight">Flex item 3</div> -</div> -{{< /example >}} - -Use `.flex-column` to set a vertical direction, or `.flex-column-reverse` to start the vertical direction from the opposite side. - -{{< example >}} -<div class="d-flex flex-column bd-highlight mb-3"> - <div class="p-2 bd-highlight">Flex item 1</div> - <div class="p-2 bd-highlight">Flex item 2</div> - <div class="p-2 bd-highlight">Flex item 3</div> -</div> -<div class="d-flex flex-column-reverse bd-highlight"> - <div class="p-2 bd-highlight">Flex item 1</div> - <div class="p-2 bd-highlight">Flex item 2</div> - <div class="p-2 bd-highlight">Flex item 3</div> -</div> -{{< /example >}} - -Responsive variations also exist for `flex-direction`. - -{{< markdown >}} -{{< flex.inline >}} -{{- range $.Site.Data.breakpoints }} -- `.flex{{ .abbr }}-row` -- `.flex{{ .abbr }}-row-reverse` -- `.flex{{ .abbr }}-column` -- `.flex{{ .abbr }}-column-reverse` -{{- end -}} -{{< /flex.inline >}} -{{< /markdown >}} - -## Justify content - -Use `justify-content` utilities on flexbox containers to change the alignment of flex items on the main axis (the x-axis to start, y-axis if `flex-direction: column`). Choose from `start` (browser default), `end`, `center`, `between`, `around`, or `evenly`. - -<div class="bd-example"> - <div class="d-flex justify-content-start bd-highlight mb-3"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> - <div class="d-flex justify-content-end bd-highlight mb-3"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> - <div class="d-flex justify-content-center bd-highlight mb-3"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> - <div class="d-flex justify-content-between bd-highlight mb-3"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> - <div class="d-flex justify-content-around bd-highlight mb-3"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> - <div class="d-flex justify-content-evenly bd-highlight"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> -</div> - -```html -<div class="d-flex justify-content-start">...</div> -<div class="d-flex justify-content-end">...</div> -<div class="d-flex justify-content-center">...</div> -<div class="d-flex justify-content-between">...</div> -<div class="d-flex justify-content-around">...</div> -<div class="d-flex justify-content-evenly">...</div> -``` - -Responsive variations also exist for `justify-content`. - -{{< markdown >}} -{{< flex.inline >}} -{{- range $.Site.Data.breakpoints }} -- `.justify-content{{ .abbr }}-start` -- `.justify-content{{ .abbr }}-end` -- `.justify-content{{ .abbr }}-center` -- `.justify-content{{ .abbr }}-between` -- `.justify-content{{ .abbr }}-around` -- `.justify-content{{ .abbr }}-evenly` -{{- end -}} -{{< /flex.inline >}} -{{< /markdown >}} - -## Align items - -Use `align-items` utilities on flexbox containers to change the alignment of flex items on the cross axis (the y-axis to start, x-axis if `flex-direction: column`). Choose from `start`, `end`, `center`, `baseline`, or `stretch` (browser default). - -<div class="bd-example"> - <div class="d-flex align-items-start bd-highlight mb-3" style="height: 100px"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> - <div class="d-flex align-items-end bd-highlight mb-3" style="height: 100px"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> - <div class="d-flex align-items-center bd-highlight mb-3" style="height: 100px"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> - <div class="d-flex align-items-baseline bd-highlight mb-3" style="height: 100px"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> - <div class="d-flex align-items-stretch bd-highlight" style="height: 100px"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> -</div> - -```html -<div class="d-flex align-items-start">...</div> -<div class="d-flex align-items-end">...</div> -<div class="d-flex align-items-center">...</div> -<div class="d-flex align-items-baseline">...</div> -<div class="d-flex align-items-stretch">...</div> -``` - -Responsive variations also exist for `align-items`. - -{{< markdown >}} -{{< flex.inline >}} -{{- range $.Site.Data.breakpoints }} -- `.align-items{{ .abbr }}-start` -- `.align-items{{ .abbr }}-end` -- `.align-items{{ .abbr }}-center` -- `.align-items{{ .abbr }}-baseline` -- `.align-items{{ .abbr }}-stretch` -{{- end -}} -{{< /flex.inline >}} -{{< /markdown >}} - -## Align self - -Use `align-self` utilities on flexbox items to individually change their alignment on the cross axis (the y-axis to start, x-axis if `flex-direction: column`). Choose from the same options as `align-items`: `start`, `end`, `center`, `baseline`, or `stretch` (browser default). - -<div class="bd-example"> - <div class="d-flex bd-highlight mb-3" style="height: 100px"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="align-self-start p-2 bd-highlight">Aligned flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> - <div class="d-flex bd-highlight mb-3" style="height: 100px"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="align-self-end p-2 bd-highlight">Aligned flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> - <div class="d-flex bd-highlight mb-3" style="height: 100px"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="align-self-center p-2 bd-highlight">Aligned flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> - <div class="d-flex bd-highlight mb-3" style="height: 100px"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="align-self-baseline p-2 bd-highlight">Aligned flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> - <div class="d-flex bd-highlight" style="height: 100px"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="align-self-stretch p-2 bd-highlight">Aligned flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> -</div> - -```html -<div class="align-self-start">Aligned flex item</div> -<div class="align-self-end">Aligned flex item</div> -<div class="align-self-center">Aligned flex item</div> -<div class="align-self-baseline">Aligned flex item</div> -<div class="align-self-stretch">Aligned flex item</div> -``` - -Responsive variations also exist for `align-self`. - -{{< markdown >}} -{{< flex.inline >}} -{{- range $.Site.Data.breakpoints }} -- `.align-self{{ .abbr }}-start` -- `.align-self{{ .abbr }}-end` -- `.align-self{{ .abbr }}-center` -- `.align-self{{ .abbr }}-baseline` -- `.align-self{{ .abbr }}-stretch` -{{- end -}} -{{< /flex.inline >}} -{{< /markdown >}} - -## Fill - -Use the `.flex-fill` class on a series of sibling elements to force them into widths equal to their content (or equal widths if their content does not surpass their border-boxes) while taking up all available horizontal space. - -{{< example >}} -<div class="d-flex bd-highlight"> - <div class="p-2 flex-fill bd-highlight">Flex item with a lot of content</div> - <div class="p-2 flex-fill bd-highlight">Flex item</div> - <div class="p-2 flex-fill bd-highlight">Flex item</div> -</div> -{{< /example >}} - -Responsive variations also exist for `flex-fill`. - -{{< markdown >}} -{{< flex.inline >}} -{{- range $.Site.Data.breakpoints }} -- `.flex{{ .abbr }}-fill` -{{- end -}} -{{< /flex.inline >}} -{{< /markdown >}} - -## Grow and shrink - -Use `.flex-grow-*` utilities to toggle a flex item's ability to grow to fill available space. In the example below, the `.flex-grow-1` elements uses all available space it can, while allowing the remaining two flex items their necessary space. - -{{< example >}} -<div class="d-flex bd-highlight"> - <div class="p-2 flex-grow-1 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Third flex item</div> -</div> -{{< /example >}} - -Use `.flex-shrink-*` utilities to toggle a flex item's ability to shrink if necessary. In the example below, the second flex item with `.flex-shrink-1` is forced to wrap its contents to a new line, "shrinking" to allow more space for the previous flex item with `.w-100`. - -{{< example >}} -<div class="d-flex bd-highlight"> - <div class="p-2 w-100 bd-highlight">Flex item</div> - <div class="p-2 flex-shrink-1 bd-highlight">Flex item</div> -</div> -{{< /example >}} - -Responsive variations also exist for `flex-grow` and `flex-shrink`. - -{{< markdown >}} -{{< flex.inline >}} -{{- range $.Site.Data.breakpoints }} -- `.flex{{ .abbr }}-{grow|shrink}-0` -- `.flex{{ .abbr }}-{grow|shrink}-1` -{{- end -}} -{{< /flex.inline >}} -{{< /markdown >}} - -## Auto margins - -Flexbox can do some pretty awesome things when you mix flex alignments with auto margins. Shown below are three examples of controlling flex items via auto margins: default (no auto margin), pushing two items to the right (`.me-auto`), and pushing two items to the left (`.ms-auto`). - -{{< example >}} -<div class="d-flex bd-highlight mb-3"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> -</div> - -<div class="d-flex bd-highlight mb-3"> - <div class="me-auto p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> -</div> - -<div class="d-flex bd-highlight mb-3"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="ms-auto p-2 bd-highlight">Flex item</div> -</div> -{{< /example >}} - -### With align-items - -Vertically move one flex item to the top or bottom of a container by mixing `align-items`, `flex-direction: column`, and `margin-top: auto` or `margin-bottom: auto`. - -{{< example >}} -<div class="d-flex align-items-start flex-column bd-highlight mb-3" style="height: 200px;"> - <div class="mb-auto p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> -</div> - -<div class="d-flex align-items-end flex-column bd-highlight mb-3" style="height: 200px;"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="mt-auto p-2 bd-highlight">Flex item</div> -</div> -{{< /example >}} - -## Wrap - -Change how flex items wrap in a flex container. Choose from no wrapping at all (the browser default) with `.flex-nowrap`, wrapping with `.flex-wrap`, or reverse wrapping with `.flex-wrap-reverse`. - -<div class="bd-example"> - <div class="d-flex flex-nowrap bd-highlight" style="width: 8rem;"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> -</div> - -```html -<div class="d-flex flex-nowrap"> - ... -</div> -``` - -<div class="bd-example"> - <div class="d-flex flex-wrap bd-highlight"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> -</div> - -```html -<div class="d-flex flex-wrap"> - ... -</div> -``` - -<div class="bd-example"> - <div class="d-flex flex-wrap-reverse bd-highlight"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> -</div> - -```html -<div class="d-flex flex-wrap-reverse"> - ... -</div> -``` - - -Responsive variations also exist for `flex-wrap`. - -{{< markdown >}} -{{< flex.inline >}} -{{- range $.Site.Data.breakpoints }} -- `.flex{{ .abbr }}-nowrap` -- `.flex{{ .abbr }}-wrap` -- `.flex{{ .abbr }}-wrap-reverse` -{{- end -}} -{{< /flex.inline >}} -{{< /markdown >}} - -## Order - -Change the _visual_ order of specific flex items with a handful of `order` utilities. We only provide options for making an item first or last, as well as a reset to use the DOM order. As `order` takes any integer value from 0 to 5, add custom CSS for any additional values needed. - -{{< example >}} -<div class="d-flex flex-nowrap bd-highlight"> - <div class="order-3 p-2 bd-highlight">First flex item</div> - <div class="order-2 p-2 bd-highlight">Second flex item</div> - <div class="order-1 p-2 bd-highlight">Third flex item</div> -</div> -{{< /example >}} - -Responsive variations also exist for `order`. - -{{< markdown >}} -{{< flex.inline >}} -{{- range $bp := $.Site.Data.breakpoints -}} -{{- range (seq 0 5) }} -- `.order{{ $bp.abbr }}-{{ . }}` -{{- end -}} -{{- end -}} -{{< /flex.inline >}} -{{< /markdown >}} - -Additionally there are also responsive `.order-first` and `.order-last` classes that change the `order` of an element by applying `order: -1` and `order: 6`, respectively. - -{{< markdown >}} -{{< flex.inline >}} -{{- range $bp := $.Site.Data.breakpoints -}} -{{- range (slice "first" "last") }} -- `.order{{ $bp.abbr }}-{{ . }}` -{{- end -}} -{{- end -}} -{{< /flex.inline >}} -{{< /markdown >}} - -## Align content - -Use `align-content` utilities on flexbox containers to align flex items *together* on the cross axis. Choose from `start` (browser default), `end`, `center`, `between`, `around`, or `stretch`. To demonstrate these utilities, we've enforced `flex-wrap: wrap` and increased the number of flex items. - -**Heads up!** This property has no effect on single rows of flex items. - -<div class="bd-example"> - <div class="d-flex align-content-start flex-wrap bd-highlight mb-3" style="height: 200px"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> -</div> - -```html -<div class="d-flex align-content-start flex-wrap"> - ... -</div> -``` - -<div class="bd-example"> - <div class="d-flex align-content-end flex-wrap bd-highlight mb-3" style="height: 200px"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> -</div> - -```html -<div class="d-flex align-content-end flex-wrap">...</div> -``` - -<div class="bd-example"> - <div class="d-flex align-content-center flex-wrap bd-highlight mb-3" style="height: 200px"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> -</div> - -```html -<div class="d-flex align-content-center flex-wrap">...</div> -``` - -<div class="bd-example"> - <div class="d-flex align-content-between flex-wrap bd-highlight mb-3" style="height: 200px"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> -</div> - -```html -<div class="d-flex align-content-between flex-wrap">...</div> -``` - -<div class="bd-example"> - <div class="d-flex align-content-around flex-wrap bd-highlight mb-3" style="height: 200px"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> -</div> - -```html -<div class="d-flex align-content-around flex-wrap">...</div> -``` - -<div class="bd-example"> - <div class="d-flex align-content-stretch flex-wrap bd-highlight mb-3" style="height: 200px"> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - <div class="p-2 bd-highlight">Flex item</div> - </div> -</div> - -```html -<div class="d-flex align-content-stretch flex-wrap">...</div> -``` - -Responsive variations also exist for `align-content`. - -{{< markdown >}} -{{< flex.inline >}} -{{- range $.Site.Data.breakpoints }} -- `.align-content{{ .abbr }}-start` -- `.align-content{{ .abbr }}-end` -- `.align-content{{ .abbr }}-center` -- `.align-content{{ .abbr }}-around` -- `.align-content{{ .abbr }}-stretch` -{{- end -}} -{{< /flex.inline >}} -{{< /markdown >}} - -## Media object - -Looking to replicate the [media object component](https://getbootstrap.com/docs/4.6/components/media-object/) from Bootstrap 4? Recreate it in no time with a few flex utilities that allow even more flexibility and customization than before. - -{{< example >}} -<div class="d-flex"> - <div class="flex-shrink-0"> - {{< placeholder width="100" height="100" color="#999" background="#e5e5e5" text="Image" >}} - </div> - <div class="flex-grow-1 ms-3"> - This is some content from a media component. You can replace this with any content and adjust it as needed. - </div> -</div> -{{< /example >}} - -And say you want to vertically center the content next to the image: - -{{< example >}} -<div class="d-flex align-items-center"> - <div class="flex-shrink-0"> - {{< placeholder width="100" height="100" color="#999" background="#e5e5e5" text="Image" >}} - </div> - <div class="flex-grow-1 ms-3"> - This is some content from a media component. You can replace this with any content and adjust it as needed. - </div> -</div> -{{< /example >}} - -## Sass - -### Utilities API - -Flexbox utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}}) - -{{< scss-docs name="utils-flex" file="scss/_utilities.scss" >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/_index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/_index.html new file mode 100644 index 000000000..fe65dc364 --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/_index.html @@ -0,0 +1,5 @@ +--- +layout: redirect +sitemap_exclude: true +redirect: "/docs/5.2/getting-started/introduction/" +--- diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/about/brand.md b/vendor/twbs/bootstrap/site/content/docs/5.2/about/brand.md index 80c613526..80c613526 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/about/brand.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/about/brand.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/about/license.md b/vendor/twbs/bootstrap/site/content/docs/5.2/about/license.md index 07e60e00a..07e60e00a 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/about/license.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/about/license.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/about/overview.md b/vendor/twbs/bootstrap/site/content/docs/5.2/about/overview.md index 4fd019314..f61101c15 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/about/overview.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/about/overview.md @@ -5,7 +5,7 @@ description: Learn more about the team maintaining Bootstrap, how and why the pr group: about aliases: - "/about/" - - "/docs/5.1/about/" + - "/docs/5.2/about/" --- ## Team diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/about/team.md b/vendor/twbs/bootstrap/site/content/docs/5.2/about/team.md index 3c1666f29..3c1666f29 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/about/team.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/about/team.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/about/translations.md b/vendor/twbs/bootstrap/site/content/docs/5.2/about/translations.md index e719e3a84..5e2ae30c5 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/about/translations.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/about/translations.md @@ -5,7 +5,7 @@ description: Links to community-translated Bootstrap documentation sites. group: about --- -Community members have translated Bootstrap's documentation into various languages. None are officially supported and they may not always be up to date. +Community members have translated Bootstrap's documentation into various languages. None are officially supported and they may not always be up-to-date. {{< translations.inline >}} <ul> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/accordion.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/accordion.md index 535ae46b5..2e247239c 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/accordion.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/accordion.md @@ -5,7 +5,7 @@ description: Build vertically collapsing accordions in combination with our Coll group: components aliases: - "/components/" - - "/docs/5.1/components/" + - "/docs/5.2/components/" toc: true --- @@ -150,8 +150,16 @@ Omit the `data-bs-parent` attribute on each `.accordion-collapse` to make accord Please read the [collapse accessibility section]({{< docsref "/components/collapse#accessibility" >}}) for more information. -## Sass +## CSS ### Variables +{{< added-in "5.2.0" >}} + +As part of Bootstrap's evolving CSS variables approach, accordions now use local CSS variables on `.accordion` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +{{< scss-docs name="accordion-css-vars" file="scss/_accordion.scss" >}} + +### Sass variables + {{< scss-docs name="accordion-variables" file="scss/_variables.scss" >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/alerts.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/alerts.md index 6127279f5..8837ed46c 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/alerts.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/alerts.md @@ -27,7 +27,7 @@ Alerts are available for any length of text, as well as an optional close button Click the button below to show an alert (hidden with inline styles to start), then dismiss (and destroy) it with the built-in close button. -{{< example >}} +{{< example stackblitz_add_js="true" >}} <div id="liveAlertPlaceholder"></div> <button type="button" class="btn btn-primary" id="liveAlertBtn">Show live alert</button> {{< /example >}} @@ -35,18 +35,23 @@ Click the button below to show an alert (hidden with inline styles to start), th We use the following JavaScript to trigger our live alert demo: ```js -var alertPlaceholder = document.getElementById('liveAlertPlaceholder') -var alertTrigger = document.getElementById('liveAlertBtn') +const alertPlaceholder = document.getElementById('liveAlertPlaceholder') -function alert(message, type) { - var wrapper = document.createElement('div') - wrapper.innerHTML = '<div class="alert alert-' + type + ' alert-dismissible" role="alert">' + message + '<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button></div>' +const alert = (message, type) => { + const wrapper = document.createElement('div') + wrapper.innerHTML = [ + `<div class="alert alert-${type} alert-dismissible" role="alert">`, + ` <div>${message}</div>`, + ' <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>', + '</div>' + ].join('') alertPlaceholder.append(wrapper) } +const alertTrigger = document.getElementById('liveAlertBtn') if (alertTrigger) { - alertTrigger.addEventListener('click', function () { + alertTrigger.addEventListener('click', () => { alert('Nice, you triggered this alert message!', 'success') }) } @@ -84,7 +89,7 @@ Similarly, you can use [flexbox utilities]({{< docsref "/utilities/flex" >}}) an {{< example >}} <div class="alert alert-primary d-flex align-items-center" role="alert"> - <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-exclamation-triangle-fill flex-shrink-0 me-2" viewBox="0 0 16 16" role="img" aria-label="Warning:"> + <svg xmlns="http://www.w3.org/2000/svg" class="bi bi-exclamation-triangle-fill flex-shrink-0 me-2" viewBox="0 0 16 16" role="img" aria-label="Warning:"> <path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/> </svg> <div> @@ -97,37 +102,37 @@ Need more than one icon for your alerts? Consider using more Bootstrap Icons and {{< example >}} <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> - <symbol id="check-circle-fill" fill="currentColor" viewBox="0 0 16 16"> + <symbol id="check-circle-fill" viewBox="0 0 16 16"> <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/> </symbol> - <symbol id="info-fill" fill="currentColor" viewBox="0 0 16 16"> + <symbol id="info-fill" viewBox="0 0 16 16"> <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/> </symbol> - <symbol id="exclamation-triangle-fill" fill="currentColor" viewBox="0 0 16 16"> + <symbol id="exclamation-triangle-fill" viewBox="0 0 16 16"> <path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/> </symbol> </svg> <div class="alert alert-primary d-flex align-items-center" role="alert"> - <svg class="bi flex-shrink-0 me-2" width="24" height="24" role="img" aria-label="Info:"><use xlink:href="#info-fill"/></svg> + <svg class="bi flex-shrink-0 me-2" role="img" aria-label="Info:"><use xlink:href="#info-fill"/></svg> <div> An example alert with an icon </div> </div> <div class="alert alert-success d-flex align-items-center" role="alert"> - <svg class="bi flex-shrink-0 me-2" width="24" height="24" role="img" aria-label="Success:"><use xlink:href="#check-circle-fill"/></svg> + <svg class="bi flex-shrink-0 me-2" role="img" aria-label="Success:"><use xlink:href="#check-circle-fill"/></svg> <div> An example success alert with an icon </div> </div> <div class="alert alert-warning d-flex align-items-center" role="alert"> - <svg class="bi flex-shrink-0 me-2" width="24" height="24" role="img" aria-label="Warning:"><use xlink:href="#exclamation-triangle-fill"/></svg> + <svg class="bi flex-shrink-0 me-2" role="img" aria-label="Warning:"><use xlink:href="#exclamation-triangle-fill"/></svg> <div> An example warning alert with an icon </div> </div> <div class="alert alert-danger d-flex align-items-center" role="alert"> - <svg class="bi flex-shrink-0 me-2" width="24" height="24" role="img" aria-label="Danger:"><use xlink:href="#exclamation-triangle-fill"/></svg> + <svg class="bi flex-shrink-0 me-2" role="img" aria-label="Danger:"><use xlink:href="#exclamation-triangle-fill"/></svg> <div> An example danger alert with an icon </div> @@ -156,19 +161,27 @@ You can see this in action with a live demo: When an alert is dismissed, the element is completely removed from the page structure. If a keyboard user dismisses the alert using the close button, their focus will suddenly be lost and, depending on the browser, reset to the start of the page/document. For this reason, we recommend including additional JavaScript that listens for the `closed.bs.alert` event and programmatically sets `focus()` to the most appropriate location in the page. If you're planning to move focus to a non-interactive element that normally does not receive focus, make sure to add `tabindex="-1"` to the element. {{< /callout >}} -## Sass +## CSS ### Variables +{{< added-in "5.2.0" >}} + +As part of Bootstrap's evolving CSS variables approach, alerts now use local CSS variables on `.alert` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +{{< scss-docs name="alert-css-vars" file="scss/_alert.scss" >}} + +### Sass variables + {{< scss-docs name="alert-variables" file="scss/_variables.scss" >}} -### Variant mixin +### Sass mixin Used in combination with `$theme-colors` to create contextual modifier classes for our alerts. {{< scss-docs name="alert-variant-mixin" file="scss/mixins/_alert.scss" >}} -### Loop +### Sass loop Loop that generates the modifier classes with the `alert-variant()` mixin. @@ -181,10 +194,8 @@ Loop that generates the modifier classes with the `alert-variant()` mixin. Initialize elements as alerts ```js -var alertList = document.querySelectorAll('.alert') -var alerts = [].slice.call(alertList).map(function (element) { - return new bootstrap.Alert(element) -}) +const alertList = document.querySelectorAll('.alert') +const alerts = [...alertList].map(element => new bootstrap.Alert(element)) ``` {{< callout info >}} @@ -201,53 +212,27 @@ See the [triggers](#triggers) section for more details. ### Methods -<table class="table"> - <thead> - <tr> - <th>Method</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td> - <code>close</code> - </td> - <td> - Closes an alert by removing it from the DOM. If the <code>.fade</code> and <code>.show</code> classes are present on the element, the alert will fade out before it is removed. - </td> - </tr> - <tr> - <td> - <code>dispose</code> - </td> - <td> - Destroys an element's alert. (Removes stored data on the DOM element) - </td> - </tr> - <tr> - <td> - <code>getInstance</code> - </td> - <td> - Static method which allows you to get the alert instance associated to a DOM element, you can use it like this: <code>bootstrap.Alert.getInstance(alert)</code> - </td> - </tr> - <tr> - <td> - <code>getOrCreateInstance</code> - </td> - <td> - Static method which returns an alert instance associated to a DOM element or create a new one in case it wasn't initialized. - You can use it like this: <code>bootstrap.Alert.getOrCreateInstance(element)</code> - </td> - </tr> - </tbody> -</table> +You can create an alert instance with the alert constructor, for example: + +```js +const bsAlert = new bootstrap.Alert('#myAlert') +``` + +This makes an alert listen for click events on descendant elements which have the `data-bs-dismiss="alert"` attribute. (Not necessary when using the data-api’s auto-initialization.) + +{{< bs-table >}} +| Method | Description | +| --- | --- | +| `close` | Closes an alert by removing it from the DOM. If the `.fade` and `.show` classes are present on the element, the alert will fade out before it is removed. | +| `dispose` | Destroys an element's alert. (Removes stored data on the DOM element) | +| `getInstance` | Static method which allows you to get the alert instance associated to a DOM element. For example: `bootstrap.Alert.getInstance(alert)`. | +| `getOrCreateInstance` | Static method which returns an alert instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: `bootstrap.Alert.getOrCreateInstance(element)`. | +{{< /bs-table >}} + +Basic usage: ```js -var alertNode = document.querySelector('.alert') -var alert = bootstrap.Alert.getInstance(alertNode) +const alert = bootstrap.Alert.getOrCreateInstance('#myAlert') alert.close() ``` @@ -255,32 +240,16 @@ alert.close() Bootstrap's alert plugin exposes a few events for hooking into alert functionality. -<table class="table"> - <thead> - <tr> - <th>Event</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>close.bs.alert</code></td> - <td> - Fires immediately when the <code>close</code> instance method is called. - </td> - </tr> - <tr> - <td><code>closed.bs.alert</code></td> - <td> - Fired when the alert has been closed and CSS transitions have completed. - </td> - </tr> - </tbody> -</table> +{{< bs-table >}} +| Event | Description | +| --- | --- | +| `close.bs.alert` | Fires immediately when the `close` instance method is called. | +| `closed.bs.alert` | Fired when the alert has been closed and CSS transitions have completed. | +{{< /bs-table >}} ```js -var myAlert = document.getElementById('myAlert') -myAlert.addEventListener('closed.bs.alert', function () { +const myAlert = document.getElementById('myAlert') +myAlert.addEventListener('closed.bs.alert', event => { // do something, for instance, explicitly move focus to the most appropriate element, // so it doesn't get lost/reset to the start of the page // document.getElementById('...').focus() diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/badge.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/badge.md index de80d3b27..55b1ffb85 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/badge.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/badge.md @@ -27,7 +27,7 @@ Badges can be used as part of links or buttons to provide a counter. {{< example >}} <button type="button" class="btn btn-primary"> - Notifications <span class="badge bg-secondary">4</span> + Notifications <span class="badge text-bg-secondary">4</span> </button> {{< /example >}} @@ -62,12 +62,14 @@ You can also replace the `.badge` class with a few more utilities without a coun ## Background colors -Use our background utility classes to quickly change the appearance of a badge. Please note that when using Bootstrap's default `.bg-light`, you'll likely need a text color utility like `.text-dark` for proper styling. This is because background utilities do not set anything but `background-color`. +{{< added-in "5.2.0" >}} + +Set a `background-color` with contrasting foreground `color` with [our `.text-bg-{color}` helpers]({{< docsref "helpers/color-background" >}}). Previously it was required to manually pair your choice of [`.text-{color}`]({{< docsref "/utilities/colors" >}}) and [`.bg-{color}`]({{< docsref "/utilities/background" >}}) utilities for styling, which you still may use if you prefer. {{< example >}} {{< badge.inline >}} {{- range (index $.Site.Data "theme-colors") }} -<span class="badge bg-{{ .name }}{{ with .contrast_color }} text-{{ . }}{{ end }}">{{ .name | title }}</span>{{- end -}} +<span class="badge text-bg-{{ .name }}">{{ .name | title }}</span>{{- end -}} {{< /badge.inline >}} {{< /example >}} @@ -82,12 +84,20 @@ Use the `.rounded-pill` utility class to make badges more rounded with a larger {{< example >}} {{< badge.inline >}} {{- range (index $.Site.Data "theme-colors") }} -<span class="badge rounded-pill bg-{{ .name }}{{ with .contrast_color }} text-{{ . }}{{ end }}">{{ .name | title }}</span>{{- end -}} +<span class="badge rounded-pill text-bg-{{ .name }}">{{ .name | title }}</span>{{- end -}} {{< /badge.inline >}} {{< /example >}} -## Sass +## CSS ### Variables +{{< added-in "5.2.0" >}} + +As part of Bootstrap's evolving CSS variables approach, badges now use local CSS variables on `.badge` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +{{< scss-docs name="badge-css-vars" file="scss/_badge.scss" >}} + +### Sass variables + {{< scss-docs name="badge-variables" file="scss/_variables.scss" >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/breadcrumb.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/breadcrumb.md index 9143e7612..0012f9748 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/breadcrumb.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/breadcrumb.md @@ -54,8 +54,15 @@ $breadcrumb-divider: quote(">"); It's also possible to use an **embedded SVG icon**. Apply it via our CSS custom property, or use the Sass variable. + +{{< callout info >}} +### Using embedded SVG + +Inlining SVG as data URI requires to URL escape a few characters, most notably `<`, `>` and `#`. That's why the `$breadcrumb-divider` variable is passed through our [`escape-svg()` Sass function]({{< docsref "/customize/sass#escape-svg" >}}). When using the CSS custom property, you need to URL escape your SVG on your own. Read [Kevin Weber's explanations on CodePen](https://codepen.io/kevinweber/pen/dXWoRw ) for detailed information on what to escape. +{{< /callout >}} + {{< example >}} -<nav style="--bs-breadcrumb-divider: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='currentColor'/%3E%3C/svg%3E");" aria-label="breadcrumb"> +<nav style="--bs-breadcrumb-divider: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='%236c757d'/%3E%3C/svg%3E");" aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a href="#">Home</a></li> <li class="breadcrumb-item active" aria-current="page">Library</li> @@ -64,7 +71,7 @@ It's also possible to use an **embedded SVG icon**. Apply it via our CSS custom {{< /example >}} ```scss -$breadcrumb-divider: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='currentColor'/%3E%3C/svg%3E"); +$breadcrumb-divider: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8'><path d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='#{$breadcrumb-divider-color}'/></svg>"); ``` You can also remove the divider setting `--bs-breadcrumb-divider: '';` (empty strings in CSS custom properties counts as a value), or setting the Sass variable to `$breadcrumb-divider: none;`. @@ -87,10 +94,18 @@ $breadcrumb-divider: none; Since breadcrumbs provide a navigation, it's a good idea to add a meaningful label such as `aria-label="breadcrumb"` to describe the type of navigation provided in the `<nav>` element, as well as applying an `aria-current="page"` to the last item of the set to indicate that it represents the current page. -For more information, see the [WAI-ARIA Authoring Practices for the breadcrumb pattern](https://www.w3.org/TR/wai-aria-practices/#breadcrumb). +For more information, see the [ARIA Authoring Practices Guide breadcrumb pattern](https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/). -## Sass +## CSS ### Variables +{{< added-in "5.2.0" >}} + +As part of Bootstrap's evolving CSS variables approach, breadcrumbs now use local CSS variables on `.breadcrumb` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +{{< scss-docs name="breadcrumb-css-vars" file="scss/_breadcrumb.scss" >}} + +### Sass variables + {{< scss-docs name="breadcrumb-variables" file="scss/_variables.scss" >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/button-group.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/button-group.md index 184ca4973..8f7d2d6a9 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/button-group.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/button-group.md @@ -143,31 +143,25 @@ Feel free to mix input groups with button groups in your toolbars. Similar to th Instead of applying button sizing classes to every button in a group, just add `.btn-group-*` to each `.btn-group`, including each one when nesting multiple groups. -<div class="bd-example"> - <div class="btn-group btn-group-lg" role="group" aria-label="Large button group"> - <button type="button" class="btn btn-outline-dark">Left</button> - <button type="button" class="btn btn-outline-dark">Middle</button> - <button type="button" class="btn btn-outline-dark">Right</button> - </div> - <br> - <div class="btn-group" role="group" aria-label="Default button group"> - <button type="button" class="btn btn-outline-dark">Left</button> - <button type="button" class="btn btn-outline-dark">Middle</button> - <button type="button" class="btn btn-outline-dark">Right</button> - </div> - <br> - <div class="btn-group btn-group-sm" role="group" aria-label="Small button group"> - <button type="button" class="btn btn-outline-dark">Left</button> - <button type="button" class="btn btn-outline-dark">Middle</button> - <button type="button" class="btn btn-outline-dark">Right</button> - </div> +{{< example >}} +<div class="btn-group btn-group-lg" role="group" aria-label="Large button group"> + <button type="button" class="btn btn-outline-dark">Left</button> + <button type="button" class="btn btn-outline-dark">Middle</button> + <button type="button" class="btn btn-outline-dark">Right</button> </div> - -```html -<div class="btn-group btn-group-lg" role="group" aria-label="...">...</div> -<div class="btn-group" role="group" aria-label="...">...</div> -<div class="btn-group btn-group-sm" role="group" aria-label="...">...</div> -``` +<br> +<div class="btn-group" role="group" aria-label="Default button group"> + <button type="button" class="btn btn-outline-dark">Left</button> + <button type="button" class="btn btn-outline-dark">Middle</button> + <button type="button" class="btn btn-outline-dark">Right</button> +</div> +<br> +<div class="btn-group btn-group-sm" role="group" aria-label="Small button group"> + <button type="button" class="btn btn-outline-dark">Left</button> + <button type="button" class="btn btn-outline-dark">Middle</button> + <button type="button" class="btn btn-outline-dark">Right</button> +</div> +{{< /example >}} ## Nesting @@ -179,10 +173,10 @@ Place a `.btn-group` within another `.btn-group` when you want dropdown menus mi <button type="button" class="btn btn-primary">2</button> <div class="btn-group" role="group"> - <button id="btnGroupDrop1" type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> + <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown </button> - <ul class="dropdown-menu" aria-labelledby="btnGroupDrop1"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Dropdown link</a></li> <li><a class="dropdown-item" href="#">Dropdown link</a></li> </ul> @@ -194,75 +188,69 @@ Place a `.btn-group` within another `.btn-group` when you want dropdown menus mi Make a set of buttons appear vertically stacked rather than horizontally. **Split button dropdowns are not supported here.** -<div class="bd-example"> - <div class="btn-group-vertical" role="group" aria-label="Vertical button group"> - <button type="button" class="btn btn-dark">Button</button> - <button type="button" class="btn btn-dark">Button</button> - <button type="button" class="btn btn-dark">Button</button> - <button type="button" class="btn btn-dark">Button</button> - <button type="button" class="btn btn-dark">Button</button> - <button type="button" class="btn btn-dark">Button</button> - </div> +{{< example >}} +<div class="btn-group-vertical" role="group" aria-label="Vertical button group"> + <button type="button" class="btn btn-dark">Button</button> + <button type="button" class="btn btn-dark">Button</button> + <button type="button" class="btn btn-dark">Button</button> + <button type="button" class="btn btn-dark">Button</button> + <button type="button" class="btn btn-dark">Button</button> + <button type="button" class="btn btn-dark">Button</button> </div> +{{< /example >}} -<div class="bd-example"> - <div class="btn-group-vertical" role="group" aria-label="Vertical button group"> - <button type="button" class="btn btn-primary">Button</button> - <button type="button" class="btn btn-primary">Button</button> - <div class="btn-group" role="group"> - <button id="btnGroupVerticalDrop1" type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> - Dropdown - </button> - <ul class="dropdown-menu" aria-labelledby="btnGroupVerticalDrop1"> - <li><a class="dropdown-item" href="#">Dropdown link</a></li> - <li><a class="dropdown-item" href="#">Dropdown link</a></li> - </ul> - </div> - <button type="button" class="btn btn-primary">Button</button> - <button type="button" class="btn btn-primary">Button</button> - <div class="btn-group" role="group"> - <button id="btnGroupVerticalDrop2" type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> - Dropdown - </button> - <ul class="dropdown-menu" aria-labelledby="btnGroupVerticalDrop2"> - <li><a class="dropdown-item" href="#">Dropdown link</a></li> - <li><a class="dropdown-item" href="#">Dropdown link</a></li> - </ul> - </div> - <div class="btn-group" role="group"> - <button id="btnGroupVerticalDrop3" type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> - Dropdown - </button> - <ul class="dropdown-menu" aria-labelledby="btnGroupVerticalDrop3"> - <li><a class="dropdown-item" href="#">Dropdown link</a></li> - <li><a class="dropdown-item" href="#">Dropdown link</a></li> - </ul> - </div> - <div class="btn-group" role="group"> - <button id="btnGroupVerticalDrop4" type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> - Dropdown - </button> - <ul class="dropdown-menu" aria-labelledby="btnGroupVerticalDrop4"> - <li><a class="dropdown-item" href="#">Dropdown link</a></li> - <li><a class="dropdown-item" href="#">Dropdown link</a></li> - </ul> - </div> +{{< example >}} +<div class="btn-group-vertical" role="group" aria-label="Vertical button group"> + <button type="button" class="btn btn-primary">Button</button> + <button type="button" class="btn btn-primary">Button</button> + <div class="btn-group" role="group"> + <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> + Dropdown + </button> + <ul class="dropdown-menu"> + <li><a class="dropdown-item" href="#">Dropdown link</a></li> + <li><a class="dropdown-item" href="#">Dropdown link</a></li> + </ul> </div> -</div> - -<div class="bd-example"> - <div class="btn-group-vertical" role="group" aria-label="Vertical radio toggle button group"> - <input type="radio" class="btn-check" name="vbtn-radio" id="vbtn-radio1" autocomplete="off" checked> - <label class="btn btn-outline-danger" for="vbtn-radio1">Radio 1</label> - <input type="radio" class="btn-check" name="vbtn-radio" id="vbtn-radio2" autocomplete="off"> - <label class="btn btn-outline-danger" for="vbtn-radio2">Radio 2</label> - <input type="radio" class="btn-check" name="vbtn-radio" id="vbtn-radio3" autocomplete="off"> - <label class="btn btn-outline-danger" for="vbtn-radio3">Radio 3</label> + <button type="button" class="btn btn-primary">Button</button> + <button type="button" class="btn btn-primary">Button</button> + <div class="btn-group" role="group"> + <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> + Dropdown + </button> + <ul class="dropdown-menu"> + <li><a class="dropdown-item" href="#">Dropdown link</a></li> + <li><a class="dropdown-item" href="#">Dropdown link</a></li> + </ul> + </div> + <div class="btn-group" role="group"> + <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> + Dropdown + </button> + <ul class="dropdown-menu"> + <li><a class="dropdown-item" href="#">Dropdown link</a></li> + <li><a class="dropdown-item" href="#">Dropdown link</a></li> + </ul> + </div> + <div class="btn-group" role="group"> + <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> + Dropdown + </button> + <ul class="dropdown-menu"> + <li><a class="dropdown-item" href="#">Dropdown link</a></li> + <li><a class="dropdown-item" href="#">Dropdown link</a></li> + </ul> </div> </div> +{{< /example >}} -```html -<div class="btn-group-vertical"> - ... +{{< example >}} +<div class="btn-group-vertical" role="group" aria-label="Vertical radio toggle button group"> + <input type="radio" class="btn-check" name="vbtn-radio" id="vbtn-radio1" autocomplete="off" checked> + <label class="btn btn-outline-danger" for="vbtn-radio1">Radio 1</label> + <input type="radio" class="btn-check" name="vbtn-radio" id="vbtn-radio2" autocomplete="off"> + <label class="btn btn-outline-danger" for="vbtn-radio2">Radio 2</label> + <input type="radio" class="btn-check" name="vbtn-radio" id="vbtn-radio3" autocomplete="off"> + <label class="btn btn-outline-danger" for="vbtn-radio3">Radio 3</label> </div> -``` +{{< /example >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/buttons.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/buttons.md index 1f279ffd7..246641529 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/buttons.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/buttons.md @@ -72,13 +72,24 @@ Fancy larger or smaller buttons? Add `.btn-lg` or `.btn-sm` for additional sizes <button type="button" class="btn btn-secondary btn-sm">Small button</button> {{< /example >}} +You can even roll your own custom sizing with CSS variables: + +{{< example >}} +<button type="button" class="btn btn-primary" + style="--bs-btn-padding-y: .25rem; --bs-btn-padding-x: .5rem; --bs-btn-font-size: .75rem;"> + Custom button +</button> +{{< /example >}} + ## Disabled state Make buttons look inactive by adding the `disabled` boolean attribute to any `<button>` element. Disabled buttons have `pointer-events: none` applied to, preventing hover and active states from triggering. {{< example >}} -<button type="button" class="btn btn-lg btn-primary" disabled>Primary button</button> -<button type="button" class="btn btn-secondary btn-lg" disabled>Button</button> +<button type="button" class="btn btn-primary" disabled>Primary button</button> +<button type="button" class="btn btn-secondary" disabled>Button</button> +<button type="button" class="btn btn-outline-primary" disabled>Primary button</button> +<button type="button" class="btn btn-outline-secondary" disabled>Button</button> {{< /example >}} Disabled buttons using the `<a>` element behave a bit different: @@ -89,8 +100,8 @@ Disabled buttons using the `<a>` element behave a bit different: - Disabled buttons using `<a>` *should not* include the `href` attribute. {{< example >}} -<a class="btn btn-primary btn-lg disabled" role="button" aria-disabled="true">Primary link</a> -<a class="btn btn-secondary btn-lg disabled" role="button" aria-disabled="true">Link</a> +<a class="btn btn-primary disabled" role="button" aria-disabled="true">Primary link</a> +<a class="btn btn-secondary disabled" role="button" aria-disabled="true">Link</a> {{< /example >}} ### Link functionality caveat @@ -98,8 +109,8 @@ Disabled buttons using the `<a>` element behave a bit different: To cover cases where you have to keep the `href` attribute on a disabled link, the `.disabled` class uses `pointer-events: none` to try to disable the link functionality of `<a>`s. Note that this CSS property is not yet standardized for HTML, but all modern browsers support it. In addition, even in browsers that do support `pointer-events: none`, keyboard navigation remains unaffected, meaning that sighted keyboard users and users of assistive technologies will still be able to activate these links. So to be safe, in addition to `aria-disabled="true"`, also include a `tabindex="-1"` attribute on these links to prevent them from receiving keyboard focus, and use custom JavaScript to disable their functionality altogether. {{< example >}} -<a href="#" class="btn btn-primary btn-lg disabled" tabindex="-1" role="button" aria-disabled="true">Primary link</a> -<a href="#" class="btn btn-secondary btn-lg disabled" tabindex="-1" role="button" aria-disabled="true">Link</a> +<a href="#" class="btn btn-primary disabled" tabindex="-1" role="button" aria-disabled="true">Primary link</a> +<a href="#" class="btn btn-secondary disabled" tabindex="-1" role="button" aria-disabled="true">Link</a> {{< /example >}} ## Block buttons @@ -153,9 +164,9 @@ Visually, these toggle buttons are identical to the [checkbox toggle buttons]({{ Add `data-bs-toggle="button"` to toggle a button's `active` state. If you're pre-toggling a button, you must manually add the `.active` class **and** `aria-pressed="true"` to ensure that it is conveyed appropriately to assistive technologies. {{< example >}} -<button type="button" class="btn btn-primary" data-bs-toggle="button" autocomplete="off">Toggle button</button> -<button type="button" class="btn btn-primary active" data-bs-toggle="button" autocomplete="off" aria-pressed="true">Active toggle button</button> -<button type="button" class="btn btn-primary" disabled data-bs-toggle="button" autocomplete="off">Disabled toggle button</button> +<button type="button" class="btn btn-primary" data-bs-toggle="button">Toggle button</button> +<button type="button" class="btn btn-primary active" data-bs-toggle="button" aria-pressed="true">Active toggle button</button> +<button type="button" class="btn btn-primary" disabled data-bs-toggle="button">Disabled toggle button</button> {{< /example >}} {{< example >}} @@ -169,71 +180,52 @@ Add `data-bs-toggle="button"` to toggle a button's `active` state. If you're pre You can create a button instance with the button constructor, for example: ```js -var button = document.getElementById('myButton') -var bsButton = new bootstrap.Button(button) +const bsButton = new bootstrap.Button('#myButton') ``` -<table class="table"> - <thead> - <tr> - <th>Method</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td> - <code>toggle</code> - </td> - <td> - Toggles push state. Gives the button the appearance that it has been activated. - </td> - </tr> - <tr> - <td> - <code>dispose</code> - </td> - <td> - Destroys an element's button. (Removes stored data on the DOM element) - </td> - </tr> - <tr> - <td> - <code>getInstance</code> - </td> - <td> - Static method which allows you to get the button instance associated to a DOM element, you can use it like this: <code>bootstrap.Button.getInstance(element)</code> - </td> - </tr> - <tr> - <td> - <code>getOrCreateInstance</code> - </td> - <td> - Static method which returns a button instance associated to a DOM element or create a new one in case it wasn't initialized. - You can use it like this: <code>bootstrap.Button.getOrCreateInstance(element)</code> - </td> - </tr> - </tbody> -</table> +{{< bs-table "table" >}} +| Method | Description | +| --- | --- | +| `dispose` | Destroys an element's button. (Removes stored data on the DOM element) | +| `getInstance` | Static method which allows you to get the button instance associated to a DOM element, you can use it like this: `bootstrap.Button.getInstance(element)`| +| `getOrCreateInstance` | Static method which returns a button instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: `bootstrap.Button.getOrCreateInstance(element)` | +| `toggle` | Toggles push state. Gives the button the appearance that it has been activated. | +{{< /bs-table >}} For example, to toggle all buttons ```js -var buttons = document.querySelectorAll('.btn') -buttons.forEach(function (button) { - var button = new bootstrap.Button(button) +document.querySelectorAll('.btn').forEach(buttonElement => { + const button = bootstrap.Button.getOrCreateInstance(buttonElement) button.toggle() }) ``` -## Sass +## CSS ### Variables +{{< added-in "5.2.0" >}} + +As part of Bootstrap's evolving CSS variables approach, buttons now use local CSS variables on `.btn` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +{{< scss-docs name="btn-css-vars" file="scss/_buttons.scss" >}} + +Each `.btn-*` modifier class updates the appropriate CSS variables to minimize additional CSS rules with our `button-variant()`, `button-outline-variant()`, and `button-size()` mixins. + +Here's an example of building a custom `.btn-*` modifier class like we do for the buttons unique to our docs by reassigning Bootstrap's CSS variables with a mixture of our own CSS and Sass variables. + +<div class="bd-example"> + <button type="button" class="btn btn-bd-primary">Custom button</button> +</div> + +{{< scss-docs name="btn-css-vars-example" file="site/assets/scss/_buttons.scss" >}} + +### Sass variables + {{< scss-docs name="btn-variables" file="scss/_variables.scss" >}} -### Mixins +### Sass mixins There are three mixins for buttons: button and button outline variant mixins (both based on `$theme-colors`), plus a button size mixin. @@ -243,7 +235,7 @@ There are three mixins for buttons: button and button outline variant mixins (bo {{< scss-docs name="btn-size-mixin" file="scss/mixins/_buttons.scss" >}} -### Loops +### Sass loops Button variants (for regular and outline buttons) use their respective mixins with our `$theme-colors` map to generate the modifier classes in `scss/_buttons.scss`. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/card.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/card.md index 3effb21d0..78c7cd3f3 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/card.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/card.md @@ -376,7 +376,7 @@ Similar to headers and footers, cards can include top and bottom "image caps"— Turn an image into a card background and overlay your card's text. Depending on the image, you may or may not need additional styles or utilities. {{< example >}} -<div class="card bg-dark text-white"> +<div class="card text-bg-dark"> {{< placeholder width="100%" height="270" class="bd-placeholder-img-lg card-img" text="Card image" >}} <div class="card-img-overlay"> <h5 class="card-title">Card title</h5> @@ -417,12 +417,14 @@ Cards include various options for customizing their backgrounds, borders, and co ### Background and color -Use [text color]({{< docsref "/utilities/colors" >}}) and [background utilities]({{< docsref "/utilities/background" >}}) to change the appearance of a card. +{{< added-in "5.2.0" >}} + +Set a `background-color` with contrasting foreground `color` with [our `.text-bg-{color}` helpers]({{< docsref "helpers/color-background" >}}). Previously it was required to manually pair your choice of [`.text-{color}`]({{< docsref "/utilities/colors" >}}) and [`.bg-{color}`]({{< docsref "/utilities/background" >}}) utilities for styling, which you still may use if you prefer. {{< example >}} {{< card.inline >}} {{- range (index $.Site.Data "theme-colors") }} -<div class="card{{ if .contrast_color }} text-{{ .contrast_color }}{{ else }} text-white{{ end }} bg-{{ .name }} mb-3" style="max-width: 18rem;"> +<div class="card text-bg-{{ .name }} mb-3" style="max-width: 18rem;"> <div class="card-header">Header</div> <div class="card-body"> <h5 class="card-title">{{ .name | title }} card title</h5> @@ -722,8 +724,16 @@ Just like with card groups, card footers will automatically line up. In `v4` we used a CSS-only technique to mimic the behavior of [Masonry](https://masonry.desandro.com/)-like columns, but this technique came with lots of unpleasant [side effects](https://github.com/twbs/bootstrap/pull/28922). If you want to have this type of layout in `v5`, you can just make use of Masonry plugin. **Masonry is not included in Bootstrap**, but we've made a [demo example]({{< docsref "/examples/masonry" >}}) to help you get started. -## Sass +## CSS ### Variables +{{< added-in "5.2.0" >}} + +As part of Bootstrap's evolving CSS variables approach, cards now use local CSS variables on `.card` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +{{< scss-docs name="card-css-vars" file="scss/_card.scss" >}} + +### Sass variables + {{< scss-docs name="card-variables" file="scss/_variables.scss" >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/carousel.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/carousel.md index 5a060f26f..fee28995b 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/carousel.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/carousel.md @@ -77,7 +77,7 @@ Adding in the previous and next controls. We recommend using `<button>` elements You can also add the indicators to the carousel, alongside the controls, too. {{< example >}} -<div id="carouselExampleIndicators" class="carousel slide" data-bs-ride="carousel"> +<div id="carouselExampleIndicators" class="carousel slide" data-bs-ride="true"> <div class="carousel-indicators"> <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button> <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button> @@ -110,7 +110,7 @@ You can also add the indicators to the carousel, alongside the controls, too. Add captions to your slides easily with the `.carousel-caption` element within any `.carousel-item`. They can be easily hidden on smaller viewports, as shown below, with optional [display utilities]({{< docsref "/utilities/display" >}}). We hide them initially with `.d-none` and bring them back on medium-sized devices with `.d-md-block`. {{< example >}} -<div id="carouselExampleCaptions" class="carousel slide" data-bs-ride="carousel"> +<div id="carouselExampleCaptions" class="carousel slide" data-bs-ride="false"> <div class="carousel-indicators"> <button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button> <button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="1" aria-label="Slide 2"></button> @@ -152,7 +152,7 @@ Add captions to your slides easily with the `.carousel-caption` element within a ### Crossfade -Add `.carousel-fade` to your carousel to animate slides with a fade transition instead of a slide. +Add `.carousel-fade` to your carousel to animate slides with a fade transition instead of a slide. Depending on your carousel content (e.g., text only slides), you may want to add `.bg-body` or some custom CSS to the `.carousel-item`s for proper crossfading. {{< example >}} <div id="carouselExampleFade" class="carousel slide carousel-fade" data-bs-ride="carousel"> @@ -208,10 +208,10 @@ Add `data-bs-interval=""` to a `.carousel-item` to change the amount of time to ### Disable touch swiping -Carousels support swiping left/right on touchscreen devices to move between slides. This can be disabled using the `data-bs-touch` attribute. The example below also does not include the `data-bs-ride` attribute and has `data-bs-interval="false"` so it doesn't autoplay. +Carousels support swiping left/right on touchscreen devices to move between slides. This can be disabled using the `data-bs-touch` attribute. The example below also does not include the `data-bs-ride` attribute so it doesn't autoplay. {{< example >}} -<div id="carouselExampleControlsNoTouching" class="carousel slide" data-bs-touch="false" data-bs-interval="false"> +<div id="carouselExampleControlsNoTouching" class="carousel slide" data-bs-touch="false"> <div class="carousel-inner"> <div class="carousel-item active"> {{< placeholder width="800" height="400" class="bd-placeholder-img-lg d-block w-100" color="#555" background="#777" text="First slide" >}} @@ -302,63 +302,25 @@ The `data-bs-ride="carousel"` attribute is used to mark a carousel as animating Call carousel manually with: ```js -var myCarousel = document.querySelector('#myCarousel') -var carousel = new bootstrap.Carousel(myCarousel) +const carousel = new bootstrap.Carousel('#myCarousel') ``` ### Options -Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-bs-`, as in `data-bs-interval=""`. - -<table class="table"> - <thead> - <tr> - <th style="width: 100px;">Name</th> - <th style="width: 50px;">Type</th> - <th style="width: 50px;">Default</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>interval</code></td> - <td>number</td> - <td><code>5000</code></td> - <td>The amount of time to delay between automatically cycling an item. If <code>false</code>, carousel will not automatically cycle.</td> - </tr> - <tr> - <td><code>keyboard</code></td> - <td>boolean</td> - <td><code>true</code></td> - <td>Whether the carousel should react to keyboard events.</td> - </tr> - <tr> - <td><code>pause</code></td> - <td>string | boolean</td> - <td><code>'hover'</code></td> - <td><p>If set to <code>'hover'</code>, pauses the cycling of the carousel on <code>mouseenter</code> and resumes the cycling of the carousel on <code>mouseleave</code>. If set to <code>false</code>, hovering over the carousel won't pause it.</p> - <p>On touch-enabled devices, when set to <code>'hover'</code>, cycling will pause on <code>touchend</code> (once the user finished interacting with the carousel) for two intervals, before automatically resuming. Note that this is in addition to the above mouse behavior.</p></td> - </tr> - <tr> - <td><code>ride</code></td> - <td>string | boolean</td> - <td><code>false</code></td> - <td>Autoplays the carousel after the user manually cycles the first item. If set to <code>'carousel'</code>, autoplays the carousel on load.</td> - </tr> - <tr> - <td><code>wrap</code></td> - <td>boolean</td> - <td><code>true</code></td> - <td>Whether the carousel should cycle continuously or have hard stops.</td> - </tr> - <tr> - <td><code>touch</code></td> - <td>boolean</td> - <td><code>true</code></td> - <td>Whether the carousel should support left/right swipe interactions on touchscreen devices.</td> - </tr> - </tbody> -</table> +{{< markdown >}} +{{< partial "js-data-attributes.md" >}} +{{< /markdown >}} + +{{< bs-table >}} +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| `interval` | number | `5000` | The amount of time to delay between automatically cycling an item. | +| `keyboard` | boolean | `true` | Whether the carousel should react to keyboard events. | +| `pause` | string, boolean | `"hover"` | If set to `"hover"`, pauses the cycling of the carousel on `mouseenter` and resumes the cycling of the carousel on `mouseleave`. If set to `false`, hovering over the carousel won't pause it. On touch-enabled devices, when set to `"hover"`, cycling will pause on `touchend` (once the user finished interacting with the carousel) for two intervals, before automatically resuming. This is in addition to the mouse behavior. | +| `ride` | string, boolean | `false` | If set to `true`, autoplays the carousel after the user manually cycles the first item. If set to `"carousel"`, autoplays the carousel on load. | +| `touch` | boolean | `true` | Whether the carousel should support left/right swipe interactions on touchscreen devices. | +| `wrap` | boolean | `true` | Whether the carousel should cycle continuously or have hard stops. | +{{< /bs-table >}} ### Methods @@ -369,68 +331,26 @@ Options can be passed via data attributes or JavaScript. For data attributes, ap You can create a carousel instance with the carousel constructor, for example, to initialize with additional options and start cycling through items: ```js -var myCarousel = document.querySelector('#myCarousel') -var carousel = new bootstrap.Carousel(myCarousel, { +const myCarouselElement = document.querySelector('#myCarousel') +const carousel = new bootstrap.Carousel(myCarouselElement, { interval: 2000, wrap: false }) ``` -<table class="table"> - <thead> - <tr> - <th>Method</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>cycle</code></td> - <td>Cycles through the carousel items from left to right.</td> - </tr> - <tr> - <td><code>pause</code></td> - <td>Stops the carousel from cycling through items.</td> - </tr> - <tr> - <td><code>prev</code></td> - <td>Cycles to the previous item. <strong>Returns to the caller before the previous item has been shown</strong> (e.g., before the <code>slid.bs.carousel</code> event occurs).</td> - </tr> - <tr> - <td><code>next</code></td> - <td>Cycles to the next item. <strong>Returns to the caller before the next item has been shown</strong> (e.g., before the <code>slid.bs.carousel</code> event occurs).</td> - </tr> - <tr> - <td><code>nextWhenVisible</code></td> - <td>Don't cycle carousel to next when the page isn't visible or the carousel or its parent isn't visible. <strong>Returns to the caller before the target item has been shown</strong> - </tr> - <tr> - <td><code>to</code></td> - <td>Cycles the carousel to a particular frame (0 based, similar to an array). <strong>Returns to the caller before the target item has been shown</strong> (e.g., before the <code>slid.bs.carousel</code> event occurs).</td> - </tr> - <tr> - <td><code>dispose</code></td> - <td>Destroys an element's carousel. (Removes stored data on the DOM element)</td> - </tr> - <tr> - <td> - <code>getInstance</code> - </td> - <td> - Static method which allows you to get the carousel instance associated to a DOM element, you can use it like this: <code>bootstrap.Carousel.getInstance(element)</code> - </td> - </tr> - <tr> - <td> - <code>getOrCreateInstance</code> - </td> - <td> - Static method which returns a carousel instance associated to a DOM element or create a new one in case it wasn't initialized. - You can use it like this: <code>bootstrap.Carousel.getOrCreateInstance(element)</code> - </td> - </tr> - </tbody> -</table> +{{< bs-table >}} +| Method | Description | +| --- | --- | +| `cycle` | Cycles through the carousel items from left to right. | +| `dispose` | Destroys an element's carousel. (Removes stored data on the DOM element) | +| `getInstance` | Static method which allows you to get the carousel instance associated to a DOM element, you can use it like this: `bootstrap.Carousel.getInstance(element)` | +| `getOrCreateInstance` | Static method which returns a carousel instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: `bootstrap.Carousel.getOrCreateInstance(element)` | +| `next` | Cycles to the next item. **Returns to the caller before the next item has been shown** (e.g., before the `slid.bs.carousel` event occurs). | +| `nextWhenVisible` | Don't cycle carousel to next when the page isn't visible or the carousel or its parent isn't visible. **Returns to the caller before the target item has been shown** | +| `pause` | Stops the carousel from cycling through items. | +| `prev` | Cycles to the previous item. **Returns to the caller before the previous item has been shown** (e.g., before the `slid.bs.carousel` event occurs). | +| `to` | Cycles the carousel to a particular frame (0 based, similar to an array). **Returns to the caller before the target item has been shown** (e.g., before the `slid.bs.carousel` event occurs). | +{{< /bs-table >}} ### Events @@ -443,29 +363,17 @@ Bootstrap's carousel class exposes two events for hooking into carousel function All carousel events are fired at the carousel itself (i.e. at the `<div class="carousel">`). -<table class="table"> - <thead> - <tr> - <th style="width: 150px;">Event type</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>slide.bs.carousel</code></td> - <td>Fires immediately when the <code>slide</code> instance method is invoked.</td> - </tr> - <tr> - <td><code>slid.bs.carousel</code></td> - <td>Fired when the carousel has completed its slide transition.</td> - </tr> - </tbody> -</table> +{{< bs-table >}} +| Event type | Description | +| --- | --- | +| `slid.bs.carousel` | Fired when the carousel has completed its slide transition. | +| `slide.bs.carousel` | Fires immediately when the `slide` instance method is invoked. | +{{< /bs-table >}} ```js -var myCarousel = document.getElementById('myCarousel') +const myCarousel = document.getElementById('myCarousel') -myCarousel.addEventListener('slide.bs.carousel', function () { +myCarousel.addEventListener('slide.bs.carousel', event => { // do something... }) ``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/close-button.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/close-button.md index f4a3ed071..f4a3ed071 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/close-button.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/close-button.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/collapse.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/collapse.md index 1e1b58c29..8d775e95d 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/collapse.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/collapse.md @@ -98,7 +98,7 @@ Be sure to add `aria-expanded` to the control element. This attribute explicitly If your control element is targeting a single collapsible element – i.e. the `data-bs-target` attribute is pointing to an `id` selector – you should add the `aria-controls` attribute to the control element, containing the `id` of the collapsible element. Modern screen readers and similar assistive technologies make use of this attribute to provide users with additional shortcuts to navigate directly to the collapsible element itself. -Note that Bootstrap's current implementation does not cover the various *optional* keyboard interactions described in the [WAI-ARIA Authoring Practices 1.1 accordion pattern](https://www.w3.org/TR/wai-aria-practices-1.1/#accordion) - you will need to include these yourself with custom JavaScript. +Note that Bootstrap's current implementation does not cover the various *optional* keyboard interactions described in the [ARIA Authoring Practices Guide accordion pattern](https://www.w3.org/WAI/ARIA/apg/patterns/accordion/) - you will need to include these yourself with custom JavaScript. ## Sass @@ -133,40 +133,22 @@ To add accordion-like group management to a collapsible area, add the data attri Enable manually with: ```js -var collapseElementList = [].slice.call(document.querySelectorAll('.collapse')) -var collapseList = collapseElementList.map(function (collapseEl) { - return new bootstrap.Collapse(collapseEl) -}) +const collapseElementList = document.querySelectorAll('.collapse') +const collapseList = [...collapseElementList].map(collapseEl => new bootstrap.Collapse(collapseEl)) ``` ### Options -Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-bs-`, as in `data-bs-parent=""`. - -<table class="table"> - <thead> - <tr> - <th style="width: 100px;">Name</th> - <th style="width: 50px;">Type</th> - <th style="width: 50px;">Default</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>parent</code></td> - <td>selector | jQuery object | DOM element </td> - <td><code>false</code></td> - <td>If parent is provided, then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior - this is dependent on the <code>card</code> class). The attribute has to be set on the target collapsible area.</td> - </tr> - <tr> - <td><code>toggle</code></td> - <td>boolean</td> - <td><code>true</code></td> - <td>Toggles the collapsible element on invocation</td> - </tr> - </tbody> -</table> +{{< markdown >}} +{{< partial "js-data-attributes.md" >}} +{{< /markdown >}} + +{{< bs-table "table" >}} +| Name | Type | Default | Description | +| --- | --- | --- | --- | +`parent` | selector, jQuery object, DOM element | `false` | If parent is provided, then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior - this is dependent on the `card` class). The attribute has to be set on the target collapsible area. | +`toggle` | boolean | `true` | Toggles the collapsible element on invocation | +{{< /bs-table >}} ### Methods @@ -179,90 +161,38 @@ Activates your content as a collapsible element. Accepts an optional options `ob You can create a collapse instance with the constructor, for example: ```js -var myCollapse = document.getElementById('myCollapse') -var bsCollapse = new bootstrap.Collapse(myCollapse, { +const bsCollapse = new bootstrap.Collapse('#myCollapse', { toggle: false }) ``` -<table class="table"> - <thead> - <tr> - <th>Method</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>toggle</code></td> - <td>Toggles a collapsible element to shown or hidden. <strong>Returns to the caller before the collapsible element has actually been shown or hidden</strong> (i.e. before the <code>shown.bs.collapse</code> or <code>hidden.bs.collapse</code> event occurs).</td> - </tr> - <tr> - <td><code>show</code></td> - <td>Shows a collapsible element. <strong>Returns to the caller before the collapsible element has actually been shown</strong> (e.g., before the <code>shown.bs.collapse</code> event occurs). </td> - </tr> - <tr> - <td><code>hide</code></td> - <td>Hides a collapsible element. <strong>Returns to the caller before the collapsible element has actually been hidden</strong> (e.g., before the <code>hidden.bs.collapse</code> event occurs).</td> - </tr> - <tr> - <td><code>dispose</code></td> - <td>Destroys an element's collapse. (Removes stored data on the DOM element)</td> - </tr> - <tr> - <td> - <code>getInstance</code> - </td> - <td> - Static method which allows you to get the collapse instance associated to a DOM element, you can use it like this: <code>bootstrap.Collapse.getInstance(element)</code> - </td> - </tr> - <tr> - <td> - <code>getOrCreateInstance</code> - </td> - <td> - Static method which returns a collapse instance associated to a DOM element or create a new one in case it wasn't initialized. - You can use it like this: <code>bootstrap.Collapse.getOrCreateInstance(element)</code> - </td> - </tr> - </tbody> -</table> +{{< bs-table >}} +| Method | Description | +| --- | --- | +| `dispose` | Destroys an element's collapse. (Removes stored data on the DOM element) | +| `getInstance` | Static method which allows you to get the collapse instance associated to a DOM element, you can use it like this: `bootstrap.Collapse.getInstance(element)` | +| `getOrCreateInstance` | Static method which returns a collapse instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: `bootstrap.Collapse.getOrCreateInstance(element)` | +| `hide` | Hides a collapsible element. **Returns to the caller before the collapsible element has actually been hidden** (e.g., before the `hidden.bs.collapse` event occurs). | +| `show` | Shows a collapsible element. **Returns to the caller before the collapsible element has actually been shown** (e.g., before the `shown.bs.collapse` event occurs). | +| `toggle` | Toggles a collapsible element to shown or hidden. **Returns to the caller before the collapsible element has actually been shown or hidden** (i.e. before the `shown.bs.collapse` or `hidden.bs.collapse` event occurs). | +{{< /bs-table >}} ### Events Bootstrap's collapse class exposes a few events for hooking into collapse functionality. -<table class="table"> - <thead> - <tr> - <th style="width: 150px;">Event type</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>show.bs.collapse</code></td> - <td>This event fires immediately when the <code>show</code> instance method is called.</td> - </tr> - <tr> - <td><code>shown.bs.collapse</code></td> - <td>This event is fired when a collapse element has been made visible to the user (will wait for CSS transitions to complete).</td> - </tr> - <tr> - <td><code>hide.bs.collapse</code></td> - <td>This event is fired immediately when the <code>hide</code> method has been called.</td> - </tr> - <tr> - <td><code>hidden.bs.collapse</code></td> - <td>This event is fired when a collapse element has been hidden from the user (will wait for CSS transitions to complete).</td> - </tr> - </tbody> -</table> +{{< bs-table >}} +| Event type | Description | +| --- | --- | +| `hide.bs.collapse` | This event is fired immediately when the `hide` method has been called. | +| `hidden.bs.collapse` | This event is fired when a collapse element has been hidden from the user (will wait for CSS transitions to complete). | +| `show.bs.collapse` | This event fires immediately when the `show` instance method is called. | +| `shown.bs.collapse` | This event is fired when a collapse element has been made visible to the user (will wait for CSS transitions to complete). | +{{< /bs-table >}} ```js -var myCollapsible = document.getElementById('myCollapsible') -myCollapsible.addEventListener('hidden.bs.collapse', function () { +const myCollapsible = document.getElementById('myCollapsible') +myCollapsible.addEventListener('hidden.bs.collapse', event => { // do something... }) ``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/dropdowns.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/dropdowns.md index 738940fc9..ec7e584b5 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/dropdowns.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/dropdowns.md @@ -14,7 +14,7 @@ Dropdowns are built on a third party library, [Popper](https://popper.js.org/), ## Accessibility -The [<abbr title="Web Accessibility Initiative">WAI</abbr> <abbr title="Accessible Rich Internet Applications">ARIA</abbr>](https://www.w3.org/TR/wai-aria/) standard defines an actual [`role="menu"` widget](https://www.w3.org/WAI/PF/aria/roles#menu), but this is specific to application-like menus which trigger actions or functions. <abbr title="Accessible Rich Internet Applications">ARIA</abbr> menus can only contain menu items, checkbox menu items, radio button menu items, radio button groups, and sub-menus. +The [<abbr title="Web Accessibility Initiative">WAI</abbr> <abbr title="Accessible Rich Internet Applications">ARIA</abbr>](https://www.w3.org/TR/wai-aria/) standard defines an actual [`role="menu"` widget](https://www.w3.org/TR/wai-aria/#menu), but this is specific to application-like menus which trigger actions or functions. <abbr title="Accessible Rich Internet Applications">ARIA</abbr> menus can only contain menu items, checkbox menu items, radio button menu items, radio button groups, and sub-menus. Bootstrap's dropdowns, on the other hand, are designed to be generic and applicable to a variety of situations and markup structures. For instance, it is possible to create dropdowns that contain additional inputs and form controls, such as search fields or login forms. For this reason, Bootstrap does not expect (nor automatically add) any of the `role` and `aria-` attributes required for true <abbr title="Accessible Rich Internet Applications">ARIA</abbr> menus. Authors will have to include these more specific attributes themselves. @@ -30,10 +30,10 @@ Any single `.btn` can be turned into a dropdown toggle with some markup changes. {{< example >}} <div class="dropdown"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown button </button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> @@ -45,11 +45,11 @@ And with `<a>` elements: {{< example >}} <div class="dropdown"> - <a class="btn btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-bs-toggle="dropdown" aria-expanded="false"> + <a class="btn btn-secondary dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown link </a> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuLink"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> @@ -353,10 +353,10 @@ Opt into darker dropdowns to match a dark navbar or custom style by adding `.dro {{< example >}} <div class="dropdown"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton2" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown button </button> - <ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="dropdownMenuButton2"> + <ul class="dropdown-menu dropdown-menu-dark"> <li><a class="dropdown-item active" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> @@ -378,10 +378,10 @@ And putting it to use in a navbar: <div class="collapse navbar-collapse" id="navbarNavDarkDropdown"> <ul class="navbar-nav"> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="navbarDarkDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false"> + <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown </a> - <ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="navbarDarkDropdownMenuLink"> + <ul class="dropdown-menu dropdown-menu-dark"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> @@ -400,6 +400,23 @@ And putting it to use in a navbar: Directions are mirrored when using Bootstrap in RTL, meaning `.dropstart` will appear on the right side. {{< /callout >}} +### Centered + +Make the dropdown menu centered below the toggle with `.dropdown-center` on the parent element. + +{{< example >}} +<div class="dropdown-center"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> + Centered dropdown + </button> + <ul class="dropdown-menu"> + <li><a class="dropdown-item" href="#">Action</a></li> + <li><a class="dropdown-item" href="#">Action two</a></li> + <li><a class="dropdown-item" href="#">Action three</a></li> + </ul> +</div> +{{< /example >}} + ### Dropup Trigger dropdown menus above elements by adding `.dropup` to the parent element. @@ -459,14 +476,31 @@ Trigger dropdown menus above elements by adding `.dropup` to the parent element. </div> ``` -### Dropright +### Dropup centered + +Make the dropup menu centered above the toggle with `.dropup-center` on the parent element. + +{{< example >}} +<div class="dropup-center dropup"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> + Centered dropup + </button> + <ul class="dropdown-menu"> + <li><a class="dropdown-item" href="#">Action</a></li> + <li><a class="dropdown-item" href="#">Action two</a></li> + <li><a class="dropdown-item" href="#">Action three</a></li> + </ul> +</div> +{{< /example >}} + +### Dropend Trigger dropdown menus at the right of the elements by adding `.dropend` to the parent element. <div class="bd-example"> <div class="btn-group dropend"> <button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> - Dropright + Dropend </button> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> @@ -481,7 +515,7 @@ Trigger dropdown menus at the right of the elements by adding `.dropend` to the Split dropend </button> <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false"> - <span class="visually-hidden">Toggle Dropright</span> + <span class="visually-hidden">Toggle Dropend</span> </button> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> @@ -497,7 +531,7 @@ Trigger dropdown menus at the right of the elements by adding `.dropend` to the <!-- Default dropend button --> <div class="btn-group dropend"> <button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> - Dropright + Dropend </button> <ul class="dropdown-menu"> <!-- Dropdown menu links --> @@ -510,7 +544,7 @@ Trigger dropdown menus at the right of the elements by adding `.dropend` to the Split dropend </button> <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false"> - <span class="visually-hidden">Toggle Dropright</span> + <span class="visually-hidden">Toggle Dropend</span> </button> <ul class="dropdown-menu"> <!-- Dropdown menu links --> @@ -518,14 +552,14 @@ Trigger dropdown menus at the right of the elements by adding `.dropend` to the </div> ``` -### Dropleft +### Dropstart Trigger dropdown menus at the left of the elements by adding `.dropstart` to the parent element. <div class="bd-example"> <div class="btn-group dropstart"> <button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> - Dropleft + Dropstart </button> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> @@ -535,19 +569,17 @@ Trigger dropdown menus at the left of the elements by adding `.dropstart` to the <li><a class="dropdown-item" href="#">Separated link</a></li> </ul> </div> - <div class="btn-group"> - <div class="btn-group dropstart" role="group"> - <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false"> - <span class="visually-hidden">Toggle Dropleft</span> - </button> - <ul class="dropdown-menu"> - <li><a class="dropdown-item" href="#">Action</a></li> - <li><a class="dropdown-item" href="#">Another action</a></li> - <li><a class="dropdown-item" href="#">Something else here</a></li> - <li><hr class="dropdown-divider"></li> - <li><a class="dropdown-item" href="#">Separated link</a></li> - </ul> - </div> + <div class="btn-group dropstart"> + <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false"> + <span class="visually-hidden">Toggle Dropstart</span> + </button> + <ul class="dropdown-menu"> + <li><a class="dropdown-item" href="#">Action</a></li> + <li><a class="dropdown-item" href="#">Another action</a></li> + <li><a class="dropdown-item" href="#">Something else here</a></li> + <li><hr class="dropdown-divider"></li> + <li><a class="dropdown-item" href="#">Separated link</a></li> + </ul> <button type="button" class="btn btn-secondary"> Split dropstart </button> @@ -566,15 +598,13 @@ Trigger dropdown menus at the left of the elements by adding `.dropstart` to the </div> <!-- Split dropstart button --> -<div class="btn-group"> - <div class="btn-group dropstart" role="group"> - <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false"> - <span class="visually-hidden">Toggle Dropstart</span> - </button> - <ul class="dropdown-menu"> - <!-- Dropdown menu links --> - </ul> - </div> +<div class="btn-group dropstart"> + <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false"> + <span class="visually-hidden">Toggle Dropstart</span> + </button> + <ul class="dropdown-menu"> + <!-- Dropdown menu links --> + </ul> <button type="button" class="btn btn-secondary"> Split dropstart </button> @@ -587,10 +617,10 @@ You can use `<a>` or `<button>` elements as dropdown items. {{< example >}} <div class="dropdown"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenu2" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown </button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenu2"> + <ul class="dropdown-menu"> <li><button class="dropdown-item" type="button">Action</button></li> <li><button class="dropdown-item" type="button">Another action</button></li> <li><button class="dropdown-item" type="button">Something else here</button></li> @@ -698,10 +728,10 @@ Taking most of the options shown above, here's a small kitchen sink demo of vari {{< example >}} <div class="btn-group"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown </button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Menu item</a></li> <li><a class="dropdown-item" href="#">Menu item</a></li> <li><a class="dropdown-item" href="#">Menu item</a></li> @@ -850,25 +880,30 @@ Put a form within a dropdown menu, or make it into a dropdown menu, and use [mar {{< /example >}} {{< example >}} -<form class="dropdown-menu p-4"> - <div class="mb-3"> - <label for="exampleDropdownFormEmail2" class="form-label">Email address</label> - <input type="email" class="form-control" id="exampleDropdownFormEmail2" placeholder="email@example.com"> - </div> - <div class="mb-3"> - <label for="exampleDropdownFormPassword2" class="form-label">Password</label> - <input type="password" class="form-control" id="exampleDropdownFormPassword2" placeholder="Password"> - </div> - <div class="mb-3"> - <div class="form-check"> - <input type="checkbox" class="form-check-input" id="dropdownCheck2"> - <label class="form-check-label" for="dropdownCheck2"> - Remember me - </label> +<div class="dropdown"> + <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" data-bs-auto-close="outside"> + Dropdown form + </button> + <form class="dropdown-menu p-4"> + <div class="mb-3"> + <label for="exampleDropdownFormEmail2" class="form-label">Email address</label> + <input type="email" class="form-control" id="exampleDropdownFormEmail2" placeholder="email@example.com"> </div> - </div> - <button type="submit" class="btn btn-primary">Sign in</button> -</form> + <div class="mb-3"> + <label for="exampleDropdownFormPassword2" class="form-label">Password</label> + <input type="password" class="form-control" id="exampleDropdownFormPassword2" placeholder="Password"> + </div> + <div class="mb-3"> + <div class="form-check"> + <input type="checkbox" class="form-check-input" id="dropdownCheck2"> + <label class="form-check-label" for="dropdownCheck2"> + Remember me + </label> + </div> + </div> + <button type="submit" class="btn btn-primary">Sign in</button> + </form> +</div> {{< /example >}} ## Dropdown options @@ -878,10 +913,10 @@ Use `data-bs-offset` or `data-bs-reference` to change the location of the dropdo {{< example >}} <div class="d-flex"> <div class="dropdown me-1"> - <button type="button" class="btn btn-secondary dropdown-toggle" id="dropdownMenuOffset" data-bs-toggle="dropdown" aria-expanded="false" data-bs-offset="10,20"> + <button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" data-bs-offset="10,20"> Offset </button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuOffset"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> @@ -889,10 +924,10 @@ Use `data-bs-offset` or `data-bs-reference` to change the location of the dropdo </div> <div class="btn-group"> <button type="button" class="btn btn-secondary">Reference</button> - <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" id="dropdownMenuReference" data-bs-toggle="dropdown" aria-expanded="false" data-bs-reference="parent"> + <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false" data-bs-reference="parent"> <span class="visually-hidden">Toggle Dropdown</span> </button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuReference"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> @@ -909,10 +944,10 @@ By default, the dropdown menu is closed when clicking inside or outside the drop {{< example >}} <div class="btn-group"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="defaultDropdown" data-bs-toggle="dropdown" data-bs-auto-close="true" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-auto-close="true" aria-expanded="false"> Default dropdown </button> - <ul class="dropdown-menu" aria-labelledby="defaultDropdown"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Menu item</a></li> <li><a class="dropdown-item" href="#">Menu item</a></li> <li><a class="dropdown-item" href="#">Menu item</a></li> @@ -920,10 +955,10 @@ By default, the dropdown menu is closed when clicking inside or outside the drop </div> <div class="btn-group"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuClickableOutside" data-bs-toggle="dropdown" data-bs-auto-close="inside" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-auto-close="inside" aria-expanded="false"> Clickable outside </button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuClickableOutside"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Menu item</a></li> <li><a class="dropdown-item" href="#">Menu item</a></li> <li><a class="dropdown-item" href="#">Menu item</a></li> @@ -931,10 +966,10 @@ By default, the dropdown menu is closed when clicking inside or outside the drop </div> <div class="btn-group"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuClickableInside" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false"> Clickable inside </button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuClickableInside"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Menu item</a></li> <li><a class="dropdown-item" href="#">Menu item</a></li> <li><a class="dropdown-item" href="#">Menu item</a></li> @@ -942,10 +977,10 @@ By default, the dropdown menu is closed when clicking inside or outside the drop </div> <div class="btn-group"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuClickable" data-bs-toggle="dropdown" data-bs-auto-close="false" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-auto-close="false" aria-expanded="false"> Manual close </button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuClickable"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Menu item</a></li> <li><a class="dropdown-item" href="#">Menu item</a></li> <li><a class="dropdown-item" href="#">Menu item</a></li> @@ -953,10 +988,22 @@ By default, the dropdown menu is closed when clicking inside or outside the drop </div> {{< /example >}} -## Sass +## CSS ### Variables +{{< added-in "5.2.0" >}} + +As part of Bootstrap's evolving CSS variables approach, dropdowns now use local CSS variables on `.dropdown-menu` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +{{< scss-docs name="dropdown-css-vars" file="scss/_dropdown.scss" >}} + +Customization through CSS variables can be seen on the `.dropdown-menu-dark` class where we override specific values without adding duplicate CSS selectors. + +{{< scss-docs name="dropdown-dark-css-vars" file="scss/_dropdown.scss" >}} + +### Sass variables + Variables for all dropdowns: {{< scss-docs name="dropdown-variables" file="scss/_variables.scss" >}} @@ -989,10 +1036,10 @@ Add `data-bs-toggle="dropdown"` to a link or button to toggle a dropdown. ```html <div class="dropdown"> - <button id="dLabel" type="button" data-bs-toggle="dropdown" aria-expanded="false"> + <button type="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown trigger </button> - <ul class="dropdown-menu" aria-labelledby="dLabel"> + <ul class="dropdown-menu"> ... </ul> </div> @@ -1003,10 +1050,8 @@ Add `data-bs-toggle="dropdown"` to a link or button to toggle a dropdown. Call the dropdowns via JavaScript: ```js -var dropdownElementList = [].slice.call(document.querySelectorAll('.dropdown-toggle')) -var dropdownList = dropdownElementList.map(function (dropdownToggleEl) { - return new bootstrap.Dropdown(dropdownToggleEl) -}) +const dropdownElementList = document.querySelectorAll('.dropdown-toggle') +const dropdownList = [...dropdownElementList].map(dropdownToggleEl => new bootstrap.Dropdown(dropdownToggleEl)) ``` {{< callout info >}} @@ -1017,78 +1062,27 @@ Regardless of whether you call your dropdown via JavaScript or instead use the d ### Options -Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-bs-`, as in `data-bs-offset=""`. Make sure to change the case type of the option name from camelCase to kebab-case when passing the options via data attributes. For example, instead of using `data-bs-autoClose="false"`, use `data-bs-auto-close="false"`. - -<table class="table"> - <thead> - <tr> - <th style="width: 100px;">Name</th> - <th style="width: 100px;">Type</th> - <th style="width: 50px;">Default</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>boundary</code></td> - <td>string | element</td> - <td><code>'clippingParents'</code></td> - <td>Overflow constraint boundary of the dropdown menu (applies only to Popper's preventOverflow modifier). By default it's <code>'clippingParents'</code> and can accept an HTMLElement reference (via JavaScript only). For more information refer to Popper's <a href="https://popper.js.org/docs/v2/utils/detect-overflow/#boundary">detectOverflow docs</a>.</td> - </tr> - <tr> - <td><code>reference</code></td> - <td>string | element | object</td> - <td><code>'toggle'</code></td> - <td>Reference element of the dropdown menu. Accepts the values of <code>'toggle'</code>, <code>'parent'</code>, an HTMLElement reference or an object providing <code>getBoundingClientRect</code>. For more information refer to Popper's <a href="https://popper.js.org/docs/v2/constructors/#createpopper">constructor docs</a> and <a href="https://popper.js.org/docs/v2/virtual-elements/">virtual element docs</a>.</td> - </tr> - <tr> - <td><code>display</code></td> - <td>string</td> - <td><code>'dynamic'</code></td> - <td>By default, we use Popper for dynamic positioning. Disable this with <code>static</code>.</td> - </tr> - <tr> - <td><code>offset</code></td> - <td>array | string | function</td> - <td><code>[0, 2]</code></td> - <td> - <p>Offset of the dropdown relative to its target. You can pass a string in data attributes with comma separated values like: <code>data-bs-offset="10,20"</code></p> - <p>When a function is used to determine the offset, it is called with an object containing the popper placement, the reference, and popper rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: <code>[<a href="https://popper.js.org/docs/v2/modifiers/offset/#skidding-1">skidding</a>, <a href="https://popper.js.org/docs/v2/modifiers/offset/#distance-1">distance</a>]</code>.</p> - <p>For more information refer to Popper's <a href="https://popper.js.org/docs/v2/modifiers/offset/#options">offset docs</a>.</p> - </td> - </tr> - <tr> - <td><code>autoClose</code></td> - <td>boolean | string</td> - <td><code>true</code></td> - <td> - <p>Configure the auto close behavior of the dropdown:</p> - <ul> - <li><code>true</code> - the dropdown will be closed by clicking outside or inside the dropdown menu.</li> - <li><code>false</code> - the dropdown will be closed by clicking the toggle button and manually calling <code>hide</code> or <code>toggle</code> method. (Also will not be closed by pressing <kbd>esc</kbd> key)</li> - <li><code>'inside'</code> - the dropdown will be closed (only) by clicking inside the dropdown menu.</li> - <li><code>'outside'</code> - the dropdown will be closed (only) by clicking outside the dropdown menu.</li> - </ul> - </td> - </tr> - <tr> - <td><code>popperConfig</code></td> - <td>null | object | function</td> - <td><code>null</code></td> - <td> - <p>To change Bootstrap's default Popper config, see <a href="https://popper.js.org/docs/v2/constructors/#options">Popper's configuration</a>.</p> - <p>When a function is used to create the Popper configuration, it's called with an object that contains the Bootstrap's default Popper configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Popper.</p> - </td> - </tr> - </tbody> -</table> +{{< markdown >}} +{{< partial "js-data-attributes.md" >}} +{{< /markdown >}} + +{{< bs-table "table" >}} +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| `autoClose` | boolean, string | `true` | Configure the auto close behavior of the dropdown: <ul class="my-2"><li>`true` - the dropdown will be closed by clicking outside or inside the dropdown menu.</li><li>`false` - the dropdown will be closed by clicking the toggle button and manually calling `hide` or `toggle` method. (Also will not be closed by pressing <kbd>esc</kbd> key)</li><li>`'inside'` - the dropdown will be closed (only) by clicking inside the dropdown menu.</li> <li>`'outside'` - the dropdown will be closed (only) by clicking outside the dropdown menu.</li></ul> Note: the dropdown can always be closed with the <kbd>ESC</kbd> key | +| `boundary` | string, element | `'scrollParent'` | Overflow constraint boundary of the dropdown menu (applies only to Popper's preventOverflow modifier). By default it's `clippingParents` and can accept an HTMLElement reference (via JavaScript only). For more information refer to Popper's [detectOverflow docs](https://popper.js.org/docs/v2/utils/detect-overflow/#boundary). | +| `display` | string | `'dynamic'` | By default, we use Popper for dynamic positioning. Disable this with `static`. | +| `offset` | number, string, function | `[0, 2]` | Offset of the dropdown relative to its target. You can pass a string in data attributes with comma separated values like: `data-bs-offset="10,20"`. When a function is used to determine the offset, it is called with an object containing the popper placement, the reference, and popper rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: [skidding](https://popper.js.org/docs/v2/modifiers/offset/#skidding-1), [distance](https://popper.js.org/docs/v2/modifiers/offset/#distance-1). For more information refer to Popper's [offset docs](https://popper.js.org/docs/v2/modifiers/offset/#options). | +| `popperConfig` | null, object, function | `null` | To change Bootstrap's default Popper config, see [Popper's configuration](https://popper.js.org/docs/v2/constructors/#options). When a function is used to create the Popper configuration, it's called with an object that contains the Bootstrap's default Popper configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Popper. | +| `reference` | string, element | `'toggle'` | Reference element of the dropdown menu. Accepts the values of `'toggle'`, `'parent'`, an HTMLElement reference or an object providing `getBoundingClientRect`. For more information refer to Popper's [constructor docs](https://popper.js.org/docs/v2/constructors/#createpopper) and [virtual element docs](https://popper.js.org/docs/v2/virtual-elements/). | +{{< /bs-table >}} #### Using function with `popperConfig` ```js -var dropdown = new bootstrap.Dropdown(element, { - popperConfig: function (defaultBsPopperConfig) { - // var newPopperConfig = {...} +const dropdown = new bootstrap.Dropdown(element, { + popperConfig(defaultBsPopperConfig) { + // const newPopperConfig = {...} // use defaultBsPopperConfig if needed... // return newPopperConfig } @@ -1097,114 +1091,34 @@ var dropdown = new bootstrap.Dropdown(element, { ### Methods -<table class="table"> - <thead> - <tr> - <th>Method</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>toggle</code></td> - <td> - Toggles the dropdown menu of a given navbar or tabbed navigation. - </td> - </tr> - <tr> - <td><code>show</code></td> - <td> - Shows the dropdown menu of a given navbar or tabbed navigation. - </td> - </tr> - <tr> - <td><code>hide</code></td> - <td> - Hides the dropdown menu of a given navbar or tabbed navigation. - </td> - </tr> - <tr> - <td><code>update</code></td> - <td> - Updates the position of an element's dropdown. - </td> - </tr> - <tr> - <td><code>dispose</code></td> - <td> - Destroys an element's dropdown. (Removes stored data on the DOM element) - </td> - </tr> - <tr> - <td> - <code>getInstance</code> - </td> - <td> - Static method which allows you to get the dropdown instance associated to a DOM element, you can use it like this: <code>bootstrap.Dropdown.getInstance(element)</code> - </td> - </tr> - <tr> - <td> - <code>getOrCreateInstance</code> - </td> - <td> - Static method which returns a dropdown instance associated to a DOM element or create a new one in case it wasn't initialized. - You can use it like this: <code>bootstrap.Dropdown.getOrCreateInstance(element)</code> - </td> - </tr> - </tbody> -</table> +{{< bs-table >}} +| Method | Description | +| --- | --- | +| `dispose` | Destroys an element's dropdown. (Removes stored data on the DOM element) | +| `getInstance` | Static method which allows you to get the dropdown instance associated to a DOM element, you can use it like this: `bootstrap.Dropdown.getInstance(element)` | +| `getOrCreateInstance` | Static method which returns a dropdown instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: `bootstrap.Dropdown.getOrCreateInstance(element)`. | +| `hide` | Hides the dropdown menu of a given navbar or tabbed navigation. | +| `show` | Shows the dropdown menu of a given navbar or tabbed navigation. | +| `toggle` | Toggles the dropdown menu of a given navbar or tabbed navigation. | +| `update` | Updates the position of an element's dropdown. | +{{< /bs-table >}} ### Events All dropdown events are fired at the toggling element and then bubbled up. So you can also add event listeners on the `.dropdown-menu`'s parent element. `hide.bs.dropdown` and `hidden.bs.dropdown` events have a `clickEvent` property (only when the original Event type is `click`) that contains an Event Object for the click event. -<table class="table"> - <thead> - <tr> - <th>Method</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td> - <code>show.bs.dropdown</code> - </td> - <td> - Fires immediately when the show instance method is called. - </td> - </tr> - <tr> - <td> - <code>shown.bs.dropdown</code> - </td> - <td> - Fired when the dropdown has been made visible to the user and CSS transitions have completed. - </td> - </tr> - <tr> - <td> - <code>hide.bs.dropdown</code> - </td> - <td> - Fires immediately when the hide instance method has been called. - </td> - </tr> - <tr> - <td> - <code>hidden.bs.dropdown</code> - </td> - <td> - Fired when the dropdown has finished being hidden from the user and CSS transitions have completed. - </td> - </tr> - </tbody> -</table> +{{< bs-table >}} +| Event type | Description | +| --- | --- | +| `hide.bs.dropdown` | Fires immediately when the `hide` instance method has been called. | +| `hidden.bs.dropdown` | Fired when the dropdown has finished being hidden from the user and CSS transitions have completed. | +| `show.bs.dropdown` | Fires immediately when the `show` instance method is called. | +| `shown.bs.dropdown` | Fired when the dropdown has been made visible to the user and CSS transitions have completed. | +{{< /bs-table >}} ```js -var myDropdown = document.getElementById('myDropdown') -myDropdown.addEventListener('show.bs.dropdown', function () { +const myDropdown = document.getElementById('myDropdown') +myDropdown.addEventListener('show.bs.dropdown', event => { // do something... }) ``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/list-group.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/list-group.md index 71e45245c..563d5b527 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/list-group.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/list-group.md @@ -73,7 +73,7 @@ With `<button>`s, you can also make use of the `disabled` attribute instead of t <button type="button" class="list-group-item list-group-item-action active" aria-current="true"> The current button </button> - <button type="button" class="list-group-item list-group-item-action">A second item</button> + <button type="button" class="list-group-item list-group-item-action">A second button item</button> <button type="button" class="list-group-item list-group-item-action">A third button item</button> <button type="button" class="list-group-item list-group-item-action">A fourth button item</button> <button type="button" class="list-group-item list-group-item-action" disabled>A disabled button item</button> @@ -247,59 +247,68 @@ Place Bootstrap's checkboxes and radios within list group items and customize as {{< example >}} <ul class="list-group"> <li class="list-group-item"> - <input class="form-check-input me-1" type="checkbox" value="" aria-label="..."> - First checkbox + <input class="form-check-input me-1" type="checkbox" value="" id="firstCheckbox"> + <label class="form-check-label" for="firstCheckbox">First checkbox</label> </li> <li class="list-group-item"> - <input class="form-check-input me-1" type="checkbox" value="" aria-label="..."> - Second checkbox + <input class="form-check-input me-1" type="checkbox" value="" id="secondCheckbox"> + <label class="form-check-label" for="secondCheckbox">Second checkbox</label> </li> <li class="list-group-item"> - <input class="form-check-input me-1" type="checkbox" value="" aria-label="..."> - Third checkbox + <input class="form-check-input me-1" type="checkbox" value="" id="thirdCheckbox"> + <label class="form-check-label" for="thirdCheckbox">Third checkbox</label> </li> +</ul> +{{< /example >}} + +{{< example >}} +<ul class="list-group"> <li class="list-group-item"> - <input class="form-check-input me-1" type="checkbox" value="" aria-label="..."> - Fourth checkbox + <input class="form-check-input me-1" type="radio" name="listGroupRadio" value="" id="firstRadio" checked> + <label class="form-check-label" for="firstRadio">First radio</label> </li> <li class="list-group-item"> - <input class="form-check-input me-1" type="checkbox" value="" aria-label="..."> - Fifth checkbox + <input class="form-check-input me-1" type="radio" name="listGroupRadio" value="" id="secondRadio"> + <label class="form-check-label" for="secondRadio">Second radio</label> + </li> + <li class="list-group-item"> + <input class="form-check-input me-1" type="radio" name="listGroupRadio" value="" id="thirdRadio"> + <label class="form-check-label" for="thirdRadio">Third radio</label> </li> </ul> {{< /example >}} -And if you want `<label>`s as the `.list-group-item` for large hit areas, you can do that, too. +You can use `.stretched-link` on `<label>`s to make the whole list group item clickable. {{< example >}} -<div class="list-group"> - <label class="list-group-item"> - <input class="form-check-input me-1" type="checkbox" value=""> - First checkbox - </label> - <label class="list-group-item"> - <input class="form-check-input me-1" type="checkbox" value=""> - Second checkbox - </label> - <label class="list-group-item"> - <input class="form-check-input me-1" type="checkbox" value=""> - Third checkbox - </label> - <label class="list-group-item"> - <input class="form-check-input me-1" type="checkbox" value=""> - Fourth checkbox - </label> - <label class="list-group-item"> - <input class="form-check-input me-1" type="checkbox" value=""> - Fifth checkbox - </label> -</div> +<ul class="list-group"> + <li class="list-group-item"> + <input class="form-check-input me-1" type="checkbox" value="" id="firstCheckboxStretched"> + <label class="form-check-label stretched-link" for="firstCheckboxStretched">First checkbox</label> + </li> + <li class="list-group-item"> + <input class="form-check-input me-1" type="checkbox" value="" id="secondCheckboxStretched"> + <label class="form-check-label stretched-link" for="secondCheckboxStretched">Second checkbox</label> + </li> + <li class="list-group-item"> + <input class="form-check-input me-1" type="checkbox" value="" id="thirdCheckboxStretched"> + <label class="form-check-label stretched-link" for="thirdCheckboxStretched">Third checkbox</label> + </li> +</ul> {{< /example >}} -## Sass +## CSS ### Variables +{{< added-in "5.2.0" >}} + +As part of Bootstrap's evolving CSS variables approach, list groups now use local CSS variables on `.list-group` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +{{< scss-docs name="list-group-css-vars" file="scss/_list-group.scss" >}} + +### Sass variables + {{< scss-docs name="list-group-variables" file="scss/_variables.scss" >}} ### Mixins @@ -397,11 +406,11 @@ You can activate a list group navigation without writing any JavaScript by simpl Enable tabbable list item via JavaScript (each list item needs to be activated individually): ```js -var triggerTabList = [].slice.call(document.querySelectorAll('#myTab a')) -triggerTabList.forEach(function (triggerEl) { - var tabTrigger = new bootstrap.Tab(triggerEl) +const triggerTabList = document.querySelectorAll('#myTab a') +triggerTabList.forEach(triggerEl => { + const tabTrigger = new bootstrap.Tab(triggerEl) - triggerEl.addEventListener('click', function (event) { + triggerEl.addEventListener('click', event => { event.preventDefault() tabTrigger.show() }) @@ -411,10 +420,10 @@ triggerTabList.forEach(function (triggerEl) { You can activate individual list item in several ways: ```js -var triggerEl = document.querySelector('#myTab a[href="#profile"]') +const triggerEl = document.querySelector('#myTab a[href="#profile"]') bootstrap.Tab.getInstance(triggerEl).show() // Select tab by name -var triggerFirstTabEl = document.querySelector('#myTab li:first-child a') +const triggerFirstTabEl = document.querySelector('#myTab li:first-child a') bootstrap.Tab.getInstance(triggerFirstTabEl).show() // Select first tab ``` @@ -453,8 +462,8 @@ Activates a list item element and content container. Tab should have either a `d </div> <script> - var firstTabEl = document.querySelector('#myTab a:last-child') - var firstTab = new bootstrap.Tab(firstTabEl) + const firstTabEl = document.querySelector('#myTab a:last-child') + const firstTab = new bootstrap.Tab(firstTabEl) firstTab.show() </script> @@ -465,10 +474,9 @@ Activates a list item element and content container. Tab should have either a `d Selects the given list item and shows its associated pane. Any other list item that was previously selected becomes unselected and its associated pane is hidden. **Returns to the caller before the tab pane has actually been shown** (for example, before the `shown.bs.tab` event occurs). ```js - var someListItemEl = document.querySelector('#someListItem') - var tab = new bootstrap.Tab(someListItemEl) +const tab = new bootstrap.Tab('#someListItem') - tab.show() +tab.show() ``` #### dispose @@ -480,8 +488,7 @@ Destroys an element's tab. *Static* method which allows you to get the tab instance associated with a DOM element ```js -var triggerEl = document.querySelector('#trigger') -var tab = bootstrap.Tab.getInstance(triggerEl) // Returns a Bootstrap tab instance +const tab = bootstrap.Tab.getInstance('#trigger') // Returns a Bootstrap tab instance ``` #### getOrCreateInstance @@ -489,8 +496,7 @@ var tab = bootstrap.Tab.getInstance(triggerEl) // Returns a Bootstrap tab instan *Static* method which allows you to get the tab instance associated with a DOM element, or create a new one in case it wasn't initialized ```js -var triggerEl = document.querySelector('#trigger') -var tab = bootstrap.Tab.getOrCreateInstance(triggerEl) // Returns a Bootstrap tab instance +const tab = bootstrap.Tab.getOrCreateInstance('#trigger') // Returns a Bootstrap tab instance ``` ### Events @@ -504,39 +510,21 @@ When showing a new tab, the events fire in the following order: If no tab was already active, the `hide.bs.tab` and `hidden.bs.tab` events will not be fired. -<table class="table"> - <thead> - <tr> - <th style="width: 150px;">Event type</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>show.bs.tab</code></td> - <td>This event fires on tab show, but before the new tab has been shown. Use <code>event.target</code> and <code>event.relatedTarget</code> to target the active tab and the previous active tab (if available) respectively.</td> - </tr> - <tr> - <td><code>shown.bs.tab</code></td> - <td>This event fires on tab show after a tab has been shown. Use <code>event.target</code> and <code>event.relatedTarget</code> to target the active tab and the previous active tab (if available) respectively.</td> - </tr> - <tr> - <td><code>hide.bs.tab</code></td> - <td>This event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). Use <code>event.target</code> and <code>event.relatedTarget</code> to target the current active tab and the new soon-to-be-active tab, respectively.</td> - </tr> - <tr> - <td><code>hidden.bs.tab</code></td> - <td>This event fires after a new tab is shown (and thus the previous active tab is hidden). Use <code>event.target</code> and <code>event.relatedTarget</code> to target the previous active tab and the new active tab, respectively.</td> - </tr> - </tbody> -</table> +{{< bs-table >}} +| Event type | Description | +| --- | --- | +| `hide.bs.tab` | This event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). Use `event.target` and `event.relatedTarget` to target the current active tab and the new soon-to-be-active tab, respectively. | +| `hidden.bs.tab` | This event fires after a new tab is shown (and thus the previous active tab is hidden). Use `event.target` and `event.relatedTarget` to target the previous active tab and the new active tab, respectively. | +| `show.bs.tab` | This event fires on tab show, but before the new tab has been shown. Use `event.target` and `event.relatedTarget` to target the active tab and the previous active tab (if available) respectively. | +| `shown.bs.tab` | This event fires on tab show after a tab has been shown. Use `event.target` and `event.relatedTarget` to target the active tab and the previous active tab (if available) respectively. | +{{< /bs-table >}} ```js -var tabElms = document.querySelectorAll('a[data-bs-toggle="list"]') -tabElms.forEach(function(tabElm) { - tabElm.addEventListener('shown.bs.tab', function (event) { +const tabElms = document.querySelectorAll('a[data-bs-toggle="list"]') +tabElms.forEach(tabElm => { + tabElm.addEventListener('shown.bs.tab', event => { event.target // newly activated tab event.relatedTarget // previous active tab }) -} +}) ``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/modal.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/modal.md index 8255a7364..aa6012cb0 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/modal.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/modal.md @@ -18,10 +18,10 @@ Before getting started with Bootstrap's modal component, be sure to read the fol - Due to how HTML5 defines its semantics, [the `autofocus` HTML attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-autofocus) has no effect in Bootstrap modals. To achieve the same effect, use some custom JavaScript: ```js -var myModal = document.getElementById('myModal') -var myInput = document.getElementById('myInput') +const myModal = document.getElementById('myModal') +const myInput = document.getElementById('myInput') -myModal.addEventListener('shown.bs.modal', function () { +myModal.addEventListener('shown.bs.modal', () => { myInput.focus() }) ``` @@ -38,8 +38,8 @@ Keep reading for demos and usage guidelines. Below is a _static_ modal example (meaning its `position` and `display` have been overridden). Included are the modal header, modal body (required for `padding`), and modal footer (optional). We ask that you include modal headers with dismiss actions whenever possible, or provide another explicit dismiss action. -<div class="bd-example bd-example-modal"> - <div class="modal" tabindex="-1"> +<div class="bd-example bg-light"> + <div class="modal position-static d-block" tabindex="-1"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> @@ -90,7 +90,7 @@ Toggle a working modal demo by clicking the button below. It will slide down and <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> - <p>Woohoo, you're reading this text in a modal!</p> + <p>Woo-hoo, you're reading this text in a modal!</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> @@ -134,7 +134,7 @@ Toggle a working modal demo by clicking the button below. It will slide down and ### Static backdrop -When backdrop is set to static, the modal will not close when clicking outside it. Click the button below to try it. +When backdrop is set to static, the modal will not close when clicking outside of it. Click the button below to try it. <div class="modal fade" id="staticBackdropLive" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLiveLabel" aria-hidden="true"> <div class="modal-dialog"> @@ -144,7 +144,7 @@ When backdrop is set to static, the modal will not close when clicking outside i <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> - <p>I will not close if you click outside me. Don't even try to press escape key.</p> + <p>I will not close if you click outside of me. Don't even try to press escape key.</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> @@ -325,10 +325,10 @@ Add `.modal-dialog-centered` to `.modal-dialog` to vertically center the modal. </div> <div class="modal-body"> <h5>Popover in a modal</h5> - <p>This <a href="#" role="button" class="btn btn-secondary popover-test" title="Popover title" data-bs-content="Popover body content is set in this attribute." data-bs-container="#exampleModalPopovers">button</a> triggers a popover on click.</p> + <p>This <a href="#" role="button" class="btn btn-secondary" data-bs-toggle="popover" title="Popover title" data-bs-content="Popover body content is set in this attribute." data-bs-container="#exampleModalPopovers">button</a> triggers a popover on click.</p> <hr> <h5>Tooltips in a modal</h5> - <p><a href="#" class="tooltip-test" title="Tooltip" data-bs-container="#exampleModalPopovers">This link</a> and <a href="#" class="tooltip-test" title="Tooltip" data-bs-container="#exampleModalPopovers">that link</a> have tooltips on hover.</p> + <p><a href="#" data-bs-toggle="tooltip" title="Tooltip" data-bs-container="#exampleModalPopovers">This link</a> and <a href="#" data-bs-toggle="tooltip" title="Tooltip" data-bs-container="#exampleModalPopovers">that link</a> have tooltips on hover.</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> @@ -347,10 +347,10 @@ Add `.modal-dialog-centered` to `.modal-dialog` to vertically center the modal. ```html <div class="modal-body"> <h5>Popover in a modal</h5> - <p>This <a href="#" role="button" class="btn btn-secondary popover-test" title="Popover title" data-bs-content="Popover body content is set in this attribute.">button</a> triggers a popover on click.</p> + <p>This <a href="#" role="button" class="btn btn-secondary" data-bs-toggle="popover" title="Popover title" data-bs-content="Popover body content is set in this attribute.">button</a> triggers a popover on click.</p> <hr> <h5>Tooltips in a modal</h5> - <p><a href="#" class="tooltip-test" title="Tooltip">This link</a> and <a href="#" class="tooltip-test" title="Tooltip">that link</a> have tooltips on hover.</p> + <p><a href="#" data-bs-toggle="tooltip" title="Tooltip">This link</a> and <a href="#" data-bs-toggle="tooltip" title="Tooltip">that link</a> have tooltips on hover.</p> </div> ``` @@ -444,7 +444,7 @@ Have a bunch of buttons that all trigger the same modal with slightly different Below is a live demo followed by example HTML and JavaScript. For more information, [read the modal events docs](#events) for details on `relatedTarget`. -{{< example >}} +{{< example stackblitz_add_js="true" >}} <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal" data-bs-whatever="@mdo">Open modal for @mdo</button> <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal" data-bs-whatever="@fat">Open modal for @fat</button> <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal" data-bs-whatever="@getbootstrap">Open modal for @getbootstrap</button> @@ -478,20 +478,20 @@ Below is a live demo followed by example HTML and JavaScript. For more informati {{< /example >}} ```js -var exampleModal = document.getElementById('exampleModal') -exampleModal.addEventListener('show.bs.modal', function (event) { +const exampleModal = document.getElementById('exampleModal') +exampleModal.addEventListener('show.bs.modal', event => { // Button that triggered the modal - var button = event.relatedTarget + const button = event.relatedTarget // Extract info from data-bs-* attributes - var recipient = button.getAttribute('data-bs-whatever') + const recipient = button.getAttribute('data-bs-whatever') // If necessary, you could initiate an AJAX request here // and then do the updating in a callback. // // Update the modal's content. - var modalTitle = exampleModal.querySelector('.modal-title') - var modalBodyInput = exampleModal.querySelector('.modal-body input') + const modalTitle = exampleModal.querySelector('.modal-title') + const modalBodyInput = exampleModal.querySelector('.modal-body input') - modalTitle.textContent = 'New message to ' + recipient + modalTitle.textContent = `New message to ${recipient}` modalBodyInput.value = recipient }) ``` @@ -568,37 +568,14 @@ Embedding YouTube videos in modals requires additional JavaScript not in Bootstr Modals have three optional sizes, available via modifier classes to be placed on a `.modal-dialog`. These sizes kick in at certain breakpoints to avoid horizontal scrollbars on narrower viewports. -<table class="table"> - <thead> - <tr> - <th>Size</th> - <th>Class</th> - <th>Modal max-width</th> - </tr> - </thead> - <tbody> - <tr> - <td>Small</td> - <td><code>.modal-sm</code></td> - <td><code>300px</code></td> - </tr> - <tr> - <td>Default</td> - <td class="text-muted">None</td> - <td><code>500px</code></td> - </tr> - <tr> - <td>Large</td> - <td><code>.modal-lg</code></td> - <td><code>800px</code></td> - </tr> - <tr> - <td>Extra large</td> - <td><code>.modal-xl</code></td> - <td><code>1140px</code></td> - </tr> - </tbody> -</table> +{{< bs-table "table" >}} +| Size | Class | Modal max-width +| --- | --- | --- | +| Small | `.modal-sm` | `300px` | +| Default | <span class="text-muted">None</span> | `500px` | +| Large | `.modal-lg` | `800px` | +| Extra large | `.modal-xl` | `1140px` | +{{< /bs-table >}} Our default modal without modifier class constitutes the "medium" size modal. @@ -660,40 +637,16 @@ Our default modal without modifier class constitutes the "medium" size modal. Another override is the option to pop up a modal that covers the user viewport, available via modifier classes that are placed on a `.modal-dialog`. -<table class="table"> - <thead> - <tr> - <th>Class</th> - <th>Availability</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>.modal-fullscreen</code></td> - <td>Always</td> - </tr> - <tr> - <td><code>.modal-fullscreen-sm-down</code></td> - <td>Below <code>576px</code></td> - </tr> - <tr> - <td><code>.modal-fullscreen-md-down</code></td> - <td>Below <code>768px</code></td> - </tr> - <tr> - <td><code>.modal-fullscreen-lg-down</code></td> - <td>Below <code>992px</code></td> - </tr> - <tr> - <td><code>.modal-fullscreen-xl-down</code></td> - <td>Below <code>1200px</code></td> - </tr> - <tr> - <td><code>.modal-fullscreen-xxl-down</code></td> - <td>Below <code>1400px</code></td> - </tr> - </tbody> -</table> +{{< bs-table >}} +| Class | Availability | +| --- | --- | --- | +| `.modal-fullscreen` | Always | +| `.modal-fullscreen-sm-down` | `576px` | +| `.modal-fullscreen-md-down` | `768px` | +| `.modal-fullscreen-lg-down` | `992px` | +| `.modal-fullscreen-xl-down` | `1200px` | +| `.modal-fullscreen-xxl-down` | `1400px` | +{{< /bs-table >}} <div class="bd-example"> <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModalFullscreen">Full screen</button> @@ -813,10 +766,20 @@ Another override is the option to pop up a modal that covers the user viewport, </div> </div> -## Sass +## CSS ### Variables +{{< added-in "5.2.0" >}} + +As part of Bootstrap's evolving CSS variables approach, modals now use local CSS variables on `.modal` and `.modal-backdrop` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +{{< scss-docs name="modal-css-vars" file="scss/_modal.scss" >}} + +{{< scss-docs name="modal-backdrop-css-vars" file="scss/_modal.scss" >}} + +### Sass variables + {{< scss-docs name="modal-variables" file="scss/_variables.scss" >}} ### Loop @@ -844,7 +807,7 @@ Activate a modal without writing JavaScript. Set `data-bs-toggle="modal"` on a c {{% js-dismiss "modal" %}} {{< callout warning >}} -While both ways to dismiss a modal are supported, keep in mind that dismissing from outside a modal does not match [the WAI-ARIA modal dialog design pattern](https://www.w3.org/TR/wai-aria-practices-1.1/#dialog_modal). Do this at your own risk. +While both ways to dismiss a modal are supported, keep in mind that dismissing from outside a modal does not match the [ARIA Authoring Practices Guide dialog (modal) pattern](https://www.w3.org/WAI/ARIA/apg/patterns/dialogmodal/). Do this at your own risk. {{< /callout >}} ### Via JavaScript @@ -852,43 +815,24 @@ While both ways to dismiss a modal are supported, keep in mind that dismissing f Create a modal with a single line of JavaScript: ```js -var myModal = new bootstrap.Modal(document.getElementById('myModal'), options) +const myModal = new bootstrap.Modal(document.getElementById('myModal'), options) +// or +const myModalAlternative = new bootstrap.Modal('#myModal', options) ``` ### Options -Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-bs-`, as in `data-bs-backdrop=""`. - -<table class="table"> - <thead> - <tr> - <th style="width: 100px;">Name</th> - <th style="width: 50px;">Type</th> - <th style="width: 50px;">Default</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>backdrop</code></td> - <td>boolean or the string <code>'static'</code></td> - <td><code>true</code></td> - <td>Includes a modal-backdrop element. Alternatively, specify <code>static</code> for a backdrop which doesn't close the modal on click.</td> - </tr> - <tr> - <td><code>keyboard</code></td> - <td>boolean</td> - <td><code>true</code></td> - <td>Closes the modal when escape key is pressed</td> - </tr> - <tr> - <td><code>focus</code></td> - <td>boolean</td> - <td><code>true</code></td> - <td>Puts the focus on the modal when initialized.</td> - </tr> - </tbody> -</table> +{{< markdown >}} +{{< partial "js-data-attributes.md" >}} +{{< /markdown >}} + +{{< bs-table "table" >}} +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| `backdrop` | boolean, `'static'` | `true` | Includes a modal-backdrop element. Alternatively, specify `static` for a backdrop which doesn't close the modal when clicked. | +| `focus` | boolean | `true` | Puts the focus on the modal when initialized. | +| `keyboard` | boolean | `true` | Closes the modal when escape key is pressed. | +{{< /bs-table >}} ### Methods @@ -901,114 +845,40 @@ Options can be passed via data attributes or JavaScript. For data attributes, ap Activates your content as a modal. Accepts an optional options `object`. ```js -var myModal = new bootstrap.Modal(document.getElementById('myModal'), { +const myModal = new bootstrap.Modal('#myModal', { keyboard: false }) ``` -#### toggle - -Manually toggles a modal. **Returns to the caller before the modal has actually been shown or hidden** (i.e. before the `shown.bs.modal` or `hidden.bs.modal` event occurs). - -```js -myModal.toggle() -``` - -#### show - -Manually opens a modal. **Returns to the caller before the modal has actually been shown** (i.e. before the `shown.bs.modal` event occurs). - -```js -myModal.show() -``` - -Also, you can pass a DOM element as an argument that can be received in the modal events (as the `relatedTarget` property). - -```js -var modalToggle = document.getElementById('toggleMyModal') // relatedTarget -myModal.show(modalToggle) -``` - -#### hide - -Manually hides a modal. **Returns to the caller before the modal has actually been hidden** (i.e. before the `hidden.bs.modal` event occurs). - -```js -myModal.hide() -``` - -#### handleUpdate - -Manually readjust the modal's position if the height of a modal changes while it is open (i.e. in case a scrollbar appears). - -```js -myModal.handleUpdate() -``` - -#### dispose - -Destroys an element's modal. (Removes stored data on the DOM element) - -```js -myModal.dispose() -``` - -#### getInstance - -*Static* method which allows you to get the modal instance associated with a DOM element - -```js -var myModalEl = document.getElementById('myModal') -var modal = bootstrap.Modal.getInstance(myModalEl) // Returns a Bootstrap modal instance -``` - -#### getOrCreateInstance - -*Static* method which allows you to get the modal instance associated with a DOM element, or create a new one in case it wasn't initialized - -```js -var myModalEl = document.querySelector('#myModal') -var modal = bootstrap.Modal.getOrCreateInstance(myModalEl) // Returns a Bootstrap modal instance -``` +{{< bs-table "table" >}} +| Method | Description | +| --- | --- | +| `dispose` | Destroys an element's modal. (Removes stored data on the DOM element) | +| `getInstance` | *Static* method which allows you to get the modal instance associated with a DOM element. | +| `getOrCreateInstance` | *Static* method which allows you to get the modal instance associated with a DOM element, or create a new one in case it wasn't initialized. | +| `handleUpdate` | Manually readjust the modal's position if the height of a modal changes while it is open (i.e. in case a scrollbar appears). | +| `hide` | Manually hides a modal. **Returns to the caller before the modal has actually been hidden** (i.e. before the `hidden.bs.modal` event occurs). | +| `show` | Manually opens a modal. **Returns to the caller before the modal has actually been shown** (i.e. before the `shown.bs.modal` event occurs). Also, you can pass a DOM element as an argument that can be received in the modal events (as the `relatedTarget` property). (i.e. `const modalToggle = document.getElementById('toggleMyModal'); myModal.show(modalToggle)` | +| `toggle` | Manually toggles a modal. **Returns to the caller before the modal has actually been shown or hidden** (i.e. before the `shown.bs.modal` or `hidden.bs.modal` event occurs). | +{{< /bs-table >}} ### Events Bootstrap's modal class exposes a few events for hooking into modal functionality. All modal events are fired at the modal itself (i.e. at the `<div class="modal">`). -<table class="table"> - <thead> - <tr> - <th style="width: 150px;">Event type</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>show.bs.modal</code></td> - <td>This event fires immediately when the <code>show</code> instance method is called. If caused by a click, the clicked element is available as the <code>relatedTarget</code> property of the event.</td> - </tr> - <tr> - <td><code>shown.bs.modal</code></td> - <td>This event is fired when the modal has been made visible to the user (will wait for CSS transitions to complete). If caused by a click, the clicked element is available as the <code>relatedTarget</code> property of the event.</td> - </tr> - <tr> - <td><code>hide.bs.modal</code></td> - <td>This event is fired immediately when the <code>hide</code> instance method has been called.</td> - </tr> - <tr> - <td><code>hidden.bs.modal</code></td> - <td>This event is fired when the modal has finished being hidden from the user (will wait for CSS transitions to complete).</td> - </tr> - <tr> - <td><code>hidePrevented.bs.modal</code></td> - <td>This event is fired when the modal is shown, its backdrop is <code>static</code> and a click outside the modal or an escape key press is performed with the keyboard option or <code>data-bs-keyboard</code> set to <code>false</code>.</td> - </tr> - </tbody> -</table> +{{< bs-table >}} +| Event | Description | +| --- | --- | +| `hide.bs.modal` | This event is fired immediately when the `hide` instance method has been called. | +| `hidden.bs.modal` | This event is fired when the modal has finished being hidden from the user (will wait for CSS transitions to complete). | +| `hidePrevented.bs.modal` | This event is fired when the modal is shown, its backdrop is `static` and a click outside of the modal is performed. The event is also fired when the escape key is pressed and the `keyboard` option is set to `false`. | +| `show.bs.modal` | This event fires immediately when the `show` instance method is called. If caused by a click, the clicked element is available as the `relatedTarget` property of the event. | +| `shown.bs.modal` | This event is fired when the modal has been made visible to the user (will wait for CSS transitions to complete). If caused by a click, the clicked element is available as the `relatedTarget` property of the event. | +{{< /bs-table >}} ```js -var myModalEl = document.getElementById('myModal') -myModalEl.addEventListener('hidden.bs.modal', function (event) { +const myModalEl = document.getElementById('myModal') +myModalEl.addEventListener('hidden.bs.modal', event => { // do something... }) ``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/navbar.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/navbar.md index f6dbb8e61..a1d671a42 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/navbar.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/navbar.md @@ -16,6 +16,7 @@ Here's what you need to know before getting started with the navbar: - Navbars are responsive by default, but you can easily modify them to change that. Responsive behavior depends on our Collapse JavaScript plugin. - Ensure accessibility by using a `<nav>` element or, if using a more generic element such as a `<div>`, add a `role="navigation"` to every navbar to explicitly identify it as a landmark region for users of assistive technologies. - Indicate the current item by using `aria-current="page"` for the current page or `aria-current="true"` for the current item in a set. +- **New in v5.2.0:** Navbars can be themed with CSS variables that are scoped to the `.navbar` base class. `.navbar-light` has been deprecated and `.navbar-dark` has been rewritten to override CSS variables instead of adding additional styles. {{< callout info >}} {{< partial "callout-info-prefersreducedmotion.md" >}} @@ -36,7 +37,7 @@ Navbars come with built-in support for a handful of sub-components. Choose from Here's an example of all the sub-components included in a responsive light-themed navbar that automatically collapses at the `lg` (large) breakpoint. {{< example >}} -<nav class="navbar navbar-expand-lg navbar-light bg-light"> +<nav class="navbar navbar-expand-lg bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> @@ -51,10 +52,10 @@ Here's an example of all the sub-components included in a responsive light-theme <a class="nav-link" href="#">Link</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> + <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown </a> - <ul class="dropdown-menu" aria-labelledby="navbarDropdown"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><hr class="dropdown-divider"></li> @@ -65,7 +66,7 @@ Here's an example of all the sub-components included in a responsive light-theme <a class="nav-link disabled">Disabled</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> @@ -74,7 +75,7 @@ Here's an example of all the sub-components included in a responsive light-theme </nav> {{< /example >}} -This example uses [background]({{< docsref "/utilities/background" >}}) (`bg-light`) and [spacing]({{< docsref "/utilities/spacing" >}}) (`my-2`, `my-lg-0`, `me-sm-0`, `my-sm-0`) utility classes. +This example uses [background]({{< docsref "/utilities/background" >}}) (`bg-light`) and [spacing]({{< docsref "/utilities/spacing" >}}) (`me-auto`, `mb-2`, `mb-lg-0`, `me-2`) utility classes. ### Brand @@ -86,14 +87,14 @@ Add your text within an element with the `.navbar-brand` class. {{< example >}} <!-- As a link --> -<nav class="navbar navbar-light bg-light"> +<nav class="navbar bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Navbar</a> </div> </nav> <!-- As a heading --> -<nav class="navbar navbar-light bg-light"> +<nav class="navbar bg-light"> <div class="container-fluid"> <span class="navbar-brand mb-0 h1">Navbar</span> </div> @@ -105,7 +106,7 @@ Add your text within an element with the `.navbar-brand` class. You can replace the text within the `.navbar-brand` with an `<img>`. {{< example >}} -<nav class="navbar navbar-light bg-light"> +<nav class="navbar bg-light"> <div class="container"> <a class="navbar-brand" href="#"> <img src="/docs/{{< param docs_version >}}/assets/brand/bootstrap-logo.svg" alt="" width="30" height="24"> @@ -119,7 +120,7 @@ You can replace the text within the `.navbar-brand` with an `<img>`. You can also make use of some additional utilities to add an image and text at the same time. Note the addition of `.d-inline-block` and `.align-text-top` on the `<img>`. {{< example >}} -<nav class="navbar navbar-light bg-light"> +<nav class="navbar bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#"> <img src="/docs/{{< param docs_version >}}/assets/brand/bootstrap-logo.svg" alt="" width="30" height="24" class="d-inline-block align-text-top"> @@ -138,7 +139,7 @@ Add the `.active` class on `.nav-link` to indicate the current page. Please note that you should also add the `aria-current` attribute on the active `.nav-link`. {{< example >}} -<nav class="navbar navbar-expand-lg navbar-light bg-light"> +<nav class="navbar navbar-expand-lg bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> @@ -167,7 +168,7 @@ Please note that you should also add the `aria-current` attribute on the active And because we use classes for our navs, you can avoid the list-based approach entirely if you like. {{< example >}} -<nav class="navbar navbar-expand-lg navbar-light bg-light"> +<nav class="navbar navbar-expand-lg bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation"> @@ -188,7 +189,7 @@ And because we use classes for our navs, you can avoid the list-based approach e You can also use dropdowns in your navbar. Dropdown menus require a wrapping element for positioning, so be sure to use separate and nested elements for `.nav-item` and `.nav-link` as shown below. {{< example >}} -<nav class="navbar navbar-expand-lg navbar-light bg-light"> +<nav class="navbar navbar-expand-lg bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation"> @@ -206,10 +207,10 @@ You can also use dropdowns in your navbar. Dropdown menus require a wrapping ele <a class="nav-link" href="#">Pricing</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false"> + <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown link </a> - <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> @@ -226,9 +227,9 @@ You can also use dropdowns in your navbar. Dropdown menus require a wrapping ele Place various form controls and components within a navbar: {{< example >}} -<nav class="navbar navbar-light bg-light"> +<nav class="navbar bg-light"> <div class="container-fluid"> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> @@ -239,10 +240,10 @@ Place various form controls and components within a navbar: Immediate child elements of `.navbar` use flex layout and will default to `justify-content: space-between`. Use additional [flex utilities]({{< docsref "/utilities/flex" >}}) as needed to adjust this behavior. {{< example >}} -<nav class="navbar navbar-light bg-light"> +<nav class="navbar bg-light"> <div class="container-fluid"> <a class="navbar-brand">Navbar</a> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> @@ -253,7 +254,7 @@ Immediate child elements of `.navbar` use flex layout and will default to `justi Input groups work, too. If your navbar is an entire form, or mostly a form, you can use the `<form>` element as the container and save some HTML. {{< example >}} -<nav class="navbar navbar-light bg-light"> +<nav class="navbar bg-light"> <form class="container-fluid"> <div class="input-group"> <span class="input-group-text" id="basic-addon1">@</span> @@ -266,7 +267,7 @@ Input groups work, too. If your navbar is an entire form, or mostly a form, you Various buttons are supported as part of these navbar forms, too. This is also a great reminder that vertical alignment utilities can be used to align different sized elements. {{< example >}} -<nav class="navbar navbar-light bg-light"> +<nav class="navbar bg-light"> <form class="container-fluid justify-content-start"> <button class="btn btn-outline-success me-2" type="button">Main button</button> <button class="btn btn-sm btn-outline-secondary" type="button">Smaller button</button> @@ -279,7 +280,7 @@ Various buttons are supported as part of these navbar forms, too. This is also a Navbars may contain bits of text with the help of `.navbar-text`. This class adjusts vertical alignment and horizontal spacing for strings of text. {{< example >}} -<nav class="navbar navbar-light bg-light"> +<nav class="navbar bg-light"> <div class="container-fluid"> <span class="navbar-text"> Navbar text with an inline element @@ -291,7 +292,7 @@ Navbars may contain bits of text with the help of `.navbar-text`. This class adj Mix and match with other components and utilities as needed. {{< example >}} -<nav class="navbar navbar-expand-lg navbar-light bg-light"> +<nav class="navbar navbar-expand-lg bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Navbar w/ text</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation"> @@ -319,7 +320,11 @@ Mix and match with other components and utilities as needed. ## Color schemes -Theming the navbar has never been easier thanks to the combination of theming classes and `background-color` utilities. Choose from `.navbar-light` for use with light background colors, or `.navbar-dark` for dark background colors. Then, customize with `.bg-*` utilities. +{{< callout warning >}} +**New in v5.2.0:** Navbar theming is now powered by CSS variables and `.navbar-light` has been deprecated. CSS variables are applied to `.navbar`, defaulting to the "light" appearance, and can be overridden with `.navbar-dark`. +{{< /callout >}} + +Navbar themes are easier than ever thanks to Bootstrap's combination of Sass and CSS variables. The default is our "light navbar" for use with light background colors, but you can also apply `.navbar-dark` for dark background colors. Then, customize with `.bg-*` utilities. <div class="bd-example"> <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> @@ -343,7 +348,7 @@ Theming the navbar has never been easier thanks to the combination of theming cl <a class="nav-link" href="#">About</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-light" type="submit">Search</button> </form> @@ -372,7 +377,7 @@ Theming the navbar has never been easier thanks to the combination of theming cl <a class="nav-link" href="#">About</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-light" type="submit">Search</button> </form> @@ -380,7 +385,7 @@ Theming the navbar has never been easier thanks to the combination of theming cl </div> </nav> - <nav class="navbar navbar-expand-lg navbar-light" style="background-color: #e3f2fd;"> + <nav class="navbar navbar-expand-lg" style="background-color: #e3f2fd;"> <div class="container-fluid"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarColor03" aria-controls="navbarColor03" aria-expanded="false" aria-label="Toggle navigation"> @@ -401,7 +406,7 @@ Theming the navbar has never been easier thanks to the combination of theming cl <a class="nav-link" href="#">About</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-primary" type="submit">Search</button> </form> @@ -419,7 +424,7 @@ Theming the navbar has never been easier thanks to the combination of theming cl <!-- Navbar content --> </nav> -<nav class="navbar navbar-light" style="background-color: #e3f2fd;"> +<nav class="navbar" style="background-color: #e3f2fd;"> <!-- Navbar content --> </nav> ``` @@ -430,7 +435,7 @@ Although it's not required, you can wrap a navbar in a `.container` to center it {{< example >}} <div class="container"> - <nav class="navbar navbar-expand-lg navbar-light bg-light"> + <nav class="navbar navbar-expand-lg bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Navbar</a> </div> @@ -441,7 +446,7 @@ Although it's not required, you can wrap a navbar in a `.container` to center it Use any of the responsive containers to change how wide the content in your navbar is presented. {{< example >}} -<nav class="navbar navbar-expand-lg navbar-light bg-light"> +<nav class="navbar navbar-expand-lg bg-light"> <div class="container-md"> <a class="navbar-brand" href="#">Navbar</a> </div> @@ -450,12 +455,12 @@ Use any of the responsive containers to change how wide the content in your navb ## Placement -Use our [position utilities]({{< docsref "/utilities/position" >}}) to place navbars in non-static positions. Choose from fixed to the top, fixed to the bottom, or stickied to the top (scrolls with the page until it reaches the top, then stays there). Fixed navbars use `position: fixed`, meaning they're pulled from the normal flow of the DOM and may require custom CSS (e.g., `padding-top` on the `<body>`) to prevent overlap with other elements. +Use our [position utilities]({{< docsref "/utilities/position" >}}) to place navbars in non-static positions. Choose from fixed to the top, fixed to the bottom, stickied to the top (scrolls with the page until it reaches the top, then stays there), or stickied to the bottom (scrolls with the page until it reaches the bottom, then stays there). -Also note that **`.sticky-top` uses `position: sticky`, which [isn't fully supported in every browser](https://caniuse.com/css-sticky)**. +Fixed navbars use `position: fixed`, meaning they're pulled from the normal flow of the DOM and may require custom CSS (e.g., `padding-top` on the `<body>`) to prevent overlap with other elements. {{< example >}} -<nav class="navbar navbar-light bg-light"> +<nav class="navbar bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Default</a> </div> @@ -463,7 +468,7 @@ Also note that **`.sticky-top` uses `position: sticky`, which [isn't fully suppo {{< /example >}} {{< example >}} -<nav class="navbar fixed-top navbar-light bg-light"> +<nav class="navbar fixed-top bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Fixed top</a> </div> @@ -471,7 +476,7 @@ Also note that **`.sticky-top` uses `position: sticky`, which [isn't fully suppo {{< /example >}} {{< example >}} -<nav class="navbar fixed-bottom navbar-light bg-light"> +<nav class="navbar fixed-bottom bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Fixed bottom</a> </div> @@ -479,13 +484,21 @@ Also note that **`.sticky-top` uses `position: sticky`, which [isn't fully suppo {{< /example >}} {{< example >}} -<nav class="navbar sticky-top navbar-light bg-light"> +<nav class="navbar sticky-top bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Sticky top</a> </div> </nav> {{< /example >}} +{{< example >}} +<nav class="navbar sticky-bottom bg-light"> + <div class="container-fluid"> + <a class="navbar-brand" href="#">Sticky bottom</a> + </div> +</nav> +{{< /example >}} + ## Scrolling Add `.navbar-nav-scroll` to a `.navbar-nav` (or other navbar sub-component) to enable vertical scrolling within the toggleable contents of a collapsed navbar. By default, scrolling kicks in at `75vh` (or 75% of the viewport height), but you can override that with the local CSS custom property `--bs-navbar-height` or custom styles. At larger viewports when the navbar is expanded, content will appear as it does in a default navbar. @@ -495,7 +508,7 @@ Please note that this behavior comes with a potential drawback of `overflow`—w Here's an example navbar using `.navbar-nav-scroll` with `style="--bs-scroll-height: 100px;"`, with some extra margin utilities for optimum spacing. {{< example >}} -<nav class="navbar navbar-expand-lg navbar-light bg-light"> +<nav class="navbar navbar-expand-lg bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Navbar scroll</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarScroll" aria-controls="navbarScroll" aria-expanded="false" aria-label="Toggle navigation"> @@ -510,10 +523,10 @@ Here's an example navbar using `.navbar-nav-scroll` with `style="--bs-scroll-hei <a class="nav-link" href="#">Link</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="navbarScrollingDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> + <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Link </a> - <ul class="dropdown-menu" aria-labelledby="navbarScrollingDropdown"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><hr class="dropdown-divider"></li> @@ -524,7 +537,7 @@ Here's an example navbar using `.navbar-nav-scroll` with `style="--bs-scroll-hei <a class="nav-link disabled">Link</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> @@ -546,7 +559,7 @@ Navbar togglers are left-aligned by default, but should they follow a sibling el With no `.navbar-brand` shown at the smallest breakpoint: {{< example >}} -<nav class="navbar navbar-expand-lg navbar-light bg-light"> +<nav class="navbar navbar-expand-lg bg-light"> <div class="container-fluid"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo01" aria-controls="navbarTogglerDemo01" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> @@ -564,7 +577,7 @@ With no `.navbar-brand` shown at the smallest breakpoint: <a class="nav-link disabled">Disabled</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> @@ -576,7 +589,7 @@ With no `.navbar-brand` shown at the smallest breakpoint: With a brand name shown on the left and toggler on the right: {{< example >}} -<nav class="navbar navbar-expand-lg navbar-light bg-light"> +<nav class="navbar navbar-expand-lg bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation"> @@ -594,7 +607,7 @@ With a brand name shown on the left and toggler on the right: <a class="nav-link disabled">Disabled</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> @@ -606,7 +619,7 @@ With a brand name shown on the left and toggler on the right: With a toggler on the left and brand name on the right: {{< example >}} -<nav class="navbar navbar-expand-lg navbar-light bg-light"> +<nav class="navbar navbar-expand-lg bg-light"> <div class="container-fluid"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo03" aria-controls="navbarTogglerDemo03" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> @@ -624,7 +637,7 @@ With a toggler on the left and brand name on the right: <a class="nav-link disabled">Disabled</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> @@ -657,12 +670,12 @@ When you do this, we recommend including additional JavaScript to move the focus ### Offcanvas -Transform your expanding and collapsing navbar into an offcanvas drawer with the offcanvas plugin. We extend both the offcanvas default styles and use our `.navbar-expand-*` classes to create a dynamic and flexible navigation sidebar. +Transform your expanding and collapsing navbar into an offcanvas drawer with the [offcanvas component]({{< docsref "/components/offcanvas" >}}). We extend both the offcanvas default styles and use our `.navbar-expand-*` classes to create a dynamic and flexible navigation sidebar. In the example below, to create an offcanvas navbar that is always collapsed across all breakpoints, omit the `.navbar-expand-*` class entirely. {{< example >}} -<nav class="navbar navbar-light bg-light fixed-top"> +<nav class="navbar bg-light fixed-top"> <div class="container-fluid"> <a class="navbar-brand" href="#">Offcanvas navbar</a> <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNavbar" aria-controls="offcanvasNavbar"> @@ -671,7 +684,7 @@ In the example below, to create an offcanvas navbar that is always collapsed acr <div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasNavbar" aria-labelledby="offcanvasNavbarLabel"> <div class="offcanvas-header"> <h5 class="offcanvas-title" id="offcanvasNavbarLabel">Offcanvas</h5> - <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button> + <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> </div> <div class="offcanvas-body"> <ul class="navbar-nav justify-content-end flex-grow-1 pe-3"> @@ -682,10 +695,10 @@ In the example below, to create an offcanvas navbar that is always collapsed acr <a class="nav-link" href="#">Link</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="offcanvasNavbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> + <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown </a> - <ul class="dropdown-menu" aria-labelledby="offcanvasNavbarDropdown"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li> @@ -695,7 +708,7 @@ In the example below, to create an offcanvas navbar that is always collapsed acr </ul> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> @@ -708,7 +721,7 @@ In the example below, to create an offcanvas navbar that is always collapsed acr To create an offcanvas navbar that expands into a normal navbar at a specific breakpoint like `lg`, use `.navbar-expand-lg`. ```html -<nav class="navbar navbar-light navbar-expand-lg bg-light fixed-top"> +<nav class="navbar navbar-expand-lg bg-light fixed-top"> <a class="navbar-brand" href="#">Offcanvas navbar</a> <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#navbarOffcanvasLg" aria-controls="navbarOffcanvasLg"> <span class="navbar-toggler-icon"></span> @@ -719,15 +732,73 @@ To create an offcanvas navbar that expands into a normal navbar at a specific br </nav> ``` -## Sass +When using offcanvas in a dark navbar, be aware that you may need to have a dark background on the offcanvas content to avoid the text becoming illegible. In the example below, we add `.navbar-dark` and `.bg-dark` to the `.navbar`, `.text-bg-dark` to the `.offcanvas`, `.dropdown-menu-dark` to `.dropdown-menu`, and `.btn-close-white` to `.btn-close` for proper styling with a dark offcanvas. + +{{< example >}} +<nav class="navbar navbar-dark bg-dark fixed-top"> + <div class="container-fluid"> + <a class="navbar-brand" href="#">Offcanvas dark navbar</a> + <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasDarkNavbar" aria-controls="offcanvasDarkNavbar"> + <span class="navbar-toggler-icon"></span> + </button> + <div class="offcanvas offcanvas-end text-bg-dark" tabindex="-1" id="offcanvasDarkNavbar" aria-labelledby="offcanvasDarkNavbarLabel"> + <div class="offcanvas-header"> + <h5 class="offcanvas-title" id="offcanvasDarkNavbarLabel">Dark offcanvas</h5> + <button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvas" aria-label="Close"></button> + </div> + <div class="offcanvas-body"> + <ul class="navbar-nav justify-content-end flex-grow-1 pe-3"> + <li class="nav-item"> + <a class="nav-link active" aria-current="page" href="#">Home</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="#">Link</a> + </li> + <li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> + Dropdown + </a> + <ul class="dropdown-menu dropdown-menu-dark"> + <li><a class="dropdown-item" href="#">Action</a></li> + <li><a class="dropdown-item" href="#">Another action</a></li> + <li> + <hr class="dropdown-divider"> + </li> + <li><a class="dropdown-item" href="#">Something else here</a></li> + </ul> + </li> + </ul> + <form class="d-flex" role="search"> + <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> + <button class="btn btn-success" type="submit">Search</button> + </form> + </div> + </div> + </div> +</nav> +{{< /example >}} + +## CSS ### Variables +{{< added-in "5.2.0" >}} + +As part of Bootstrap's evolving CSS variables approach, navbars now use local CSS variables on `.navbar` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +{{< scss-docs name="navbar-css-vars" file="scss/_navbar.scss" >}} + +Some additional CSS variables are also present on `.navbar-nav`: + +{{< scss-docs name="navbar-nav-css-vars" file="scss/_navbar.scss" >}} + +### Sass variables + {{< scss-docs name="navbar-variables" file="scss/_variables.scss" >}} {{< scss-docs name="navbar-theme-variables" file="scss/_variables.scss" >}} -### Loop +### Sass loop [Responsive navbar expand/collapse classes](#responsive-behaviors) (e.g., `.navbar-expand-lg`) are combined with the `$breakpoints` map and generated through a loop in `scss/_navbar.scss`. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/navs-tabs.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/navs-tabs.md index 353d03d2d..2b58bdd72 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/navs-tabs.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/navs-tabs.md @@ -3,7 +3,7 @@ layout: docs title: Navs and tabs description: Documentation and examples for how to use Bootstrap's included navigation components. group: components -aliases: "/docs/5.1/components/navs/" +aliases: "/docs/5.2/components/navs/" toc: true --- @@ -246,7 +246,7 @@ If you need responsive nav variations, consider using a series of [flexbox utili If you're using navs to provide a navigation bar, be sure to add a `role="navigation"` to the most logical parent container of the `<ul>`, or wrap a `<nav>` element around the whole navigation. Do not add the role to the `<ul>` itself, as this would prevent it from being announced as an actual list by assistive technologies. -Note that navigation bars, even if visually styled as tabs with the `.nav-tabs` class, should **not** be given `role="tablist"`, `role="tab"` or `role="tabpanel"` attributes. These are only appropriate for dynamic tabbed interfaces, as described in the [<abbr title="Web Accessibility Initiative">WAI</abbr> <abbr title="Accessible Rich Internet Applications">ARIA</abbr> Authoring Practices](https://www.w3.org/TR/wai-aria-practices/#tabpanel). See [JavaScript behavior](#javascript-behavior) for dynamic tabbed interfaces in this section for an example. The `aria-current` attribute is not necessary on dynamic tabbed interfaces since our JavaScript handles the selected state by adding `aria-selected="true"` on the active tab. +Note that navigation bars, even if visually styled as tabs with the `.nav-tabs` class, should **not** be given `role="tablist"`, `role="tab"` or `role="tabpanel"` attributes. These are only appropriate for dynamic tabbed interfaces, as described in the [ARIA Authoring Practices Guide tabs pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tabpanel/). See [JavaScript behavior](#javascript-behavior) for dynamic tabbed interfaces in this section for an example. The `aria-current` attribute is not necessary on dynamic tabbed interfaces since our JavaScript handles the selected state by adding `aria-selected="true"` on the active tab. ## Using dropdowns @@ -304,41 +304,61 @@ Add dropdown menus with a little extra HTML and the [dropdowns JavaScript plugin </ul> {{< /example >}} -## Sass +## CSS ### Variables +{{< added-in "5.2.0" >}} + +As part of Bootstrap's evolving CSS variables approach, navs now use local CSS variables on `.nav`, `.nav-tabs`, and `.nav-pills` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +On the `.nav` base class: + +{{< scss-docs name="nav-css-vars" file="scss/_nav.scss" >}} + +On the `.nav-tabs` modifier class: + +{{< scss-docs name="nav-tabs-css-vars" file="scss/_nav.scss" >}} + +On the `.nav-pills` modifier class: + +{{< scss-docs name="nav-pills-css-vars" file="scss/_nav.scss" >}} + +### Sass variables + {{< scss-docs name="nav-variables" file="scss/_variables.scss" >}} ## JavaScript behavior Use the tab JavaScript plugin—include it individually or through the compiled `bootstrap.js` file—to extend our navigational tabs and pills to create tabbable panes of local content. -Dynamic tabbed interfaces, as described in the [<abbr title="Web Accessibility Initiative">WAI</abbr> <abbr title="Accessible Rich Internet Applications">ARIA</abbr> Authoring Practices](https://www.w3.org/TR/wai-aria-practices/#tabpanel), require `role="tablist"`, `role="tab"`, `role="tabpanel"`, and additional `aria-` attributes in order to convey their structure, functionality and current state to users of assistive technologies (such as screen readers). As a best practice, we recommend using `<button>` elements for the tabs, as these are controls that trigger a dynamic change, rather than links that navigate to a new page or location. - -Note that dynamic tabbed interfaces should <em>not</em> contain dropdown menus, as this causes both usability and accessibility issues. From a usability perspective, the fact that the currently displayed tab's trigger element is not immediately visible (as it's inside the closed dropdown menu) can cause confusion. From an accessibility point of view, there is currently no sensible way to map this sort of construct to a standard WAI ARIA pattern, meaning that it cannot be easily made understandable to users of assistive technologies. - <div class="bd-example"> <ul class="nav nav-tabs mb-3" id="myTab" role="tablist"> <li class="nav-item" role="presentation"> - <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">Home</button> + <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home-tab-pane" type="button" role="tab" aria-controls="home-tab-pane" aria-selected="true">Home</button> + </li> + <li class="nav-item" role="presentation"> + <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile-tab-pane" type="button" role="tab" aria-controls="profile-tab-pane" aria-selected="false">Profile</button> </li> <li class="nav-item" role="presentation"> - <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">Profile</button> + <button class="nav-link" id="contact-tab" data-bs-toggle="tab" data-bs-target="#contact-tab-pane" type="button" role="tab" aria-controls="contact-tab-pane" aria-selected="false">Contact</button> </li> <li class="nav-item" role="presentation"> - <button class="nav-link" id="contact-tab" data-bs-toggle="tab" data-bs-target="#contact" type="button" role="tab" aria-controls="contact" aria-selected="false">Contact</button> + <button class="nav-link" id="disabled-tab" data-bs-toggle="tab" data-bs-target="#disabled-tab-pane" type="button" role="tab" aria-controls="disabled-tab-pane" aria-selected="false" disabled>Disabled</button> </li> </ul> <div class="tab-content" id="myTabContent"> - <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab"> - <p><strong>This is some placeholder content the Home tab's associated content.</strong> Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + <div class="tab-pane fade show active" id="home-tab-pane" role="tabpanel" aria-labelledby="home-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Home tab's</strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> </div> - <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab"> - <p><strong>This is some placeholder content the Profile tab's associated content.</strong> Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + <div class="tab-pane fade" id="profile-tab-pane" role="tabpanel" aria-labelledby="profile-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Profile tab's</strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> </div> - <div class="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab"> - <p><strong>This is some placeholder content the Contact tab's associated content.</strong> Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + <div class="tab-pane fade" id="contact-tab-pane" role="tabpanel" aria-labelledby="contact-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Contact tab's</strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + </div> + <div class="tab-pane fade" id="disabled-tab-pane" role="tabpanel" aria-labelledby="disabled-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Disabled tab's</strong> associated content.</p> </div> </div> </div> @@ -346,19 +366,23 @@ Note that dynamic tabbed interfaces should <em>not</em> contain dropdown menus, ```html <ul class="nav nav-tabs" id="myTab" role="tablist"> <li class="nav-item" role="presentation"> - <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">Home</button> + <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home-tab-pane" type="button" role="tab" aria-controls="home-tab-pane" aria-selected="true">Home</button> </li> <li class="nav-item" role="presentation"> - <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">Profile</button> + <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile-tab-pane" type="button" role="tab" aria-controls="profile-tab-pane" aria-selected="false">Profile</button> </li> <li class="nav-item" role="presentation"> - <button class="nav-link" id="contact-tab" data-bs-toggle="tab" data-bs-target="#contact" type="button" role="tab" aria-controls="contact" aria-selected="false">Contact</button> + <button class="nav-link" id="contact-tab" data-bs-toggle="tab" data-bs-target="#contact-tab-pane" type="button" role="tab" aria-controls="contact-tab-pane" aria-selected="false">Contact</button> + </li> + <li class="nav-item" role="presentation"> + <button class="nav-link" id="disabled-tab" data-bs-toggle="tab" data-bs-target="#disabled-tab-pane" type="button" role="tab" aria-controls="disabled-tab-pane" aria-selected="false" disabled>Disabled</button> </li> </ul> <div class="tab-content" id="myTabContent"> - <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">...</div> - <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">...</div> - <div class="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">...</div> + <div class="tab-pane fade show active" id="home-tab-pane" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div> + <div class="tab-pane fade" id="profile-tab-pane" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div> + <div class="tab-pane fade" id="contact-tab-pane" role="tabpanel" aria-labelledby="contact-tab" tabindex="0">...</div> + <div class="tab-pane fade" id="disabled-tab-pane" role="tabpanel" aria-labelledby="disabled-tab" tabindex="0">...</div> </div> ``` @@ -370,17 +394,21 @@ To help fit your needs, this works with `<ul>`-based markup, as shown above, or <button class="nav-link active" id="nav-home-tab" data-bs-toggle="tab" data-bs-target="#nav-home" type="button" role="tab" aria-controls="nav-home" aria-selected="true">Home</button> <button class="nav-link" id="nav-profile-tab" data-bs-toggle="tab" data-bs-target="#nav-profile" type="button" role="tab" aria-controls="nav-profile" aria-selected="false">Profile</button> <button class="nav-link" id="nav-contact-tab" data-bs-toggle="tab" data-bs-target="#nav-contact" type="button" role="tab" aria-controls="nav-contact" aria-selected="false">Contact</button> + <button class="nav-link" id="nav-disabled-tab" data-bs-toggle="tab" data-bs-target="#nav-disabled" type="button" role="tab" aria-controls="nav-disabled" aria-selected="false" disabled>Disabled</button> </div> </nav> <div class="tab-content" id="nav-tabContent"> - <div class="tab-pane fade show active" id="nav-home" role="tabpanel" aria-labelledby="nav-home-tab"> - <p><strong>This is some placeholder content the Home tab's associated content.</strong> Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + <div class="tab-pane fade show active" id="nav-home" role="tabpanel" aria-labelledby="nav-home-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Home tab's</strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + </div> + <div class="tab-pane fade" id="nav-profile" role="tabpanel" aria-labelledby="nav-profile-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Profile tab's</strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> </div> - <div class="tab-pane fade" id="nav-profile" role="tabpanel" aria-labelledby="nav-profile-tab"> - <p><strong>This is some placeholder content the Profile tab's associated content.</strong> Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + <div class="tab-pane fade" id="nav-contact" role="tabpanel" aria-labelledby="nav-contact-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Contact tab's</strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> </div> - <div class="tab-pane fade" id="nav-contact" role="tabpanel" aria-labelledby="nav-contact-tab"> - <p><strong>This is some placeholder content the Contact tab's associated content.</strong> Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + <div class="tab-pane fade" id="nav-disabled" role="tabpanel" aria-labelledby="nav-disabled-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Disabled tab's</strong> associated content.</p> </div> </div> </div> @@ -391,12 +419,14 @@ To help fit your needs, this works with `<ul>`-based markup, as shown above, or <button class="nav-link active" id="nav-home-tab" data-bs-toggle="tab" data-bs-target="#nav-home" type="button" role="tab" aria-controls="nav-home" aria-selected="true">Home</button> <button class="nav-link" id="nav-profile-tab" data-bs-toggle="tab" data-bs-target="#nav-profile" type="button" role="tab" aria-controls="nav-profile" aria-selected="false">Profile</button> <button class="nav-link" id="nav-contact-tab" data-bs-toggle="tab" data-bs-target="#nav-contact" type="button" role="tab" aria-controls="nav-contact" aria-selected="false">Contact</button> + <button class="nav-link" id="nav-disabled-tab" data-bs-toggle="tab" data-bs-target="#nav-disabled" type="button" role="tab" aria-controls="nav-disabled" aria-selected="false" disabled>Disabled</button> </div> </nav> <div class="tab-content" id="nav-tabContent"> - <div class="tab-pane fade show active" id="nav-home" role="tabpanel" aria-labelledby="nav-home-tab">...</div> - <div class="tab-pane fade" id="nav-profile" role="tabpanel" aria-labelledby="nav-profile-tab">...</div> - <div class="tab-pane fade" id="nav-contact" role="tabpanel" aria-labelledby="nav-contact-tab">...</div> + <div class="tab-pane fade show active" id="nav-home" role="tabpanel" aria-labelledby="nav-home-tab" tabindex="0">...</div> + <div class="tab-pane fade" id="nav-profile" role="tabpanel" aria-labelledby="nav-profile-tab" tabindex="0">...</div> + <div class="tab-pane fade" id="nav-contact" role="tabpanel" aria-labelledby="nav-contact-tab" tabindex="0">...</div> + <div class="tab-pane fade" id="nav-disabled" role="tabpanel" aria-labelledby="nav-disabled-tab" tabindex="0">...</div> </div> ``` @@ -413,16 +443,22 @@ The tabs plugin also works with pills. <li class="nav-item" role="presentation"> <button class="nav-link" id="pills-contact-tab" data-bs-toggle="pill" data-bs-target="#pills-contact" type="button" role="tab" aria-controls="pills-contact" aria-selected="false">Contact</button> </li> + <li class="nav-item" role="presentation"> + <button class="nav-link" id="pills-disabled-tab" data-bs-toggle="pill" data-bs-target="#pills-disabled" type="button" role="tab" aria-controls="pills-disabled" aria-selected="false" disabled>Disabled</button> + </li> </ul> <div class="tab-content" id="pills-tabContent"> - <div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab"> - <p><strong>This is some placeholder content the Home tab's associated content.</strong> Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + <div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Home tab's</strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> </div> - <div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab"> - <p><strong>This is some placeholder content the Profile tab's associated content.</strong> Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + <div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Profile tab's</strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> </div> - <div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab"> - <p><strong>This is some placeholder content the Contact tab's associated content.</strong> Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + <div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Contact tab's</strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + </div> + <div class="tab-pane fade" id="pills-disabled" role="tabpanel" aria-labelledby="pills-disabled-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Disabled tab's</strong> associated content.</p> </div> </div> </div> @@ -438,36 +474,44 @@ The tabs plugin also works with pills. <li class="nav-item" role="presentation"> <button class="nav-link" id="pills-contact-tab" data-bs-toggle="pill" data-bs-target="#pills-contact" type="button" role="tab" aria-controls="pills-contact" aria-selected="false">Contact</button> </li> + <li class="nav-item" role="presentation"> + <button class="nav-link" id="pills-disabled-tab" data-bs-toggle="pill" data-bs-target="#pills-disabled" type="button" role="tab" aria-controls="pills-disabled" aria-selected="false" disabled>Disabled</button> + </li> </ul> <div class="tab-content" id="pills-tabContent"> - <div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">...</div> - <div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab">...</div> - <div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab">...</div> + <div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab" tabindex="0">...</div> + <div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab" tabindex="0">...</div> + <div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab" tabindex="0">...</div> + <div class="tab-pane fade" id="pills-disabled" role="tabpanel" aria-labelledby="pills-disabled-tab" tabindex="0">...</div> </div> ``` -And with vertical pills. +And with vertical pills. Ideally, for vertical tabs, you should also add `aria-orientation="vertical"` to the tab list container. <div class="bd-example"> <div class="d-flex align-items-start"> <div class="nav flex-column nav-pills me-3" id="v-pills-tab" role="tablist" aria-orientation="vertical"> <button class="nav-link active" id="v-pills-home-tab" data-bs-toggle="pill" data-bs-target="#v-pills-home" type="button" role="tab" aria-controls="v-pills-home" aria-selected="true">Home</button> <button class="nav-link" id="v-pills-profile-tab" data-bs-toggle="pill" data-bs-target="#v-pills-profile" type="button" role="tab" aria-controls="v-pills-profile" aria-selected="false">Profile</button> + <button class="nav-link" id="v-pills-disabled-tab" data-bs-toggle="pill" data-bs-target="#v-pills-disabled" type="button" role="tab" aria-controls="v-pills-disabled" aria-selected="false" disabled>Disabled</button> <button class="nav-link" id="v-pills-messages-tab" data-bs-toggle="pill" data-bs-target="#v-pills-messages" type="button" role="tab" aria-controls="v-pills-messages" aria-selected="false">Messages</button> <button class="nav-link" id="v-pills-settings-tab" data-bs-toggle="pill" data-bs-target="#v-pills-settings" type="button" role="tab" aria-controls="v-pills-settings" aria-selected="false">Settings</button> </div> <div class="tab-content" id="v-pills-tabContent"> - <div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab"> - <p><strong>This is some placeholder content the Home tab's associated content.</strong> Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + <div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Home tab's</strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + </div> + <div class="tab-pane fade" id="v-pills-profile" role="tabpanel" aria-labelledby="v-pills-profile-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Profile tab's</strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> </div> - <div class="tab-pane fade" id="v-pills-profile" role="tabpanel" aria-labelledby="v-pills-profile-tab"> - <p><strong>This is some placeholder content the Profile tab's associated content.</strong> Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + <div class="tab-pane fade" id="v-pills-disabled" role="tabpanel" aria-labelledby="v-pills-disabled-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Disabled tab's</strong> associated content.</p> </div> - <div class="tab-pane fade" id="v-pills-messages" role="tabpanel" aria-labelledby="v-pills-messages-tab"> - <p><strong>This is some placeholder content the Messages tab's associated content.</strong> Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + <div class="tab-pane fade" id="v-pills-messages" role="tabpanel" aria-labelledby="v-pills-messages-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Messages tab's</strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> </div> - <div class="tab-pane fade" id="v-pills-settings" role="tabpanel" aria-labelledby="v-pills-settings-tab"> - <p><strong>This is some placeholder content the Settings tab's associated content.</strong> Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + <div class="tab-pane fade" id="v-pills-settings" role="tabpanel" aria-labelledby="v-pills-settings-tab" tabindex="0"> + <p>This is some placeholder content the <strong>Settings tab's</strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> </div> </div> </div> @@ -478,18 +522,34 @@ And with vertical pills. <div class="nav flex-column nav-pills me-3" id="v-pills-tab" role="tablist" aria-orientation="vertical"> <button class="nav-link active" id="v-pills-home-tab" data-bs-toggle="pill" data-bs-target="#v-pills-home" type="button" role="tab" aria-controls="v-pills-home" aria-selected="true">Home</button> <button class="nav-link" id="v-pills-profile-tab" data-bs-toggle="pill" data-bs-target="#v-pills-profile" type="button" role="tab" aria-controls="v-pills-profile" aria-selected="false">Profile</button> + <button class="nav-link" id="v-pills-disabled-tab" data-bs-toggle="pill" data-bs-target="#v-pills-disabled" type="button" role="tab" aria-controls="v-pills-disabled" aria-selected="false" disabled>Disabled</button> <button class="nav-link" id="v-pills-messages-tab" data-bs-toggle="pill" data-bs-target="#v-pills-messages" type="button" role="tab" aria-controls="v-pills-messages" aria-selected="false">Messages</button> <button class="nav-link" id="v-pills-settings-tab" data-bs-toggle="pill" data-bs-target="#v-pills-settings" type="button" role="tab" aria-controls="v-pills-settings" aria-selected="false">Settings</button> </div> <div class="tab-content" id="v-pills-tabContent"> - <div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab">...</div> - <div class="tab-pane fade" id="v-pills-profile" role="tabpanel" aria-labelledby="v-pills-profile-tab">...</div> - <div class="tab-pane fade" id="v-pills-messages" role="tabpanel" aria-labelledby="v-pills-messages-tab">...</div> - <div class="tab-pane fade" id="v-pills-settings" role="tabpanel" aria-labelledby="v-pills-settings-tab">...</div> + <div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab" tabindex="0">...</div> + <div class="tab-pane fade" id="v-pills-profile" role="tabpanel" aria-labelledby="v-pills-profile-tab" tabindex="0">...</div> + <div class="tab-pane fade" id="v-pills-disabled" role="tabpanel" aria-labelledby="v-pills-disabled-tab" tabindex="0">...</div> + <div class="tab-pane fade" id="v-pills-messages" role="tabpanel" aria-labelledby="v-pills-messages-tab" tabindex="0">...</div> + <div class="tab-pane fade" id="v-pills-settings" role="tabpanel" aria-labelledby="v-pills-settings-tab" tabindex="0">...</div> </div> </div> ``` +### Accessibility + +Dynamic tabbed interfaces, as described in the [ARIA Authoring Practices Guide tabs pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tabpanel/), require `role="tablist"`, `role="tab"`, `role="tabpanel"`, and additional `aria-` attributes in order to convey their structure, functionality, and current state to users of assistive technologies (such as screen readers). As a best practice, we recommend using `<button>` elements for the tabs, as these are controls that trigger a dynamic change, rather than links that navigate to a new page or location. + +In line with the ARIA Authoring Practices pattern, only the currently active tab receives keyboard focus. When the JavaScript plugin is initialized, it will set `tabindex="-1"` on all inactive tab controls. Once the currently active tab has focus, the cursor keys activate the previous/next tab, with the plugin changing the [roving `tabindex`](https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/) accordingly. However, note that the JavaScript plugin does not distinguish between horizontal and vertical tab lists when it comes to cursor key interactions: regardless of the tab list's orientation, both the up *and* left cursor go to the previous tab, and down *and* right cursor go to the next tab. + +{{< callout warning >}} +In general, to facilitate keyboard navigation, it's recommended to make the tab panels themselves focusable as well, unless the first element containing meaningful content inside the tab panel is already focusable. The JavaScript plugin does not try to handle this aspect—where appropriate, you'll need to explicitly make your tab panels focusable by adding `tabindex="0"` in your markup. +{{< /callout >}} + +{{< callout danger >}} +The tab JavaScript plugin **does not** support tabbed interfaces that contain dropdown menus, as these cause both usability and accessibility issues. From a usability perspective, the fact that the currently displayed tab's trigger element is not immediately visible (as it's inside the closed dropdown menu) can cause confusion. From an accessibility point of view, there is currently no sensible way to map this sort of construct to a standard WAI ARIA pattern, meaning that it cannot be easily made understandable to users of assistive technologies. +{{< /callout >}} + ### Using data attributes You can activate a tab or pill navigation without writing any JavaScript by simply specifying `data-bs-toggle="tab"` or `data-bs-toggle="pill"` on an element. Use these data attributes on `.nav-tabs` or `.nav-pills`. @@ -513,10 +573,10 @@ You can activate a tab or pill navigation without writing any JavaScript by simp <!-- Tab panes --> <div class="tab-content"> - <div class="tab-pane active" id="home" role="tabpanel" aria-labelledby="home-tab">...</div> - <div class="tab-pane" id="profile" role="tabpanel" aria-labelledby="profile-tab">...</div> - <div class="tab-pane" id="messages" role="tabpanel" aria-labelledby="messages-tab">...</div> - <div class="tab-pane" id="settings" role="tabpanel" aria-labelledby="settings-tab">...</div> + <div class="tab-pane active" id="home" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div> + <div class="tab-pane" id="profile" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div> + <div class="tab-pane" id="messages" role="tabpanel" aria-labelledby="messages-tab" tabindex="0">...</div> + <div class="tab-pane" id="settings" role="tabpanel" aria-labelledby="settings-tab" tabindex="0">...</div> </div> ``` @@ -525,11 +585,11 @@ You can activate a tab or pill navigation without writing any JavaScript by simp Enable tabbable tabs via JavaScript (each tab needs to be activated individually): ```js -var triggerTabList = [].slice.call(document.querySelectorAll('#myTab button')) -triggerTabList.forEach(function (triggerEl) { - var tabTrigger = new bootstrap.Tab(triggerEl) +const triggerTabList = document.querySelectorAll('#myTab button') +triggerTabList.forEach(triggerEl => { + const tabTrigger = new bootstrap.Tab(triggerEl) - triggerEl.addEventListener('click', function (event) { + triggerEl.addEventListener('click', event => { event.preventDefault() tabTrigger.show() }) @@ -539,10 +599,10 @@ triggerTabList.forEach(function (triggerEl) { You can activate individual tabs in several ways: ```js -var triggerEl = document.querySelector('#myTab button[data-bs-target="#profile"]') +const triggerEl = document.querySelector('#myTab button[data-bs-target="#profile"]') bootstrap.Tab.getInstance(triggerEl).show() // Select tab by name -var triggerFirstTabEl = document.querySelector('#myTab li:first-child button') +const triggerFirstTabEl = document.querySelector('#myTab li:first-child button') bootstrap.Tab.getInstance(triggerFirstTabEl).show() // Select first tab ``` @@ -552,10 +612,10 @@ To make tabs fade in, add `.fade` to each `.tab-pane`. The first tab pane must a ```html <div class="tab-content"> - <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">...</div> - <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">...</div> - <div class="tab-pane fade" id="messages" role="tabpanel" aria-labelledby="messages-tab">...</div> - <div class="tab-pane fade" id="settings" role="tabpanel" aria-labelledby="settings-tab">...</div> + <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div> + <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div> + <div class="tab-pane fade" id="messages" role="tabpanel" aria-labelledby="messages-tab" tabindex="0">...</div> + <div class="tab-pane fade" id="settings" role="tabpanel" aria-labelledby="settings-tab" tabindex="0">...</div> </div> ``` @@ -586,15 +646,15 @@ Activates a tab element and content container. Tab should have either a `data-bs </ul> <div class="tab-content"> - <div class="tab-pane active" id="home" role="tabpanel" aria-labelledby="home-tab">...</div> - <div class="tab-pane" id="profile" role="tabpanel" aria-labelledby="profile-tab">...</div> - <div class="tab-pane" id="messages" role="tabpanel" aria-labelledby="messages-tab">...</div> - <div class="tab-pane" id="settings" role="tabpanel" aria-labelledby="settings-tab">...</div> + <div class="tab-pane active" id="home" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div> + <div class="tab-pane" id="profile" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div> + <div class="tab-pane" id="messages" role="tabpanel" aria-labelledby="messages-tab" tabindex="0">...</div> + <div class="tab-pane" id="settings" role="tabpanel" aria-labelledby="settings-tab" tabindex="0">...</div> </div> <script> - var firstTabEl = document.querySelector('#myTab li:last-child button') - var firstTab = new bootstrap.Tab(firstTabEl) + const firstTabEl = document.querySelector('#myTab li:last-child button') + const firstTab = new bootstrap.Tab(firstTabEl) firstTab.show() </script> @@ -605,10 +665,10 @@ Activates a tab element and content container. Tab should have either a `data-bs Selects the given tab and shows its associated pane. Any other tab that was previously selected becomes unselected and its associated pane is hidden. **Returns to the caller before the tab pane has actually been shown** (i.e. before the `shown.bs.tab` event occurs). ```js - var someTabTriggerEl = document.querySelector('#someTabTrigger') - var tab = new bootstrap.Tab(someTabTriggerEl) +const someTabTriggerEl = document.querySelector('#someTabTrigger') +const tab = new bootstrap.Tab(someTabTriggerEl) - tab.show() +tab.show() ``` #### dispose @@ -620,8 +680,7 @@ Destroys an element's tab. *Static* method which allows you to get the tab instance associated with a DOM element ```js -var triggerEl = document.querySelector('#trigger') -var tab = bootstrap.Tab.getInstance(triggerEl) // Returns a Bootstrap tab instance +const tab = bootstrap.Tab.getInstance('#trigger') // Returns a Bootstrap tab instance ``` #### getOrCreateInstance @@ -629,8 +688,7 @@ var tab = bootstrap.Tab.getInstance(triggerEl) // Returns a Bootstrap tab instan *Static* method which allows you to get the tab instance associated with a DOM element, or create a new one in case it wasn't initialized ```js -var triggerEl = document.querySelector('#trigger') -var tab = bootstrap.Tab.getOrCreateInstance(triggerEl) // Returns a Bootstrap tab instance +const tab = bootstrap.Tab.getOrCreateInstance('#trigger') // Returns a Bootstrap tab instance ``` ### Events @@ -644,36 +702,18 @@ When showing a new tab, the events fire in the following order: If no tab was already active, then the `hide.bs.tab` and `hidden.bs.tab` events will not be fired. -<table class="table"> - <thead> - <tr> - <th style="width: 150px;">Event type</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>show.bs.tab</code></td> - <td>This event fires on tab show, but before the new tab has been shown. Use <code>event.target</code> and <code>event.relatedTarget</code> to target the active tab and the previous active tab (if available) respectively.</td> - </tr> - <tr> - <td><code>shown.bs.tab</code></td> - <td>This event fires on tab show after a tab has been shown. Use <code>event.target</code> and <code>event.relatedTarget</code> to target the active tab and the previous active tab (if available) respectively.</td> - </tr> - <tr> - <td><code>hide.bs.tab</code></td> - <td>This event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). Use <code>event.target</code> and <code>event.relatedTarget</code> to target the current active tab and the new soon-to-be-active tab, respectively.</td> - </tr> - <tr> - <td><code>hidden.bs.tab</code></td> - <td>This event fires after a new tab is shown (and thus the previous active tab is hidden). Use <code>event.target</code> and <code>event.relatedTarget</code> to target the previous active tab and the new active tab, respectively.</td> - </tr> - </tbody> -</table> +{{< bs-table >}} +| Event type | Description | +| --- | --- | +| `hide.bs.tab` | This event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). Use `event.target` and `event.relatedTarget` to target the current active tab and the new soon-to-be-active tab, respectively. | +| `hidden.bs.tab` | This event fires after a new tab is shown (and thus the previous active tab is hidden). Use `event.target` and `event.relatedTarget` to target the previous active tab and the new active tab, respectively. | +| `show.bs.tab` | This event fires on tab show, but before the new tab has been shown. Use `event.target` and `event.relatedTarget` to target the active tab and the previous active tab (if available) respectively. | +| `shown.bs.tab` | This event fires on tab show after a tab has been shown. Use `event.target` and `event.relatedTarget` to target the active tab and the previous active tab (if available) respectively. | +{{< /bs-table >}} ```js -var tabEl = document.querySelector('button[data-bs-toggle="tab"]') -tabEl.addEventListener('shown.bs.tab', function (event) { +const tabEl = document.querySelector('button[data-bs-toggle="tab"]') +tabEl.addEventListener('shown.bs.tab', event => { event.target // newly activated tab event.relatedTarget // previous active tab }) diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/offcanvas.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/offcanvas.md index 6be2cd64d..39a5fb826 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/offcanvas.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/offcanvas.md @@ -8,7 +8,7 @@ toc: true ## How it works -Offcanvas is a sidebar component that can be toggled via JavaScript to appear from the left, right, or bottom edge of the viewport. Buttons or anchors are used as triggers that are attached to specific elements you toggle, and `data` attributes are used to invoke our JavaScript. +Offcanvas is a sidebar component that can be toggled via JavaScript to appear from the left, right, top, or bottom edge of the viewport. Buttons or anchors are used as triggers that are attached to specific elements you toggle, and `data` attributes are used to invoke our JavaScript. - Offcanvas shares some of the same JavaScript code as modals. Conceptually, they are quite similar, but they are separate plugins. - Similarly, some [source Sass](#sass) variables for offcanvas's styles and dimensions are inherited from the modal's variables. @@ -28,10 +28,10 @@ Offcanvas is a sidebar component that can be toggled via JavaScript to appear fr Below is an offcanvas example that is shown by default (via `.show` on `.offcanvas`). Offcanvas includes support for a header with a close button and an optional body class for some initial `padding`. We suggest that you include offcanvas headers with dismiss actions whenever possible, or provide an explicit dismiss action. {{< example class="bd-example-offcanvas p-0 bg-light overflow-hidden" >}} -<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvas" aria-labelledby="offcanvasLabel"> +<div class="offcanvas offcanvas-start show" tabindex="-1" id="offcanvas" aria-labelledby="offcanvasLabel"> <div class="offcanvas-header"> <h5 class="offcanvas-title" id="offcanvasLabel">Offcanvas</h5> - <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button> + <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> </div> <div class="offcanvas-body"> Content for the offcanvas goes here. You can place just about any Bootstrap component or custom elements here. @@ -59,17 +59,17 @@ You can use a link with the `href` attribute, or a button with the `data-bs-targ <div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasExample" aria-labelledby="offcanvasExampleLabel"> <div class="offcanvas-header"> <h5 class="offcanvas-title" id="offcanvasExampleLabel">Offcanvas</h5> - <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button> + <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> </div> <div class="offcanvas-body"> <div class=""> Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc. </div> <div class="dropdown mt-3"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown"> Dropdown button </button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> @@ -79,93 +79,160 @@ You can use a link with the `href` attribute, or a button with the `data-bs-targ </div> {{< /example >}} -## Placement +### Dark offcanvas -There's no default placement for offcanvas components, so you must add one of the modifier classes below; +Change the appearance of offcanvases with utilities to better match them to different contexts like dark navbars. Here we add `.text-bg-dark` to the `.offcanvas` and `.btn-close-white` to `.btn-close` for proper styling with a dark offcanvas. If you have dropdowns within, consider also adding `.dropdown-menu-dark` to `.dropdown-menu`. -- `.offcanvas-start` places offcanvas on the left of the viewport (shown above) -- `.offcanvas-end` places offcanvas on the right of the viewport -- `.offcanvas-top` places offcanvas on the top of the viewport -- `.offcanvas-bottom` places offcanvas on the bottom of the viewport +{{< example class="bd-example-offcanvas p-0 bg-light overflow-hidden" >}} +<div class="offcanvas offcanvas-start show text-bg-dark" tabindex="-1" id="offcanvasDark" aria-labelledby="offcanvasDarkLabel"> + <div class="offcanvas-header"> + <h5 class="offcanvas-title" id="offcanvasDarkLabel">Offcanvas</h5> + <button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvasDark" aria-label="Close"></button> + </div> + <div class="offcanvas-body"> + <p>Place offcanvas content here.</p> + </div> +</div> +{{< /example >}} -Try the top, right, and bottom examples out below. +### Body scrolling + +Scrolling the `<body>` element is disabled when an offcanvas and its backdrop are visible. Use the `data-bs-scroll` attribute to enable `<body>` scrolling. {{< example >}} -<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasTop" aria-controls="offcanvasTop">Toggle top offcanvas</button> +<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasScrolling" aria-controls="offcanvasScrolling">Enable body scrolling</button> -<div class="offcanvas offcanvas-top" tabindex="-1" id="offcanvasTop" aria-labelledby="offcanvasTopLabel"> +<div class="offcanvas offcanvas-start" data-bs-scroll="true" data-bs-backdrop="false" tabindex="-1" id="offcanvasScrolling" aria-labelledby="offcanvasScrollingLabel"> <div class="offcanvas-header"> - <h5 id="offcanvasTopLabel">Offcanvas top</h5> - <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button> + <h5 class="offcanvas-title" id="offcanvasScrollingLabel">Offcanvas with body scrolling</h5> + <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> </div> <div class="offcanvas-body"> - ... + <p>Try scrolling the rest of the page to see this option in action.</p> </div> </div> {{< /example >}} +### Body scrolling and backdrop + +You can also enable `<body>` scrolling with a visible backdrop. + {{< example >}} -<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight">Toggle right offcanvas</button> +<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasWithBothOptions" aria-controls="offcanvasWithBothOptions">Enable both scrolling & backdrop</button> -<div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasRight" aria-labelledby="offcanvasRightLabel"> +<div class="offcanvas offcanvas-start" data-bs-scroll="true" tabindex="-1" id="offcanvasWithBothOptions" aria-labelledby="offcanvasWithBothOptionsLabel"> <div class="offcanvas-header"> - <h5 id="offcanvasRightLabel">Offcanvas right</h5> - <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button> + <h5 class="offcanvas-title" id="offcanvasWithBothOptionsLabel">Backdrop with scrolling</h5> + <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> </div> <div class="offcanvas-body"> - ... + <p>Try scrolling the rest of the page to see this option in action.</p> </div> </div> {{< /example >}} +### Static backdrop + +When backdrop is set to static, the offcanvas will not close when clicking outside of it. + {{< example >}} -<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasBottom" aria-controls="offcanvasBottom">Toggle bottom offcanvas</button> +<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#staticBackdrop" aria-controls="staticBackdrop"> + Toggle static offcanvas +</button> -<div class="offcanvas offcanvas-bottom" tabindex="-1" id="offcanvasBottom" aria-labelledby="offcanvasBottomLabel"> +<div class="offcanvas offcanvas-start" data-bs-backdrop="static" tabindex="-1" id="staticBackdrop" aria-labelledby="staticBackdropLabel"> <div class="offcanvas-header"> - <h5 class="offcanvas-title" id="offcanvasBottomLabel">Offcanvas bottom</h5> - <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button> + <h5 class="offcanvas-title" id="staticBackdropLabel">Offcanvas</h5> + <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> </div> - <div class="offcanvas-body small"> - ... + <div class="offcanvas-body"> + <div> + I will not close if you click outside of me. + </div> </div> </div> {{< /example >}} -## Backdrop +## Responsive -Scrolling the `<body>` element is disabled when an offcanvas and its backdrop are visible. Use the `data-bs-scroll` attribute to toggle `<body>` scrolling and `data-bs-backdrop` to toggle the backdrop. +<small class="d-inline-flex px-2 py-1 fw-semibold text-success bg-success bg-opacity-10 rounded-2">Added in v5.2.0</small> + +Responsive offcanvas classes hide content outside the viewport from a specified breakpoint and down. Above that breakpoint, the contents within will behave as usual. For example, `.offcanvas-lg` hides content in an offcanvas below the `lg` breakpoint, but shows the content above the `lg` breakpoint. {{< example >}} -<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasScrolling" aria-controls="offcanvasScrolling">Enable body scrolling</button> -<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasWithBackdrop" aria-controls="offcanvasWithBackdrop">Enable backdrop (default)</button> -<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasWithBothOptions" aria-controls="offcanvasWithBothOptions">Enable both scrolling & backdrop</button> +<button class="btn btn-primary d-lg-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasResponsive" aria-controls="offcanvasResponsive">Toggle offcanvas</button> -<div class="offcanvas offcanvas-start" data-bs-scroll="true" data-bs-backdrop="false" tabindex="-1" id="offcanvasScrolling" aria-labelledby="offcanvasScrollingLabel"> +<div class="alert alert-info d-none d-lg-block">Resize your browser to show the responsive offcanvas toggle.</div> + +<div class="offcanvas-lg offcanvas-end" tabindex="-1" id="offcanvasResponsive" aria-labelledby="offcanvasResponsiveLabel"> <div class="offcanvas-header"> - <h5 class="offcanvas-title" id="offcanvasScrollingLabel">Colored with scrolling</h5> - <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button> + <h5 class="offcanvas-title" id="offcanvasResponsiveLabel">Responsive offcanvas</h5> + <button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#offcanvasResponsive" aria-label="Close"></button> </div> <div class="offcanvas-body"> - <p>Try scrolling the rest of the page to see this option in action.</p> + <p class="mb-0">This is content within an <code>.offcanvas-lg</code>.</p> </div> </div> -<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasWithBackdrop" aria-labelledby="offcanvasWithBackdropLabel"> +{{< /example >}} + +Responsive offcanvas classes are available across for each breakpoint. + +- `.offcanvas` +- `.offcanvas-sm` +- `.offcanvas-md` +- `.offcanvas-lg` +- `.offcanvas-xl` +- `.offcanvas-xxl` + +## Placement + +There's no default placement for offcanvas components, so you must add one of the modifier classes below. + +- `.offcanvas-start` places offcanvas on the left of the viewport (shown above) +- `.offcanvas-end` places offcanvas on the right of the viewport +- `.offcanvas-top` places offcanvas on the top of the viewport +- `.offcanvas-bottom` places offcanvas on the bottom of the viewport + +Try the top, right, and bottom examples out below. + +{{< example >}} +<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasTop" aria-controls="offcanvasTop">Toggle top offcanvas</button> + +<div class="offcanvas offcanvas-top" tabindex="-1" id="offcanvasTop" aria-labelledby="offcanvasTopLabel"> <div class="offcanvas-header"> - <h5 class="offcanvas-title" id="offcanvasWithBackdropLabel">Offcanvas with backdrop</h5> - <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button> + <h5 class="offcanvas-title" id="offcanvasTopLabel">Offcanvas top</h5> + <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> </div> <div class="offcanvas-body"> - <p>.....</p> + ... </div> </div> -<div class="offcanvas offcanvas-start" data-bs-scroll="true" tabindex="-1" id="offcanvasWithBothOptions" aria-labelledby="offcanvasWithBothOptionsLabel"> +{{< /example >}} + +{{< example >}} +<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight">Toggle right offcanvas</button> + +<div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasRight" aria-labelledby="offcanvasRightLabel"> <div class="offcanvas-header"> - <h5 class="offcanvas-title" id="offcanvasWithBothOptionsLabel">Backdrop with scrolling</h5> - <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button> + <h5 class="offcanvas-title" id="offcanvasRightLabel">Offcanvas right</h5> + <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> </div> <div class="offcanvas-body"> - <p>Try scrolling the rest of the page to see this option in action.</p> + ... + </div> +</div> +{{< /example >}} + +{{< example >}} +<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasBottom" aria-controls="offcanvasBottom">Toggle bottom offcanvas</button> + +<div class="offcanvas offcanvas-bottom" tabindex="-1" id="offcanvasBottom" aria-labelledby="offcanvasBottomLabel"> + <div class="offcanvas-header"> + <h5 class="offcanvas-title" id="offcanvasBottomLabel">Offcanvas bottom</h5> + <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> + </div> + <div class="offcanvas-body small"> + ... </div> </div> {{< /example >}} @@ -174,10 +241,18 @@ Scrolling the `<body>` element is disabled when an offcanvas and its backdrop ar Since the offcanvas panel is conceptually a modal dialog, be sure to add `aria-labelledby="..."`—referencing the offcanvas title—to `.offcanvas`. Note that you don’t need to add `role="dialog"` since we already add it via JavaScript. -## Sass +## CSS ### Variables +<small class="d-inline-flex px-2 py-1 fw-semibold text-success bg-success bg-opacity-10 rounded-2">Added in v5.2.0</small> + +As part of Bootstrap's evolving CSS variables approach, offcanvas now uses local CSS variables on `.offcanvas` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +{{< scss-docs name="offcanvas-css-vars" file="scss/_offcanvas.scss" >}} + +### Sass variables + {{< scss-docs name="offcanvas-variables" file="scss/_variables.scss" >}} ## Usage @@ -188,6 +263,7 @@ The offcanvas plugin utilizes a few classes and attributes to handle the heavy l - `.offcanvas.show` shows the content - `.offcanvas-start` hides the offcanvas on the left - `.offcanvas-end` hides the offcanvas on the right +- `.offcanvas-top` hides the offcanvas on the top - `.offcanvas-bottom` hides the offcanvas on the bottom Add a dismiss button with the `data-bs-dismiss="offcanvas"` attribute, which triggers the JavaScript functionality. Be sure to use the `<button>` element with it for proper behavior across all devices. @@ -203,7 +279,7 @@ Add `data-bs-toggle="offcanvas"` and a `data-bs-target` or `href` to the element {{% js-dismiss "offcanvas" %}} {{< callout warning >}} -While both ways to dismiss an offcanvas are supported, keep in mind that dismissing from outside an offcanvas does not match [the WAI-ARIA modal dialog design pattern](https://www.w3.org/TR/wai-aria-practices-1.1/#dialog_modal). Do this at your own risk. +While both ways to dismiss an offcanvas are supported, keep in mind that dismissing from outside an offcanvas does not match the [ARIA Authoring Practices Guide dialog (modal) pattern](https://www.w3.org/WAI/ARIA/apg/patterns/dialogmodal/). Do this at your own risk. {{< /callout >}} ### Via JavaScript @@ -211,20 +287,20 @@ While both ways to dismiss an offcanvas are supported, keep in mind that dismiss Enable manually with: ```js -var offcanvasElementList = [].slice.call(document.querySelectorAll('.offcanvas')) -var offcanvasList = offcanvasElementList.map(function (offcanvasEl) { - return new bootstrap.Offcanvas(offcanvasEl) -}) +const offcanvasElementList = document.querySelectorAll('.offcanvas') +const offcanvasList = [...offcanvasElementList].map(offcanvasEl => new bootstrap.Offcanvas(offcanvasEl)) ``` ### Options -Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-bs-`, as in `data-bs-backdrop=""`. +{{< markdown >}} +{{< partial "js-data-attributes.md" >}} +{{< /markdown >}} {{< bs-table "table" >}} | Name | Type | Default | Description | | --- | --- | --- | --- | -| `backdrop` | boolean | `true` | Apply a backdrop on body while offcanvas is open | +| `backdrop` | boolean or the string `static` | `true` | Apply a backdrop on body while offcanvas is open. Alternatively, specify `static` for a backdrop which doesn't close the offcanvas when clicked. | | `keyboard` | boolean | `true` | Closes the offcanvas when escape key is pressed | | `scroll` | boolean | `false` | Allow body scrolling while offcanvas is open | {{< /bs-table >}} @@ -240,18 +316,17 @@ Activates your content as an offcanvas element. Accepts an optional options `obj You can create an offcanvas instance with the constructor, for example: ```js -var myOffcanvas = document.getElementById('myOffcanvas') -var bsOffcanvas = new bootstrap.Offcanvas(myOffcanvas) +const bsOffcanvas = new bootstrap.Offcanvas('#myOffcanvas') ``` {{< bs-table "table" >}} | Method | Description | | --- | --- | -| `toggle` | Toggles an offcanvas element to shown or hidden. **Returns to the caller before the offcanvas element has actually been shown or hidden** (i.e. before the `shown.bs.offcanvas` or `hidden.bs.offcanvas` event occurs). | -| `show` | Shows an offcanvas element. **Returns to the caller before the offcanvas element has actually been shown** (i.e. before the `shown.bs.offcanvas` event occurs).| -| `hide` | Hides an offcanvas element. **Returns to the caller before the offcanvas element has actually been hidden** (i.e. before the `hidden.bs.offcanvas` event occurs).| | `getInstance` | *Static* method which allows you to get the offcanvas instance associated with a DOM element | | `getOrCreateInstance` | *Static* method which allows you to get the offcanvas instance associated with a DOM element, or create a new one in case it wasn't initialized | +| `hide` | Hides an offcanvas element. **Returns to the caller before the offcanvas element has actually been hidden** (i.e. before the `hidden.bs.offcanvas` event occurs).| +| `show` | Shows an offcanvas element. **Returns to the caller before the offcanvas element has actually been shown** (i.e. before the `shown.bs.offcanvas` event occurs).| +| `toggle` | Toggles an offcanvas element to shown or hidden. **Returns to the caller before the offcanvas element has actually been shown or hidden** (i.e. before the `shown.bs.offcanvas` or `hidden.bs.offcanvas` event occurs). | {{< /bs-table >}} ### Events @@ -261,15 +336,16 @@ Bootstrap's offcanvas class exposes a few events for hooking into offcanvas func {{< bs-table "table" >}} | Event type | Description | | --- | --- | -| `show.bs.offcanvas` | This event fires immediately when the `show` instance method is called. | -| `shown.bs.offcanvas` | This event is fired when an offcanvas element has been made visible to the user (will wait for CSS transitions to complete). | | `hide.bs.offcanvas` | This event is fired immediately when the `hide` method has been called. | | `hidden.bs.offcanvas` | This event is fired when an offcanvas element has been hidden from the user (will wait for CSS transitions to complete). | +| `hidePrevented.bs.offcanvas` | This event is fired when the offcanvas is shown, its backdrop is `static` and a click outside of the offcanvas is performed. The event is also fired when the escape key is pressed and the `keyboard` option is set to `false`. | +| `show.bs.offcanvas` | This event fires immediately when the `show` instance method is called. | +| `shown.bs.offcanvas` | This event is fired when an offcanvas element has been made visible to the user (will wait for CSS transitions to complete). | {{< /bs-table >}} ```js -var myOffcanvas = document.getElementById('myOffcanvas') -myOffcanvas.addEventListener('hidden.bs.offcanvas', function () { +const myOffcanvas = document.getElementById('myOffcanvas') +myOffcanvas.addEventListener('hidden.bs.offcanvas', event => { // do something... }) ``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/pagination.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/pagination.md index 7e70a77e1..725140576 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/pagination.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/pagination.md @@ -122,7 +122,7 @@ Fancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for ## Alignment -Change the alignment of pagination components with [flexbox utilities]({{< docsref "/utilities/flex" >}}). +Change the alignment of pagination components with [flexbox utilities]({{< docsref "/utilities/flex" >}}). For example, with `.justify-content-center`: {{< example >}} <nav aria-label="Page navigation example"> @@ -140,6 +140,8 @@ Change the alignment of pagination components with [flexbox utilities]({{< docsr </nav> {{< /example >}} +Or with `.justify-content-end`: + {{< example >}} <nav aria-label="Page navigation example"> <ul class="pagination justify-content-end"> @@ -156,12 +158,20 @@ Change the alignment of pagination components with [flexbox utilities]({{< docsr </nav> {{< /example >}} -## Sass +## CSS ### Variables +{{< added-in "5.2.0" >}} + +As part of Bootstrap's evolving CSS variables approach, pagination now uses local CSS variables on `.pagination` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +{{< scss-docs name="pagination-css-vars" file="scss/_pagination.scss" >}} + +### Sass variables + {{< scss-docs name="pagination-variables" file="scss/_variables.scss" >}} -### Mixins +### Sass mixins {{< scss-docs name="pagination-mixin" file="scss/mixins/_pagination.scss" >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/placeholders.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/placeholders.md index 7b380b603..4de405756 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/placeholders.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/placeholders.md @@ -4,6 +4,7 @@ title: Placeholders description: Use loading placeholders for your components or pages to indicate something may still be loading. group: components toc: true +added: "5.1" --- ## About diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/components/popovers.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/popovers.md new file mode 100644 index 000000000..8dd28ec55 --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/popovers.md @@ -0,0 +1,277 @@ +--- +layout: docs +title: Popovers +description: Documentation and examples for adding Bootstrap popovers, like those found in iOS, to any element on your site. +group: components +toc: true +--- + +## Overview + +Things to know when using the popover plugin: + +- Popovers rely on the third party library [Popper](https://popper.js.org/) for positioning. You must include [popper.min.js]({{< param "cdn.popper" >}}) before `bootstrap.js`, or use one `bootstrap.bundle.min.js` which contains Popper. +- Popovers require the [popover plugin]({{< docsref "/components/popovers" >}}) as a dependency. +- Popovers are opt-in for performance reasons, so **you must initialize them yourself**. +- Zero-length `title` and `content` values will never show a popover. +- Specify `container: 'body'` to avoid rendering problems in more complex components (like our input groups, button groups, etc). +- Triggering popovers on hidden elements will not work. +- Popovers for `.disabled` or `disabled` elements must be triggered on a wrapper element. +- When triggered from anchors that wrap across multiple lines, popovers will be centered between the anchors' overall width. Use `.text-nowrap` on your `<a>`s to avoid this behavior. +- Popovers must be hidden before their corresponding elements have been removed from the DOM. +- Popovers can be triggered thanks to an element inside a shadow DOM. + +{{< callout info >}} +{{< partial "callout-info-sanitizer.md" >}} +{{< /callout >}} + +{{< callout info >}} +{{< partial "callout-info-prefersreducedmotion.md" >}} +{{< /callout >}} + +Keep reading to see how popovers work with some examples. + +## Examples + +### Enable popovers + +As mentioned above, you must initialize popovers before they can be used. One way to initialize all popovers on a page would be to select them by their `data-bs-toggle` attribute, like so: + +```js +const popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]') +const popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl)) +``` + +### Live demo + +We use JavaScript similar to the snippet above to render the following live popover. Titles are set via `data-bs-title` and body content is set via `data-bs-content`. + +{{< callout warning >}} +{{< partial "callout-warning-data-bs-title-vs-title.md" >}} +{{< /callout >}} + +{{< example stackblitz_add_js="true" >}} +<button type="button" class="btn btn-lg btn-danger" data-bs-toggle="popover" data-bs-title="Popover title" data-bs-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button> +{{< /example >}} + +### Four directions + +Four options are available: top, right, bottom, and left. Directions are mirrored when using Bootstrap in RTL. Set `data-bs-placement` to change the direction. + +{{< example stackblitz_add_js="true" >}} +<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="top" data-bs-content="Top popover"> + Popover on top +</button> +<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="right" data-bs-content="Right popover"> + Popover on right +</button> +<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="bottom" data-bs-content="Bottom popover"> + Popover on bottom +</button> +<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="left" data-bs-content="Left popover"> + Popover on left +</button> +{{< /example >}} + +### Custom `container` + +When you have some styles on a parent element that interfere with a popover, you'll want to specify a custom `container` so that the popover's HTML appears within that element instead. This is common in responsive tables, input groups, and the like. + +```js +const popover = new bootstrap.Popover('.example-popover', { + container: 'body' +}) +``` + +### Custom popovers + +{{< added-in "5.2.0" >}} + +You can customize the appearance of popovers using [CSS variables](#variables). We set a custom class with `data-bs-custom-class="custom-popover"` to scope our custom appearance and use it to override some of the local CSS variables. + +{{< scss-docs name="custom-popovers" file="site/assets/scss/_component-examples.scss" >}} + +{{< example class="custom-popover-demo" stackblitz_add_js="true" >}} +<button type="button" class="btn btn-secondary" + data-bs-toggle="popover" data-bs-placement="right" + data-bs-custom-class="custom-popover" + data-bs-title="Custom popover" + data-bs-content="This popover is themed via CSS variables."> + Custom popover +</button> +{{< /example >}} + +### Dismiss on next click + +Use the `focus` trigger to dismiss popovers on the user's next click of a different element than the toggle element. + +{{< callout danger >}} +#### Specific markup required for dismiss-on-next-click + +For proper cross-browser and cross-platform behavior, you must use the `<a>` tag, _not_ the `<button>` tag, and you also must include a [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) attribute. +{{< /callout >}} + +{{< example stackblitz_add_js="true" >}} +<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-bs-toggle="popover" data-bs-trigger="focus" data-bs-title="Dismissible popover" data-bs-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a> +{{< /example >}} + +```js +const popover = new bootstrap.Popover('.popover-dismiss', { + trigger: 'focus' +}) +``` + +### Disabled elements + +Elements with the `disabled` attribute aren't interactive, meaning users cannot hover or click them to trigger a popover (or tooltip). As a workaround, you'll want to trigger the popover from a wrapper `<div>` or `<span>`, ideally made keyboard-focusable using `tabindex="0"`. + +For disabled popover triggers, you may also prefer `data-bs-trigger="hover focus"` so that the popover appears as immediate visual feedback to your users as they may not expect to _click_ on a disabled element. + +{{< example stackblitz_add_js="true" >}} +<span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="Disabled popover"> + <button class="btn btn-primary" type="button" disabled>Disabled button</button> +</span> +{{< /example >}} + +## CSS + +### Variables + +{{< added-in "5.2.0" >}} + +As part of Bootstrap’s evolving CSS variables approach, popovers now use local CSS variables on `.popover` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +{{< scss-docs name="popover-css-vars" file="scss/_popover.scss" >}} + +### Sass variables + +{{< scss-docs name="popover-variables" file="scss/_variables.scss" >}} + +## Usage + +Enable popovers via JavaScript: + +```js +const exampleEl = document.getElementById('example') +const popover = new bootstrap.Popover(exampleEl, options) +``` + +{{< callout warning >}} +### Making popovers work for keyboard and assistive technology users + +To allow keyboard users to activate your popovers, you should only add them to HTML elements that are traditionally keyboard-focusable and interactive (such as links or form controls). Although arbitrary HTML elements (such as `<span>`s) can be made focusable by adding the `tabindex="0"` attribute, this will add potentially annoying and confusing tab stops on non-interactive elements for keyboard users, and most assistive technologies currently do not announce the popover's content in this situation. Additionally, do not rely solely on `hover` as the trigger for your popovers, as this will make them impossible to trigger for keyboard users. + +While you can insert rich, structured HTML in popovers with the `html` option, we strongly recommend that you avoid adding an excessive amount of content. The way popovers currently work is that, once displayed, their content is tied to the trigger element with the `aria-describedby` attribute. As a result, the entirety of the popover's content will be announced to assistive technology users as one long, uninterrupted stream. + +Additionally, while it is possible to also include interactive controls (such as form elements or links) in your popover (by adding these elements to the `allowList` of allowed attributes and tags), be aware that currently the popover does not manage keyboard focus order. When a keyboard user opens a popover, focus remains on the triggering element, and as the popover usually does not immediately follow the trigger in the document's structure, there is no guarantee that moving forward/pressing <kbd>TAB</kbd> will move a keyboard user into the popover itself. In short, simply adding interactive controls to a popover is likely to make these controls unreachable/unusable for keyboard users and users of assistive technologies, or at the very least make for an illogical overall focus order. In these cases, consider using a modal dialog instead. +{{< /callout >}} + +### Options + +{{< markdown >}} +{{< partial "js-data-attributes.md" >}} +{{< /markdown >}} + +{{< callout warning >}} +Note that for security reasons the `sanitize`, `sanitizeFn`, and `allowList` options cannot be supplied using data attributes. +{{< /callout >}} + + +{{< bs-table "table" >}} +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| `allowList` | object | [Default value]({{< docsref "/getting-started/javascript#sanitizer" >}}) | Object which contains allowed attributes and tags. | +| `animation` | boolean | `true` | Apply a CSS fade transition to the popover | +| `boundary` | string, element | `'clippingParents'` | Overflow constraint boundary of the popover (applies only to Popper's preventOverflow modifier). By default, it's `'clippingParents'` and can accept an HTMLElement reference (via JavaScript only). For more information refer to Popper's [detectOverflow docs](https://popper.js.org/docs/v2/utils/detect-overflow/#boundary). | +| `container` | string, element, false | `false` | Appends the popover to a specific element. Example: `container: 'body'`. This option is particularly useful in that it allows you to position the popover in the flow of the document near the triggering element - which will prevent the popover from floating away from the triggering element during a window resize. | +| `content` | string, element, function | `''` | Default content value if `data-bs-content` attribute isn't present. If a function is given, it will be called with its `this` reference set to the element that the popover is attached to. +| `customClass` | string, function | `''` | Add classes to the popover when it is shown. Note that these classes will be added in addition to any classes specified in the template. To add multiple classes, separate them with spaces: `'class-1 class-2'`. You can also pass a function that should return a single string containing additional class names. | +| `delay` | number, object | `0` | Delay showing and hiding the popover (ms)—doesn't apply to manual trigger type. If a number is supplied, delay is applied to both hide/show. Object structure is: `delay: { "show": 500, "hide": 100 }`. | +| `fallbackPlacements` | string, array | `['top', 'right', 'bottom', 'left']` | Define fallback placements by providing a list of placements in array (in order of preference). For more information refer to Popper's [behavior docs](https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements). | +| `html` | boolean | `false` | Allow HTML in the popover. If true, HTML tags in the popover's `title` will be rendered in the popover. If false, `innerText` property will be used to insert content into the DOM. Use text if you're worried about XSS attacks. | +| `offset` | number, string, function | `[0, 0]` | Offset of the popover relative to its target. You can pass a string in data attributes with comma separated values like: `data-bs-offset="10,20"`. When a function is used to determine the offset, it is called with an object containing the popper placement, the reference, and popper rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: [skidding](https://popper.js.org/docs/v2/modifiers/offset/#skidding-1), [distance](https://popper.js.org/docs/v2/modifiers/offset/#distance-1). For more information refer to Popper's [offset docs](https://popper.js.org/docs/v2/modifiers/offset/#options). | +| `placement` | string, function | `'top'` | How to position the popover: auto, top, bottom, left, right. When `auto` is specified, it will dynamically reorient the popover. When a function is used to determine the placement, it is called with the popover DOM node as its first argument and the triggering element DOM node as its second. The `this` context is set to the popover instance. | +| `popperConfig` | null, object, function | `null` | To change Bootstrap's default Popper config, see [Popper's configuration](https://popper.js.org/docs/v2/constructors/#options). When a function is used to create the Popper configuration, it's called with an object that contains the Bootstrap's default Popper configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Popper.| +| `sanitize` | boolean | `true` | Enable or disable the sanitization. If activated `'template'`, `'content'` and `'title'` options will be sanitized. | +| `sanitizeFn` | null, function | `null` | Here you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization. | +| `selector` | string, false | `false` | If a selector is provided, popover objects will be delegated to the specified targets. In practice, this is used to also apply popovers to dynamically added DOM elements (`jQuery.on` support). See [this issue]({{< param repo >}}/issues/4215) and [an informative example](https://codepen.io/Johann-S/pen/djJYPb). | +| `template` | string | `'<div class="popover" role="popover"><div class="popover-arrow"></div><div class="popover-inner"></div></div>'` | Base HTML to use when creating the popover. The popover's `title` will be injected into the `.popover-inner`. `.popover-arrow` will become the popover's arrow. The outermost wrapper element should have the `.popover` class and `role="popover"`. | +| `title` | string, element, function | `''` | Default title value if `title` attribute isn't present. If a function is given, it will be called with its `this` reference set to the element that the popover is attached to. | +| `trigger` | string | `'hover focus'` | How popover is triggered: click, hover, focus, manual. You may pass multiple triggers; separate them with a space. `'manual'` indicates that the popover will be triggered programmatically via the `.popover('show')`, `.popover('hide')` and `.popover('toggle')` methods; this value cannot be combined with any other trigger. `'hover'` on its own will result in popovers that cannot be triggered via the keyboard, and should only be used if alternative methods for conveying the same information for keyboard users is present. | +{{< /bs-table >}} + +{{< callout info >}} +#### Data attributes for individual popovers + +Options for individual popovers can alternatively be specified through the use of data attributes, as explained above. +{{< /callout >}} + +#### Using function with `popperConfig` + +```js +const popover = new bootstrap.Popover(element, { + popperConfig(defaultBsPopperConfig) { + // const newPopperConfig = {...} + // use defaultBsPopperConfig if needed... + // return newPopperConfig + } +}) +``` + +### Methods + +{{< callout danger >}} +{{< partial "callout-danger-async-methods.md" >}} +{{< /callout >}} + +{{< bs-table "table" >}} +| Method | Description | +| --- | --- | +| `disable` | Removes the ability for an element's popover to be shown. The popover will only be able to be shown if it is re-enabled. | +| `dispose` | Hides and destroys an element's popover (Removes stored data on the DOM element). Popovers that use delegation (which are created using [the `selector` option](#options)) cannot be individually destroyed on descendant trigger elements. | +| `enable` | Gives an element's popover the ability to be shown. **Popovers are enabled by default.** | +| `getInstance` | _Static_ method which allows you to get the popover instance associated with a DOM element. | +| `getOrCreateInstance` | *Static* method which allows you to get the popover instance associated with a DOM element, or create a new one in case it wasn't initialized | +| `hide` | Hides an element's popover. **Returns to the caller before the popover has actually been hidden** (i.e. before the `hidden.bs.popover` event occurs). This is considered a "manual" triggering of the popover. | +| `setContent` | Gives a way to change the popover's content after its initialization. | +| `show` | Reveals an element's popover. **Returns to the caller before the popover has actually been shown** (i.e. before the `shown.bs.popover` event occurs). This is considered a "manual" triggering of the popover. Popovers whose title and content are both zero-length are never displayed. | +| `toggle` | Toggles an element's popover. **Returns to the caller before the popover has actually been shown or hidden** (i.e. before the `shown.bs.popover` or `hidden.bs.popover` event occurs). This is considered a "manual" triggering of the popover. | +| `toggleEnabled` | Toggles the ability for an element's popover to be shown or hidden. | +| `update` | Updates the position of an element's popover. | +{{< /bs-table >}} + + +```js +// getOrCreateInstance example +const popover = bootstrap.Popover.getOrCreateInstance('#example') // Returns a Bootstrap popover instance + +// setContent example +myPopover.setContent({ + '.popover-header': 'another title', + '.popover-body': 'another content' +}) + +``` + +{{< callout info >}} +The `setContent` method accepts an `object` argument, where each property-key is a valid `string` selector within the popover template, and each related property-value can be `string` | `element` | `function` | `null` +{{< /callout >}} + +### Events + +{{< bs-table >}} +| Event | Description | +| --- | --- | +| `hide.bs.popover` | This event is fired immediately when the `hide` instance method has been called. | +| `hidden.bs.popover` | This event is fired when the popover has finished being hidden from the user (will wait for CSS transitions to complete). | +| `inserted.bs.popover` | This event is fired after the `show.bs.popover` event when the popover template has been added to the DOM. | +| `show.bs.popover` | This event fires immediately when the `show` instance method is called. | +| `shown.bs.popover` | This event is fired when the popover has been made visible to the user (will wait for CSS transitions to complete). | +{{< /bs-table >}} + +```js +const myPopoverTrigger = document.getElementById('myPopover') +myPopoverTrigger.addEventListener('hidden.bs.popover', () => { + // do something... +}) +``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/components/progress.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/progress.md new file mode 100644 index 000000000..aa793683b --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/progress.md @@ -0,0 +1,154 @@ +--- +layout: docs +title: Progress +description: Documentation and examples for using Bootstrap custom progress bars featuring support for stacked bars, animated backgrounds, and text labels. +group: components +toc: true +--- + +## How it works + +Progress components are built with two HTML elements, some CSS to set the width, and a few attributes. We don't use [the HTML5 `<progress>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress), ensuring you can stack progress bars, animate them, and place text labels over them. + +- We use the `.progress` as a wrapper to indicate the max value of the progress bar. +- We use the inner `.progress-bar` to indicate the progress so far. +- The `.progress-bar` requires an inline style, utility class, or custom CSS to set their width. +- The `.progress-bar` also requires some `role` and `aria` attributes to make it accessible, including an accessible name (using `aria-label`, `aria-labelledby`, or similar). + +Put that all together, and you have the following examples. + +{{< example >}} +<div class="progress"> + <div class="progress-bar" role="progressbar" aria-label="Basic example" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div> +</div> +<div class="progress"> + <div class="progress-bar" role="progressbar" aria-label="Basic example" style="width: 25%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div> +</div> +<div class="progress"> + <div class="progress-bar" role="progressbar" aria-label="Basic example" style="width: 50%" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div> +</div> +<div class="progress"> + <div class="progress-bar" role="progressbar" aria-label="Basic example" style="width: 75%" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"></div> +</div> +<div class="progress"> + <div class="progress-bar" role="progressbar" aria-label="Basic example" style="width: 100%" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div> +</div> +{{< /example >}} + +Bootstrap provides a handful of [utilities for setting width]({{< docsref "/utilities/sizing" >}}). Depending on your needs, these may help with quickly configuring progress. + +{{< example >}} +<div class="progress"> + <div class="progress-bar w-75" role="progressbar" aria-label="Basic example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"></div> +</div> +{{< /example >}} + +## Labels + +Add labels to your progress bars by placing text within the `.progress-bar`. + +{{< example >}} +<div class="progress"> + <div class="progress-bar" role="progressbar" aria-label="Example with label" style="width: 25%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">25%</div> +</div> +{{< /example >}} + +## Height + +We only set a `height` value on the `.progress`, so if you change that value the inner `.progress-bar` will automatically resize accordingly. + +{{< example >}} +<div class="progress" style="height: 1px;"> + <div class="progress-bar" role="progressbar" aria-label="Example 1px high" style="width: 25%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div> +</div> +<div class="progress" style="height: 20px;"> + <div class="progress-bar" role="progressbar" aria-label="Example 20px high" style="width: 25%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div> +</div> +{{< /example >}} + +## Backgrounds + +Use background utility classes to change the appearance of individual progress bars. + +{{< example >}} +<div class="progress"> + <div class="progress-bar bg-success" role="progressbar" aria-label="Success example" style="width: 25%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div> +</div> +<div class="progress"> + <div class="progress-bar bg-info" role="progressbar" aria-label="Info example" style="width: 50%" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div> +</div> +<div class="progress"> + <div class="progress-bar bg-warning" role="progressbar" aria-label="Warning example" style="width: 75%" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"></div> +</div> +<div class="progress"> + <div class="progress-bar bg-danger" role="progressbar" aria-label="Danger example" style="width: 100%" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div> +</div> +{{< /example >}} + +{{< callout info >}} +{{< partial "callout-warning-color-assistive-technologies.md" >}} +{{< /callout >}} + +## Multiple bars + +Include multiple progress bars in a progress component if you need. + +{{< example >}} +<div class="progress"> + <div class="progress-bar" role="progressbar" aria-label="Segment one" style="width: 15%" aria-valuenow="15" aria-valuemin="0" aria-valuemax="100"></div> + <div class="progress-bar bg-success" role="progressbar" aria-label="Segment two" style="width: 30%" aria-valuenow="30" aria-valuemin="0" aria-valuemax="100"></div> + <div class="progress-bar bg-info" role="progressbar" aria-label="Segment three" style="width: 20%" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100"></div> +</div> +{{< /example >}} + +## Striped + +Add `.progress-bar-striped` to any `.progress-bar` to apply a stripe via CSS gradient over the progress bar's background color. + +{{< example >}} +<div class="progress"> + <div class="progress-bar progress-bar-striped" role="progressbar" aria-label="Default striped example" style="width: 10%" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100"></div> +</div> +<div class="progress"> + <div class="progress-bar progress-bar-striped bg-success" role="progressbar" aria-label="Success striped example" style="width: 25%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div> +</div> +<div class="progress"> + <div class="progress-bar progress-bar-striped bg-info" role="progressbar" aria-label="Info striped example" style="width: 50%" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div> +</div> +<div class="progress"> + <div class="progress-bar progress-bar-striped bg-warning" role="progressbar" aria-label="Warning striped example" style="width: 75%" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"></div> +</div> +<div class="progress"> + <div class="progress-bar progress-bar-striped bg-danger" role="progressbar" aria-label="Danger striped example" style="width: 100%" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div> +</div> +{{< /example >}} + +## Animated stripes + +The striped gradient can also be animated. Add `.progress-bar-animated` to `.progress-bar` to animate the stripes right to left via CSS3 animations. + +{{< example >}} +<div class="progress"> + <div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-label="Animated striped example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" style="width: 75%"></div> +</div> +{{< /example >}} + +## CSS + +### Variables + +{{< added-in "5.2.0" >}} + +As part of Bootstrap's evolving CSS variables approach, progress bars now use local CSS variables on `.progress` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +{{< scss-docs name="progress-css-vars" file="scss/_progress.scss" >}} + +### Sass variables + +{{< scss-docs name="progress-variables" file="scss/_variables.scss" >}} + +### Keyframes + +Used for creating the CSS animations for `.progress-bar-animated`. Included in `scss/_progress-bar.scss`. + +{{< scss-docs name="progress-keyframes" file="scss/_progress.scss" >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/components/scrollspy.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/scrollspy.md new file mode 100644 index 000000000..5e329dc85 --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/scrollspy.md @@ -0,0 +1,425 @@ +--- +layout: docs +title: Scrollspy +description: Automatically update Bootstrap navigation or list group components based on scroll position to indicate which link is currently active in the viewport. +group: components +toc: true +--- + +## How it works + +Scrollspy toggles the `.active` class on anchor (`<a>`) elements when the element with the `id` referenced by the anchor's `href` is scrolled into view. Scrollspy is best used in conjunction with a Bootstrap [nav component]({{< docsref "/components/navs-tabs" >}}) or [list group]({{< docsref "/components/list-group" >}}), but it will also work with any anchor elements in the current page. Here's how it works. + +- To start, scrollspy requires two things: a navigation, list group, or a simple set of links, plus a scrollable container. The scrollable container can be the `<body>` or a custom element with a set `height` and `overflow-y: scroll`. + +- On the scrollable container, add `data-bs-spy="scroll"` and `data-bs-target="#navId"` where `navId` is the unique `id` of the associated navigation. Be sure to also include a `tabindex="0"` to ensure keyboard access. + +- As you scroll the "spied" container, an `.active` class is added and removed from anchor links within the associated navigation. Links must have resolvable `id` targets, otherwise they're ignored. For example, a `<a href="#home">home</a>` must correspond to something in the DOM like `<div id="home"></div>` + +- Target elements that are not visible will be ignored. See the [Non-visible elements](#non-visible-elements) section below. + +## Examples + +### Navbar + +Scroll the area below the navbar and watch the active class change. Open the dropdown menu and watch the dropdown items be highlighted as well. + +<div class="bd-example"> + <nav id="navbar-example2" class="navbar bg-light px-3 mb-3"> + <a class="navbar-brand" href="#">Navbar</a> + <ul class="nav nav-pills"> + <li class="nav-item"> + <a class="nav-link" href="#scrollspyHeading1">First</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="#scrollspyHeading2">Second</a> + </li> + <li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a> + <ul class="dropdown-menu"> + <li><a class="dropdown-item" href="#scrollspyHeading3">Third</a></li> + <li><a class="dropdown-item" href="#scrollspyHeading4">Fourth</a></li> + <li><hr class="dropdown-divider"></li> + <li><a class="dropdown-item" href="#scrollspyHeading5">Fifth</a></li> + </ul> + </li> + </ul> + </nav> + <div class="scrollspy-example bg-light p-3 rounded-2" data-bs-spy="scroll" data-bs-target="#navbar-example2" data-bs-root-margin="0px 0px -40%" data-bs-smooth-scroll="true" tabindex="0"> + <h4 id="scrollspyHeading1">First heading</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <h4 id="scrollspyHeading2">Second heading</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <h4 id="scrollspyHeading3">Third heading</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <h4 id="scrollspyHeading4">Fourth heading</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <h4 id="scrollspyHeading5">Fifth heading</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + </div> +</div> + +```html +<nav id="navbar-example2" class="navbar bg-light px-3 mb-3"> + <a class="navbar-brand" href="#">Navbar</a> + <ul class="nav nav-pills"> + <li class="nav-item"> + <a class="nav-link" href="#scrollspyHeading1">First</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="#scrollspyHeading2">Second</a> + </li> + <li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a> + <ul class="dropdown-menu"> + <li><a class="dropdown-item" href="#scrollspyHeading3">Third</a></li> + <li><a class="dropdown-item" href="#scrollspyHeading4">Fourth</a></li> + <li><hr class="dropdown-divider"></li> + <li><a class="dropdown-item" href="#scrollspyHeading5">Fifth</a></li> + </ul> + </li> + </ul> +</nav> +<div data-bs-spy="scroll" data-bs-target="#navbar-example2" data-bs-root-margin="0px 0px -40%" data-bs-smooth-scroll="true" class="scrollspy-example bg-light p-3 rounded-2" tabindex="0"> + <h4 id="scrollspyHeading1">First heading</h4> + <p>...</p> + <h4 id="scrollspyHeading2">Second heading</h4> + <p>...</p> + <h4 id="scrollspyHeading3">Third heading</h4> + <p>...</p> + <h4 id="scrollspyHeading4">Fourth heading</h4> + <p>...</p> + <h4 id="scrollspyHeading5">Fifth heading</h4> + <p>...</p> +</div> +``` + +### Nested nav + +Scrollspy also works with nested `.nav`s. If a nested `.nav` is `.active`, its parents will also be `.active`. Scroll the area next to the navbar and watch the active class change. + +<div class="bd-example"> + <div class="row"> + <div class="col-4"> + <nav id="navbar-example3" class="h-100 flex-column align-items-stretch pe-4 border-end"> + <nav class="nav nav-pills flex-column"> + <a class="nav-link" href="#item-1">Item 1</a> + <nav class="nav nav-pills flex-column"> + <a class="nav-link ms-3 my-1" href="#item-1-1">Item 1-1</a> + <a class="nav-link ms-3 my-1" href="#item-1-2">Item 1-2</a> + </nav> + <a class="nav-link" href="#item-2">Item 2</a> + <a class="nav-link" href="#item-3">Item 3</a> + <nav class="nav nav-pills flex-column"> + <a class="nav-link ms-3 my-1" href="#item-3-1">Item 3-1</a> + <a class="nav-link ms-3 my-1" href="#item-3-2">Item 3-2</a> + </nav> + </nav> + </nav> + </div> + <div class="col-8"> + <div data-bs-spy="scroll" data-bs-target="#navbar-example3" data-bs-smooth-scroll="true" class="scrollspy-example-2" tabindex="0"> + <div id="item-1"> + <h4>Item 1</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <p>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.</p> + </div> + <div id="item-1-1"> + <h5>Item 1-1</h5> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <p>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.</p> + </div> + <div id="item-1-2"> + <h5>Item 1-2</h5> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <p>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.</p> + </div> + <div id="item-2"> + <h4>Item 2</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <p>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.</p> + </div> + <div id="item-3"> + <h4>Item 3</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <p>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.</p> + </div> + <div id="item-3-1"> + <h5>Item 3-1</h5> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <p>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.</p> + </div> + <div id="item-3-2"> + <h5>Item 3-2</h5> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <p>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.</p> + </div> + </div> + </div> + </div> +</div> + +```html +<div class="row"> + <div class="col-4"> + <nav id="navbar-example3" class="h-100 flex-column align-items-stretch pe-4 border-end"> + <nav class="nav nav-pills flex-column"> + <a class="nav-link" href="#item-1">Item 1</a> + <nav class="nav nav-pills flex-column"> + <a class="nav-link ms-3 my-1" href="#item-1-1">Item 1-1</a> + <a class="nav-link ms-3 my-1" href="#item-1-2">Item 1-2</a> + </nav> + <a class="nav-link" href="#item-2">Item 2</a> + <a class="nav-link" href="#item-3">Item 3</a> + <nav class="nav nav-pills flex-column"> + <a class="nav-link ms-3 my-1" href="#item-3-1">Item 3-1</a> + <a class="nav-link ms-3 my-1" href="#item-3-2">Item 3-2</a> + </nav> + </nav> + </nav> + </div> + + <div class="col-8"> + <div data-bs-spy="scroll" data-bs-target="#navbar-example3" data-bs-smooth-scroll="true" class="scrollspy-example-2" tabindex="0"> + <div id="item-1"> + <h4>Item 1</h4> + <p>...</p> + </div> + <div id="item-1-1"> + <h5>Item 1-1</h5> + <p>...</p> + </div> + <div id="item-1-2"> + <h5>Item 1-2</h5> + <p>...</p> + </div> + <div id="item-2"> + <h4>Item 2</h4> + <p>...</p> + </div> + <div id="item-3"> + <h4>Item 3</h4> + <p>...</p> + </div> + <div id="item-3-1"> + <h5>Item 3-1</h5> + <p>...</p> + </div> + <div id="item-3-2"> + <h5>Item 3-2</h5> + <p>...</p> + </div> + </div> + </div> +</div> +``` + +### List group + +Scrollspy also works with `.list-group`s. Scroll the area next to the list group and watch the active class change. + +<div class="bd-example"> + <div class="row"> + <div class="col-4"> + <div id="list-example" class="list-group"> + <a class="list-group-item list-group-item-action" href="#list-item-1">Item 1</a> + <a class="list-group-item list-group-item-action" href="#list-item-2">Item 2</a> + <a class="list-group-item list-group-item-action" href="#list-item-3">Item 3</a> + <a class="list-group-item list-group-item-action" href="#list-item-4">Item 4</a> + </div> + </div> + <div class="col-8"> + <div data-bs-spy="scroll" data-bs-target="#list-example" data-bs-smooth-scroll="true" class="scrollspy-example" tabindex="0"> + <h4 id="list-item-1">Item 1</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <h4 id="list-item-2">Item 2</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <h4 id="list-item-3">Item 3</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <h4 id="list-item-4">Item 4</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + </div> + </div> + </div> +</div> + +```html +<div class="row"> + <div class="col-4"> + <div id="list-example" class="list-group"> + <a class="list-group-item list-group-item-action" href="#list-item-1">Item 1</a> + <a class="list-group-item list-group-item-action" href="#list-item-2">Item 2</a> + <a class="list-group-item list-group-item-action" href="#list-item-3">Item 3</a> + <a class="list-group-item list-group-item-action" href="#list-item-4">Item 4</a> + </div> + </div> + <div class="col-8"> + <div data-bs-spy="scroll" data-bs-target="#list-example" data-bs-smooth-scroll="true" class="scrollspy-example" tabindex="0"> + <h4 id="list-item-1">Item 1</h4> + <p>...</p> + <h4 id="list-item-2">Item 2</h4> + <p>...</p> + <h4 id="list-item-3">Item 3</h4> + <p>...</p> + <h4 id="list-item-4">Item 4</h4> + <p>...</p> + </div> + </div> +</div> +``` + +### Simple anchors + +Scrollspy is not limited to nav components and list groups, so it will work on any `<a>` anchor elements in the current document. Scroll the area and watch the `.active` class change. + +<div class="bd-example"> + <div class="row"> + <div class="col-4"> + <div id="simple-list-example" class="d-flex flex-column gap-2 simple-list-example-scrollspy text-center"> + <a class="p-1 rounded" href="#simple-list-item-1">Item 1</a> + <a class="p-1 rounded" href="#simple-list-item-2">Item 2</a> + <a class="p-1 rounded" href="#simple-list-item-3">Item 3</a> + <a class="p-1 rounded" href="#simple-list-item-4">Item 4</a> + <a class="p-1 rounded" href="#simple-list-item-5">Item 5</a> + </div> + </div> + <div class="col-8"> + <div data-bs-spy="scroll" data-bs-target="#simple-list-example" data-bs-offset="0" data-bs-smooth-scroll="true" class="scrollspy-example" tabindex="0"> + <h4 id="simple-list-item-1">Item 1</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <h4 id="simple-list-item-2">Item 2</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <h4 id="simple-list-item-3">Item 3</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <h4 id="simple-list-item-4">Item 4</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + <h4 id="simple-list-item-5">Item 5</h4> + <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> + </div> + </div> + </div> +</div> + +```html +<div class="row"> + <div class="col-4"> + <div id="simple-list-example" class="d-flex flex-column gap-2 simple-list-example-scrollspy text-center"> + <a class="p-1 rounded" href="#simple-list-item-1">Item 1</a> + <a class="p-1 rounded" href="#simple-list-item-2">Item 2</a> + <a class="p-1 rounded" href="#simple-list-item-3">Item 3</a> + <a class="p-1 rounded" href="#simple-list-item-4">Item 4</a> + <a class="p-1 rounded" href="#simple-list-item-5">Item 5</a> + </div> + </div> + <div class="col-8"> + <div data-bs-spy="scroll" data-bs-target="#simple-list-example" data-bs-offset="0" data-bs-smooth-scroll="true" class="scrollspy-example" tabindex="0"> + <h4 id="simple-list-item-1">Item 1</h4> + <p>...</p> + <h4 id="simple-list-item-2">Item 2</h4> + <p>...</p> + <h4 id="simple-list-item-3">Item 3</h4> + <p>...</p> + <h4 id="simple-list-item-4">Item 4</h4> + <p>...</p> + <h4 id="simple-list-item-5">Item 5</h4> + <p>...</p> + </div> + </div> +</div> +``` + +## Non-visible elements + +Target elements that aren’t visible will be ignored and their corresponding nav items won't receive an `.active` class. Scrollspy instances initialized in a non-visible wrapper will ignore all target elements. Use the `refresh` method to check for observable elements once the wrapper becomes visible. + +```js +document.querySelectorAll('#nav-tab>[data-bs-toggle="tab"]').forEach(el => { + el.addEventListener('shown.bs.tab', () => { + const target = el.getAttribute('data-bs-target') + const scrollElem = document.querySelector(`${target} [data-bs-spy="scroll"]`) + bootstrap.ScrollSpy.getOrCreateInstance(scrollElem).refresh() + }) +}) +``` + +## Usage + +### Via data attributes + +To easily add scrollspy behavior to your topbar navigation, add `data-bs-spy="scroll"` to the element you want to spy on (most typically this would be the `<body>`). Then add the `data-bs-target` attribute with the `id` or class name of the parent element of any Bootstrap `.nav` component. + +```html +<body data-bs-spy="scroll" data-bs-target="#navbar-example"> + ... + <div id="navbar-example"> + <ul class="nav nav-tabs" role="tablist"> + ... + </ul> + </div> + ... +</body> +``` + +### Via JavaScript + +```js +const scrollSpy = new bootstrap.ScrollSpy(document.body, { + target: '#navbar-example' +}) +``` + +### Options + +{{< markdown >}} +{{< partial "js-data-attributes.md" >}} +{{< /markdown >}} + +{{< bs-table "table" >}} +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| `rootMargin` | string | `0px 0px -40%` | Intersection Observer [rootMargin](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/rootMargin) valid units, when calculating scroll position. | +| `smoothScroll` | boolean | `false` | Enables smooth scrolling when a user clicks on a link that refers to ScrollSpy observables. | +| `target` | string \| jQuery object \| DOM element | | Specifies element to apply Scrollspy plugin. | +{{< /bs-table >}} + +{{< callout warning >}} +**Deprecated Options** + +Up until v5.1.3 we were using `offset` & `method` options, which are now deprecated and replaced by `rootMargin`. +To keep backwards compatibility, we will continue to parse a given `offset` to `rootMargin`, but this feature will be removed in **v6**. +{{< /callout >}} + +### Methods + +{{< bs-table "table" >}} +| Method | Description | +| --- | --- | +| `dispose` | Destroys an element's scrollspy. (Removes stored data on the DOM element) | +| `getInstance` | *Static* method to get the scrollspy instance associated with a DOM element | +| `getOrCreateInstance` | *Static* method to get the scrollspy instance associated with a DOM element, or to create a new one in case it wasn't initialized. | +| `refresh` | When adding or removing elements in the DOM, you'll need to call the refresh method. | +{{< /bs-table >}} + +Here's an example using the refresh method: + +```js +const dataSpyList = document.querySelectorAll('[data-bs-spy="scroll"]') +dataSpyList.forEach(dataSpyEl => { + bootstrap.ScrollSpy.getInstance(dataSpyEl).refresh() +}) +``` + +### Events + +{{< bs-table "table" >}} +| Event | Description | +| --- | --- | +| `activate.bs.scrollspy` | This event fires on the scroll element whenever an anchor is activated by the scrollspy. | +{{< /bs-table >}} + +```js +const firstScrollSpyEl = document.querySelector('[data-bs-spy="scroll"]') +firstScrollSpyEl.addEventListener('activate.bs.scrollspy', () => { + // do something... +}) +``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/spinners.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/spinners.md index ef7efaf58..bc1b1e64f 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/spinners.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/spinners.md @@ -171,10 +171,28 @@ Use spinners within buttons to indicate an action is currently processing or tak </button> {{< /example >}} -## Sass +## CSS ### Variables +{{< added-in "5.2.0" >}} + +As part of Bootstrap's evolving CSS variables approach, spinners now use local CSS variables on `.spinner-border` and `.spinner-grow` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +Border spinner variables: + +{{< scss-docs name="spinner-border-css-vars" file="scss/_spinners.scss" >}} + +Growing spinner variables: + +{{< scss-docs name="spinner-grow-css-vars" file="scss/_spinners.scss" >}} + +For both spinners, small spinner modifier classes are used to update the values of these CSS variables as needed. For example, the `.spinner-border-sm` class does the following: + +{{< scss-docs name="spinner-border-sm-css-vars" file="scss/_spinners.scss" >}} + +### Sass variables + {{< scss-docs name="spinner-variables" file="scss/_variables.scss" >}} ### Keyframes diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/components/toasts.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/toasts.md index 449f0275c..562fbf28a 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/components/toasts.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/toasts.md @@ -49,7 +49,7 @@ Previously, our scripts dynamically added the `.hide` class to completely hide a Click the button below to show a toast (positioned with our utilities in the lower right corner) that has been hidden by default. -<div class="position-fixed bottom-0 end-0 p-3" style="z-index: 11"> +<div class="toast-container position-fixed bottom-0 end-0 p-3"> <div id="liveToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true"> <div class="toast-header"> {{< placeholder width="20" height="20" background="#007aff" class="rounded me-2" text="false" title="false" >}} @@ -70,7 +70,7 @@ Click the button below to show a toast (positioned with our utilities in the low ```html <button type="button" class="btn btn-primary" id="liveToastBtn">Show live toast</button> -<div class="position-fixed bottom-0 end-0 p-3" style="z-index: 11"> +<div class="toast-container position-fixed bottom-0 end-0 p-3"> <div id="liveToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true"> <div class="toast-header"> <img src="..." class="rounded me-2" alt="..."> @@ -88,11 +88,11 @@ Click the button below to show a toast (positioned with our utilities in the low We use the following JavaScript to trigger our live toast demo: ```js -var toastTrigger = document.getElementById('liveToastBtn') -var toastLiveExample = document.getElementById('liveToast') +const toastTrigger = document.getElementById('liveToastBtn') +const toastLiveExample = document.getElementById('liveToast') if (toastTrigger) { - toastTrigger.addEventListener('click', function () { - var toast = new bootstrap.Toast(toastLiveExample) + toastTrigger.addEventListener('click', () => { + const toast = new bootstrap.Toast(toastLiveExample) toast.show() }) @@ -122,7 +122,7 @@ Toasts are slightly translucent to blend in with what's below them. You can stack toasts by wrapping them in a toast container, which will vertically add some spacing. {{< example class="bg-light" >}} -<div class="toast-container"> +<div class="toast-container position-static"> <div class="toast" role="alert" aria-live="assertive" aria-atomic="true"> <div class="toast-header"> {{< placeholder width="20" height="20" background="#007aff" class="rounded me-2" text="false" title="false" >}} @@ -157,8 +157,8 @@ Customize your toasts by removing sub-components, tweaking them with [utilities] <div class="toast align-items-center" role="alert" aria-live="assertive" aria-atomic="true"> <div class="d-flex"> <div class="toast-body"> - Hello, world! This is a toast message. - </div> + Hello, world! This is a toast message. + </div> <button type="button" class="btn-close me-2 m-auto" data-bs-dismiss="toast" aria-label="Close"></button> </div> </div> @@ -180,10 +180,10 @@ Alternatively, you can also add additional controls and components to toasts. ### Color schemes -Building on the above example, you can create different toast color schemes with our [color]({{< docsref "/utilities/colors" >}}) and [background]({{< docsref "/utilities/background" >}}) utilities. Here we've added `.bg-primary` and `.text-white` to the `.toast`, and then added `.btn-close-white` to our close button. For a crisp edge, we remove the default border with `.border-0`. +Building on the above example, you can create different toast color schemes with our [color]({{< docsref "/utilities/colors" >}}) and [background]({{< docsref "/utilities/background" >}}) utilities. Here we've added `.text-bg-primary` to the `.toast`, and then added `.btn-close-white` to our close button. For a crisp edge, we remove the default border with `.border-0`. {{< example class="bg-light" >}} -<div class="toast align-items-center text-white bg-primary border-0" role="alert" aria-live="assertive" aria-atomic="true"> +<div class="toast align-items-center text-bg-primary border-0" role="alert" aria-live="assertive" aria-atomic="true"> <div class="d-flex"> <div class="toast-body"> Hello, world! This is a toast message. @@ -197,7 +197,7 @@ Building on the above example, you can create different toast color schemes with Place toasts with custom CSS as you need them. The top right is often used for notifications, as is the top middle. If you're only ever going to show one toast at a time, put the positioning styles right on the `.toast`. -{{< example >}} +{{< example stackblitz_add_js="true" >}} <form> <div class="mb-3"> <label for="selectToastPlacement">Toast placement</label> @@ -216,7 +216,7 @@ Place toasts with custom CSS as you need them. The top right is often used for n </div> </form> <div aria-live="polite" aria-atomic="true" class="bg-dark position-relative bd-example-toasts"> - <div class="toast-container position-absolute p-3" id="toastPlacement"> + <div class="toast-container p-3" id="toastPlacement"> <div class="toast"> <div class="toast-header"> {{< placeholder width="20" height="20" background="#007aff" class="rounded me-2" text="false" title="false" >}} @@ -237,9 +237,9 @@ For systems that generate more notifications, consider using a wrapping element <div aria-live="polite" aria-atomic="true" class="position-relative"> <!-- Position it: --> <!-- - `.toast-container` for spacing between toasts --> - <!-- - `.position-absolute`, `top-0` & `end-0` to position the toasts in the upper right corner --> + <!-- - `top-0` & `end-0` to position the toasts in the upper right corner --> <!-- - `.p-3` to prevent the toasts from sticking to the edge of the container --> - <div class="toast-container position-absolute top-0 end-0 p-3"> + <div class="toast-container top-0 end-0 p-3"> <!-- Then put toasts within --> <div class="toast" role="alert" aria-live="assertive" aria-atomic="true"> @@ -324,10 +324,18 @@ When using `autohide: false`, you must add a close button to allow users to dism While technically it's possible to add focusable/actionable controls (such as additional buttons or links) in your toast, you should avoid doing this for autohiding toasts. Even if you give the toast a long [`delay` timeout](#options), keyboard and assistive technology users may find it difficult to reach the toast in time to take action (since toasts don't receive focus when they are displayed). If you absolutely must have further controls, we recommend using a toast with `autohide: false`. -## Sass +## CSS ### Variables +{{< added-in "5.2.0" >}} + +As part of Bootstrap's evolving CSS variables approach, toasts now use local CSS variables on `.toast` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +{{< scss-docs name="toast-css-vars" file="scss/_toasts.scss" >}} + +### Sass variables + {{< scss-docs name="toast-variables" file="scss/_variables.scss" >}} ## Usage @@ -335,10 +343,8 @@ While technically it's possible to add focusable/actionable controls (such as ad Initialize toasts via JavaScript: ```js -var toastElList = [].slice.call(document.querySelectorAll('.toast')) -var toastList = toastElList.map(function (toastEl) { - return new bootstrap.Toast(toastEl, option) -}) +const toastElList = document.querySelectorAll('.toast') +const toastList = [...toastElList].map(toastEl => new bootstrap.Toast(toastEl, option)) ``` ### Triggers @@ -347,40 +353,17 @@ var toastList = toastElList.map(function (toastEl) { ### Options -Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-bs-`, as in `data-bs-animation=""`. - -<table class="table"> - <thead> - <tr> - <th style="width: 100px;">Name</th> - <th style="width: 100px;">Type</th> - <th style="width: 50px;">Default</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>animation</code></td> - <td>boolean</td> - <td><code>true</code></td> - <td>Apply a CSS fade transition to the toast</td> - </tr> - <tr> - <td><code>autohide</code></td> - <td>boolean</td> - <td><code>true</code></td> - <td>Auto hide the toast</td> - </tr> - <tr> - <td><code>delay</code></td> - <td>number</td> - <td> - <code>5000</code> - </td> - <td>Delay hiding the toast (ms)</td> - </tr> - </tbody> -</table> +{{< markdown >}} +{{< partial "js-data-attributes.md" >}} +{{< /markdown >}} + +{{< bs-table "table" >}} +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| `animation` | boolean | `true` | Apply a CSS fade transition to the toast | +| `autohide` | boolean | `true` | Automatically hide the toast after the delay | +| `delay` | number | `5000` | Delay in milliseconds before hiding the toast | +{{< /bs-table >}} ### Methods @@ -388,81 +371,31 @@ Options can be passed via data attributes or JavaScript. For data attributes, ap {{< partial "callout-danger-async-methods.md" >}} {{< /callout >}} -#### show - -Reveals an element's toast. **Returns to the caller before the toast has actually been shown** (i.e. before the `shown.bs.toast` event occurs). -You have to manually call this method, instead your toast won't show. - -```js -toast.show() -``` - -#### hide - -Hides an element's toast. **Returns to the caller before the toast has actually been hidden** (i.e. before the `hidden.bs.toast` event occurs). You have to manually call this method if you made `autohide` to `false`. - -```js -toast.hide() -``` - -#### dispose - -Hides an element's toast. Your toast will remain on the DOM but won't show anymore. - -```js -toast.dispose() -``` - -#### getInstance - -*Static* method which allows you to get the toast instance associated with a DOM element - -```js -var myToastEl = document.getElementById('myToastEl') -var myToast = bootstrap.Toast.getInstance(myToastEl) // Returns a Bootstrap toast instance -``` - -#### getOrCreateInstance - -*Static* method which allows you to get the toast instance associated with a DOM element, or create a new one in case it wasn't initialized - -```js -var myToastEl = document.getElementById('myToastEl') -var myToast = bootstrap.Toast.getOrCreateInstance(myToastEl) // Returns a Bootstrap toast instance -``` +{{< bs-table "table" >}} +| Method | Description | +| --- | --- | +| `dispose` | Hides an element's toast. Your toast will remain on the DOM but won't show anymore. | +| `getInstance` | *Static* method which allows you to get the scrollspy instance associated with a DOM element. <br> For example: `const myToastEl = document.getElementById('myToastEl')` `const myToast = bootstrap.Toast.getInstance(myToastEl)` Returns a Bootstrap toast instance| +| `getOrCreateInstance` | *Static* method which allows you to get the scrollspy instance associated with a DOM element, or create a new one, in case it wasn't initialized. <br>`const myToastEl = document.getElementById('myToastEl')` `const myToast = bootstrap.Toast.getOrCreateInstance(myToastEl)` Returns a Bootstrap toast instance | +| `hide` | Hides an element's toast. **Returns to the caller before the toast has actually been hidden** (i.e. before the `hidden.bs.toast` event occurs). You have to manually call this method if you made `autohide` to `false`. | +| `isShown` | Returns a boolean according to toast's visibility state. | +| `show` | Reveals an element's toast. **Returns to the caller before the toast has actually been shown** (i.e. before the `shown.bs.toast` event occurs). You have to manually call this method, instead your toast won't show. | +{{< /bs-table >}} ### Events -<table class="table"> - <thead> - <tr> - <th style="width: 150px;">Event type</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>show.bs.toast</code></td> - <td>This event fires immediately when the <code>show</code> instance method is called.</td> - </tr> - <tr> - <td><code>shown.bs.toast</code></td> - <td>This event is fired when the toast has been made visible to the user.</td> - </tr> - <tr> - <td><code>hide.bs.toast</code></td> - <td>This event is fired immediately when the <code>hide</code> instance method has been called.</td> - </tr> - <tr> - <td><code>hidden.bs.toast</code></td> - <td>This event is fired when the toast has finished being hidden from the user.</td> - </tr> - </tbody> -</table> +{{< bs-table "table" >}} +| Event | Description | +| --- | --- | +| `hide.bs.toast` | This event is fired immediately when the `hide` instance method has been called. | +| `hidden.bs.toast` | This event is fired when the toast has finished being hidden from the user. | +| `show.bs.toast` | This event fires immediately when the `show` instance method is called. | +| `shown.bs.toast` | This event is fired when the toast has been made visible to the user. | +{{< /bs-table >}} ```js -var myToastEl = document.getElementById('myToast') -myToastEl.addEventListener('hidden.bs.toast', function () { +const myToastEl = document.getElementById('myToast') +myToastEl.addEventListener('hidden.bs.toast', () => { // do something... }) ``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/components/tooltips.md b/vendor/twbs/bootstrap/site/content/docs/5.2/components/tooltips.md new file mode 100644 index 000000000..acdecc9f3 --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/components/tooltips.md @@ -0,0 +1,301 @@ +--- +layout: docs +title: Tooltips +description: Documentation and examples for adding custom Bootstrap tooltips with CSS and JavaScript using CSS3 for animations and data-bs-attributes for local title storage. +group: components +toc: true +--- + +## Overview + +Things to know when using the tooltip plugin: + +- Tooltips rely on the third party library [Popper](https://popper.js.org/) for positioning. You must include [popper.min.js]({{< param "cdn.popper" >}}) before `bootstrap.js`, or use one `bootstrap.bundle.min.js` which contains Popper. +- Tooltips are opt-in for performance reasons, so **you must initialize them yourself**. +- Tooltips with zero-length titles are never displayed. +- Specify `container: 'body'` to avoid rendering problems in more complex components (like our input groups, button groups, etc). +- Triggering tooltips on hidden elements will not work. +- Tooltips for `.disabled` or `disabled` elements must be triggered on a wrapper element. +- When triggered from hyperlinks that span multiple lines, tooltips will be centered. Use `white-space: nowrap;` on your `<a>`s to avoid this behavior. +- Tooltips must be hidden before their corresponding elements have been removed from the DOM. +- Tooltips can be triggered thanks to an element inside a shadow DOM. + +Got all that? Great, let's see how they work with some examples. + +{{< callout info >}} +{{< partial "callout-info-sanitizer.md" >}} +{{< /callout >}} + +{{< callout info >}} +{{< partial "callout-info-prefersreducedmotion.md" >}} +{{< /callout >}} + +## Examples + +### Enable tooltips + +As mentioned above, you must initialize tooltips before they can be used. One way to initialize all tooltips on a page would be to select them by their `data-bs-toggle` attribute, like so: + +```js +const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]') +const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl)) +``` + +### Tooltips on links + +Hover over the links below to see tooltips: + +{{< example class="tooltip-demo" stackblitz_add_js="true" >}} +<p class="muted">Placeholder text to demonstrate some <a href="#" data-bs-toggle="tooltip" data-bs-title="Default tooltip">inline links</a> with tooltips. This is now just filler, no killer. Content placed here just to mimic the presence of <a href="#" data-bs-toggle="tooltip" data-bs-title="Another tooltip">real text</a>. And all that just to give you an idea of how tooltips would look when used in real-world situations. So hopefully you've now seen how <a href="#" data-bs-toggle="tooltip" data-bs-title="Another one here too">these tooltips on links</a> can work in practice, once you use them on <a href="#" data-bs-toggle="tooltip" data-bs-title="The last tip!">your own</a> site or project. +</p> +{{< /example >}} + +{{< callout warning >}} +{{< partial "callout-warning-data-bs-title-vs-title.md" >}} +{{< /callout >}} + +### Custom tooltips + +{{< added-in "5.2.0" >}} + +You can customize the appearance of tooltips using [CSS variables](#variables). We set a custom class with `data-bs-custom-class="custom-tooltip"` to scope our custom appearance and use it to override a local CSS variable. + +{{< scss-docs name="custom-tooltip" file="site/assets/scss/_component-examples.scss" >}} + + +{{< example class="tooltip-demo" stackblitz_add_js="true" >}} +<button type="button" class="btn btn-secondary" + data-bs-toggle="tooltip" data-bs-placement="top" + data-bs-custom-class="custom-tooltip" + data-bs-title="This top tooltip is themed via CSS variables."> + Custom tooltip +</button> +{{< /example >}} + +### Directions + +Hover over the buttons below to see the four tooltips directions: top, right, bottom, and left. Directions are mirrored when using Bootstrap in RTL. + +<div class="bd-example tooltip-demo"> + <div class="bd-example-tooltips"> + <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" data-bs-title="Tooltip on top">Tooltip on top</button> + <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" data-bs-title="Tooltip on right">Tooltip on right</button> + <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Tooltip on bottom">Tooltip on bottom</button> + <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" data-bs-title="Tooltip on left">Tooltip on left</button> + <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-html="true" data-bs-title="<em>Tooltip</em> <u>with</u> <b>HTML</b>">Tooltip with HTML</button> + </div> +</div> + +```html +<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" data-bs-title="Tooltip on top"> + Tooltip on top +</button> +<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" data-bs-title="Tooltip on right"> + Tooltip on right +</button> +<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Tooltip on bottom"> + Tooltip on bottom +</button> +<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" data-bs-title="Tooltip on left"> + Tooltip on left +</button> +``` + +And with custom HTML added: + +```html +<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-html="true" data-bs-title="<em>Tooltip</em> <u>with</u> <b>HTML</b>"> + Tooltip with HTML +</button> +``` + +With an SVG: + +<div class="bd-example tooltip-demo"> + <a href="#" class="d-inline-block" data-bs-toggle="tooltip" data-bs-title="Default tooltip"> + <svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 100 100"> + <rect width="100%" height="100%" fill="#563d7c"/> + <circle cx="50" cy="50" r="30" fill="#007bff"/> + </svg> + </a> +</div> + +## CSS + +### Variables + +{{< added-in "5.2.0" >}} + +As part of Bootstrap’s evolving CSS variables approach, tooltips now use local CSS variables on `.tooltip` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. + +{{< scss-docs name="tooltip-css-vars" file="scss/_tooltip.scss" >}} + +### Sass variables + +{{< scss-docs name="tooltip-variables" file="scss/_variables.scss" >}} + +## Usage + +The tooltip plugin generates content and markup on demand, and by default places tooltips after their trigger element. + +Trigger the tooltip via JavaScript: + +```js +const exampleEl = document.getElementById('example') +const tooltip = new bootstrap.Tooltip(exampleEl, options) +``` + +{{< callout warning >}} +##### Overflow `auto` and `scroll` + +Tooltip position attempts to automatically change when a **parent container** has `overflow: auto` or `overflow: scroll` like our `.table-responsive`, but still keeps the original placement's positioning. To resolve this, set the [`boundary` option](https://popper.js.org/docs/v2/modifiers/flip/#boundary) (for the flip modifier using the `popperConfig` option) to any HTMLElement to override the default value, `'clippingParents'`, such as `document.body`: + +```js +const tooltip = new bootstrap.Tooltip('#example', { + boundary: document.body // or document.querySelector('#boundary') +}) +``` +{{< /callout >}} + +### Markup + +The required markup for a tooltip is only a `data` attribute and `title` on the HTML element you wish to have a tooltip. The generated markup of a tooltip is rather simple, though it does require a position (by default, set to `top` by the plugin). + +{{< callout warning >}} +##### Making tooltips work for keyboard and assistive technology users + +You should only add tooltips to HTML elements that are traditionally keyboard-focusable and interactive (such as links or form controls). Although arbitrary HTML elements (such as `<span>`s) can be made focusable by adding the `tabindex="0"` attribute, this will add potentially annoying and confusing tab stops on non-interactive elements for keyboard users, and most assistive technologies currently do not announce the tooltip in this situation. Additionally, do not rely solely on `hover` as the trigger for your tooltip, as this will make your tooltips impossible to trigger for keyboard users. +{{< /callout >}} + +```html +<!-- HTML to write --> +<a href="#" data-bs-toggle="tooltip" data-bs-title="Some tooltip text!">Hover over me</a> + +<!-- Generated markup by the plugin --> +<div class="tooltip bs-tooltip-top" role="tooltip"> + <div class="tooltip-arrow"></div> + <div class="tooltip-inner"> + Some tooltip text! + </div> +</div> +``` + +### Disabled elements + +Elements with the `disabled` attribute aren't interactive, meaning users cannot focus, hover, or click them to trigger a tooltip (or popover). As a workaround, you'll want to trigger the tooltip from a wrapper `<div>` or `<span>`, ideally made keyboard-focusable using `tabindex="0"`. + +<div class="tooltip-demo"> +{{< example >}} +<span class="d-inline-block" tabindex="0" data-bs-toggle="tooltip" data-bs-title="Disabled tooltip"> + <button class="btn btn-primary" type="button" disabled>Disabled button</button> +</span> +{{< /example >}} +</div> + +### Options + +{{< markdown >}} +{{< partial "js-data-attributes.md" >}} +{{< /markdown >}} + +{{< callout warning >}} +Note that for security reasons the `sanitize`, `sanitizeFn`, and `allowList` options cannot be supplied using data attributes. +{{< /callout >}} + + +{{< bs-table "table" >}} +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| `allowList` | object | [Default value]({{< docsref "/getting-started/javascript#sanitizer" >}}) | Object which contains allowed attributes and tags. | +| `animation` | boolean | `true` | Apply a CSS fade transition to the tooltip | +| `boundary` | string, element | `'clippingParents'` | Overflow constraint boundary of the tooltip (applies only to Popper's preventOverflow modifier). By default, it's `'clippingParents'` and can accept an HTMLElement reference (via JavaScript only). For more information refer to Popper's [detectOverflow docs](https://popper.js.org/docs/v2/utils/detect-overflow/#boundary). | +| `container` | string, element, false | `false` | Appends the tooltip to a specific element. Example: `container: 'body'`. This option is particularly useful in that it allows you to position the tooltip in the flow of the document near the triggering element - which will prevent the tooltip from floating away from the triggering element during a window resize. | +| `customClass` | string, function | `''` | Add classes to the tooltip when it is shown. Note that these classes will be added in addition to any classes specified in the template. To add multiple classes, separate them with spaces: `'class-1 class-2'`. You can also pass a function that should return a single string containing additional class names. | +| `delay` | number, object | `0` | Delay showing and hiding the tooltip (ms)—doesn't apply to manual trigger type. If a number is supplied, delay is applied to both hide/show. Object structure is: `delay: { "show": 500, "hide": 100 }`. | +| `fallbackPlacements` | string, array | `['top', 'right', 'bottom', 'left']` | Define fallback placements by providing a list of placements in array (in order of preference). For more information refer to Popper's [behavior docs](https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements. | +| `html` | boolean | `false` | Allow HTML in the tooltip. If true, HTML tags in the tooltip's `title` will be rendered in the tooltip. If false, `innerText` property will be used to insert content into the DOM. Use text if you're worried about XSS attacks. | +| `offset` | number, string, function | `[0, 0]` | Offset of the tooltip relative to its target. You can pass a string in data attributes with comma separated values like: `data-bs-offset="10,20"`. When a function is used to determine the offset, it is called with an object containing the popper placement, the reference, and popper rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: [skidding](https://popper.js.org/docs/v2/modifiers/offset/#skidding-1), [distance](https://popper.js.org/docs/v2/modifiers/offset/#distance-1). For more information refer to Popper's [offset docs](https://popper.js.org/docs/v2/modifiers/offset/#options). | +| `placement` | string, function | `'top'` | How to position the tooltip: auto, top, bottom, left, right. When `auto` is specified, it will dynamically reorient the tooltip. When a function is used to determine the placement, it is called with the tooltip DOM node as its first argument and the triggering element DOM node as its second. The `this` context is set to the tooltip instance. | +| `popperConfig` | null, object, function | `null` | To change Bootstrap's default Popper config, see [Popper's configuration](https://popper.js.org/docs/v2/constructors/#options). When a function is used to create the Popper configuration, it's called with an object that contains the Bootstrap's default Popper configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Popper.| +| `sanitize` | boolean | `true` | Enable or disable the sanitization. If activated `'template'`, `'content'` and `'title'` options will be sanitized. | +| `sanitizeFn` | null, function | `null` | Here you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization. | +| `selector` | string, false | `false` | If a selector is provided, tooltip objects will be delegated to the specified targets. In practice, this is used to also apply tooltips to dynamically added DOM elements (`jQuery.on` support). See [this issue]({{< param repo >}}/issues/4215) and [an informative example](https://codepen.io/Johann-S/pen/djJYPb). | +| `template` | string | `'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'` | Base HTML to use when creating the tooltip. The tooltip's `title` will be injected into the `.tooltip-inner`. `.tooltip-arrow` will become the tooltip's arrow. The outermost wrapper element should have the `.tooltip` class and `role="tooltip"`. | +| `title` | string, element, function | `''` | Default title value if `title` attribute isn't present. If a function is given, it will be called with its `this` reference set to the element that the popover is attached to. | +| `trigger` | string | `'hover focus'` | How tooltip is triggered: click, hover, focus, manual. You may pass multiple triggers; separate them with a space. `'manual'` indicates that the tooltip will be triggered programmatically via the `.tooltip('show')`, `.tooltip('hide')` and `.tooltip('toggle')` methods; this value cannot be combined with any other trigger. `'hover'` on its own will result in tooltips that cannot be triggered via the keyboard, and should only be used if alternative methods for conveying the same information for keyboard users is present. | +{{< /bs-table >}} + +{{< callout info >}} +#### Data attributes for individual tooltips + +Options for individual tooltips can alternatively be specified through the use of data attributes, as explained above. +{{< /callout >}} + +#### Using function with `popperConfig` + +```js +const tooltip = new bootstrap.Tooltip(element, { + popperConfig(defaultBsPopperConfig) { + // const newPopperConfig = {...} + // use defaultBsPopperConfig if needed... + // return newPopperConfig + } +}) +``` + +### Methods + +{{< callout danger >}} +{{< partial "callout-danger-async-methods.md" >}} +{{< /callout >}} + +{{< bs-table "table" >}} +| Method | Description | +| --- | --- | +| `disable` | Removes the ability for an element's tooltip to be shown. The tooltip will only be able to be shown if it is re-enabled. | +| `dispose` | Hides and destroys an element's tooltip (Removes stored data on the DOM element). Tooltips that use delegation (which are created using [the `selector` option](#options)) cannot be individually destroyed on descendant trigger elements. | +| `enable` | Gives an element's tooltip the ability to be shown. **Tooltips are enabled by default.** | +| `getInstance` | *Static* method which allows you to get the tooltip instance associated with a DOM element, or create a new one in case it wasn't initialized | +| `getOrCreateInstance` | *Static* method which allows you to get the tooltip instance associated with a DOM element, or create a new one in case it wasn't initialized | +| `hide` | Hides an element's tooltip. **Returns to the caller before the tooltip has actually been hidden** (i.e. before the `hidden.bs.tooltip` event occurs). This is considered a "manual" triggering of the tooltip. | +| `setContent` | Gives a way to change the tooltip's content after its initialization. | +| `show` | Reveals an element's tooltip. **Returns to the caller before the tooltip has actually been shown** (i.e. before the `shown.bs.tooltip` event occurs). This is considered a "manual" triggering of the tooltip. Tooltips with zero-length titles are never displayed. | +| `toggle` | Toggles an element's tooltip. **Returns to the caller before the tooltip has actually been shown or hidden** (i.e. before the `shown.bs.tooltip` or `hidden.bs.tooltip` event occurs). This is considered a "manual" triggering of the tooltip. | +| `toggleEnabled` | Toggles the ability for an element's tooltip to be shown or hidden. | +| `update` | Updates the position of an element's tooltip. | +{{< /bs-table >}} + +```js +const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance + +// setContent example +tooltip.setContent({ '.tooltip-inner': 'another title' }) + +``` + +{{< callout info >}} +The `setContent` method accepts an `object` argument, where each property-key is a valid `string` selector within the popover template, and each related property-value can be `string` | `element` | `function` | `null` +{{< /callout >}} + +### Events + +{{< bs-table >}} +| Event | Description | +| --- | --- | +| `hide.bs.tooltip` | This event is fired immediately when the `hide` instance method has been called. | +| `hidden.bs.tooltip` | This event is fired when the popover has finished being hidden from the user (will wait for CSS transitions to complete). | +| `inserted.bs.tooltip` | This event is fired after the `show.bs.tooltip` event when the tooltip template has been added to the DOM. | +| `show.bs.tooltip` | This event fires immediately when the `show` instance method is called. | +| `shown.bs.tooltip` | This event is fired when the popover has been made visible to the user (will wait for CSS transitions to complete). | +{{< /bs-table >}} + +```js +const myTooltipEl = document.getElementById('myTooltip') +const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl) + +myTooltipEl.addEventListener('hidden.bs.tooltip', () => { + // do something... +}) + +tooltip.hide() +``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/content/figures.md b/vendor/twbs/bootstrap/site/content/docs/5.2/content/figures.md index 29a38d723..29a38d723 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/content/figures.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/content/figures.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/content/images.md b/vendor/twbs/bootstrap/site/content/docs/5.2/content/images.md index 9d13ef4fb..b55e7a2b8 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/content/images.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/content/images.md @@ -48,7 +48,7 @@ Align images with the [helper float classes]({{< docsref "/utilities/float" >}}) If you are using the `<picture>` element to specify multiple `<source>` elements for a specific `<img>`, make sure to add the `.img-*` classes to the `<img>` and not to the `<picture>` tag. ```html -<picture> +<picture> <source srcset="..." type="image/svg+xml"> <img src="..." class="img-fluid img-thumbnail" alt="..."> </picture> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/content/reboot.md b/vendor/twbs/bootstrap/site/content/docs/5.2/content/reboot.md index 63f892de2..ca667b2ce 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/content/reboot.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/content/reboot.md @@ -3,7 +3,7 @@ layout: docs title: Reboot description: Reboot, a collection of element-specific CSS changes in a single file, kickstart Bootstrap to provide an elegant, consistent, and simple baseline to build upon. group: content -aliases: "/docs/5.1/content/" +aliases: "/docs/5.2/content/" toc: true --- @@ -20,9 +20,25 @@ Here are our guidelines and reasons for choosing what to override in Reboot: ## CSS variables -<small class="d-inline-flex px-2 py-1 font-monospace text-muted border rounded-3">Added in v5.1.1</small> +{{< added-in "5.2.0" >}} -With v5.1.1, we standardized our required `@import`s across all our CSS bundles (including `bootstrap.css`, `bootstrap-reboot.css`, and `bootstrap-grid.css` to include `_root.scss` . This adds `:root` level CSS variables to all bundles, regardless of how many of them are used in that bundle. Ultimately Bootstrap 5 will continue to see more CSS variables added over time. +With v5.1.1, we standardized our required `@import`s across all our CSS bundles (including `bootstrap.css`, `bootstrap-reboot.css`, and `bootstrap-grid.css`) to include `_root.scss`. This adds `:root` level CSS variables to all bundles, regardless of how many of them are used in that bundle. Ultimately Bootstrap 5 will continue to see more [CSS variables]({{< docsref "/customize/css-variables" >}}) added over time, in order to provide more real-time customization without the need to always recompile Sass. Our approach is to take our source Sass variables and transform them into CSS variables. That way, even if you don't use CSS variables, you still have all the power of Sass. **This is still in-progress and will take time to fully implement.** + +For example, consider these `:root` CSS variables for common `<body>` styles: + +{{< scss-docs name="root-body-variables" file="scss/_root.scss" >}} + +In practice, those variables are then applied in Reboot like so: + +{{< scss-docs name="reboot-body-rules" file="scss/_reboot.scss" >}} + +Which allows you to make real-time customizations however you like: + +```html +<body style="--bs-body-color: #333;"> + <!-- ... --> +</body> +``` ## Page defaults @@ -47,91 +63,52 @@ $font-family-sans-serif: "Segoe UI", // Android Roboto, - // Basic web fallback - "Helvetica Neue", Arial, + // older macOS and iOS + "Helvetica Neue" // Linux "Noto Sans", "Liberation Sans", + // Basic web fallback + Arial, // Sans serif fallback sans-serif, // Emoji fonts "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default; ``` -Note that because the font stack includes emoji fonts, many common symbol/dingbat unicode characters will be rendered as multi-colored pictographs. Their appearance will vary, depending on the style used in the browser/platform's native emoji font, and they won't be affected by any CSS `color` styles. +Note that because the font stack includes emoji fonts, many common symbol/dingbat Unicode characters will be rendered as multicolored pictographs. Their appearance will vary, depending on the style used in the browser/platform's native emoji font, and they won't be affected by any CSS `color` styles. This `font-family` is applied to the `<body>` and automatically inherited globally throughout Bootstrap. To switch the global `font-family`, update `$font-family-base` and recompile Bootstrap. -## CSS variables - -As Bootstrap 5 continues to mature, more and more styles will be built with [CSS variables]({{< docsref "/customize/css-variables" >}}) as a means to provide more real-time customization without the need to always recompile Sass. Our approach is to take our source Sass variables and transform them into CSS variables. That way, even if you don't use CSS variables, you still have all the power of Sass. **This is still in-progress and will take time to fully implement.** - -For example, consider these `:root` CSS variables for common `<body>` styles: +## Headings and paragraphs -{{< scss-docs name="root-body-variables" file="scss/_root.scss" >}} +All heading elements—e.g., `<h1>`—and `<p>` are reset to have their `margin-top` removed. Headings have `margin-bottom: .5rem` added and paragraphs `margin-bottom: 1rem` for easy spacing. -In practice, those variables are then applied in Reboot like so: +{{< bs-table "table" >}} +| Heading | Example | +| --- | --- | +| `<h1></h1>` | <span class="h1">h1. Bootstrap heading</span> | +| `<h2></h2>` | <span class="h2">h2. Bootstrap heading</span> | +| `<h3></h3>` | <span class="h3">h3. Bootstrap heading</span> | +| `<h4></h4>` | <span class="h4">h4. Bootstrap heading</span> | +| `<h5></h5>` | <span class="h5">h5. Bootstrap heading</span> | +| `<h6></h6>` | <span class="h6">h6. Bootstrap heading</span> | +{{< /bs-table >}} -{{< scss-docs name="reboot-body-rules" file="scss/_reboot.scss" >}} +## Horizontal rules -Which allows you to make real-time customizations however you like: +The `<hr>` element has been simplified. Similar to browser defaults, `<hr>`s are styled via `border-top`, have a default `opacity: .25`, and automatically inherit their `border-color` via `color`, including when `color` is set via the parent. They can be modified with text, border, and opacity utilities. -```html -<body style="--bs-body-color: #333;"> - <!-- ... --> -</body> -``` - -## Headings and paragraphs +{{< example >}} +<hr> -All heading elements—e.g., `<h1>`—and `<p>` are reset to have their `margin-top` removed. Headings have `margin-bottom: .5rem` added and paragraphs `margin-bottom: 1rem` for easy spacing. +<div class="text-success"> + <hr> +</div> -<table class="table"> - <thead> - <tr> - <th>Heading</th> - <th>Example</th> - </tr> - </thead> - <tbody> - <tr> - <td> - {{< markdown >}}`<h1></h1>`{{< /markdown >}} - </td> - <td><span class="h1">h1. Bootstrap heading</span></td> - </tr> - <tr> - <td> - {{< markdown >}}`<h2></h2>`{{< /markdown >}} - </td> - <td><span class="h2">h2. Bootstrap heading</span></td> - </tr> - <tr> - <td> - {{< markdown >}}`<h3></h3>`{{< /markdown >}} - </td> - <td><span class="h3">h3. Bootstrap heading</span></td> - </tr> - <tr> - <td> - {{< markdown >}}`<h4></h4>`{{< /markdown >}} - </td> - <td><span class="h4">h4. Bootstrap heading</span></td> - </tr> - <tr> - <td> - {{< markdown >}}`<h5></h5>`{{< /markdown >}} - </td> - <td><span class="h5">h5. Bootstrap heading</span></td> - </tr> - <tr> - <td> - {{< markdown >}}`<h6></h6>`{{< /markdown >}} - </td> - <td><span class="h6">h6. Bootstrap heading</span></td> - </tr> - </tbody> -</table> +<hr class="border border-danger border-2 opacity-50"> +<hr class="border border-primary border-3 opacity-75"> +{{< /example >}} ## Lists @@ -214,41 +191,41 @@ For indicating sample output from a program use the `<samp>` tag. Tables are slightly adjusted to style `<caption>`s, collapse borders, and ensure consistent `text-align` throughout. Additional changes for borders, padding, and more come with [the `.table` class]({{< docsref "/content/tables" >}}). -<div class="bd-example"> - <table> - <caption> - This is an example table, and this is its caption to describe the contents. - </caption> - <thead> - <tr> - <th>Table heading</th> - <th>Table heading</th> - <th>Table heading</th> - <th>Table heading</th> - </tr> - </thead> - <tbody> - <tr> - <td>Table cell</td> - <td>Table cell</td> - <td>Table cell</td> - <td>Table cell</td> - </tr> - <tr> - <td>Table cell</td> - <td>Table cell</td> - <td>Table cell</td> - <td>Table cell</td> - </tr> - <tr> - <td>Table cell</td> - <td>Table cell</td> - <td>Table cell</td> - <td>Table cell</td> - </tr> - </tbody> - </table> -</div> +{{< example >}} +<table> + <caption> + This is an example table, and this is its caption to describe the contents. + </caption> + <thead> + <tr> + <th>Table heading</th> + <th>Table heading</th> + <th>Table heading</th> + <th>Table heading</th> + </tr> + </thead> + <tbody> + <tr> + <td>Table cell</td> + <td>Table cell</td> + <td>Table cell</td> + <td>Table cell</td> + </tr> + <tr> + <td>Table cell</td> + <td>Table cell</td> + <td>Table cell</td> + <td>Table cell</td> + </tr> + <tr> + <td>Table cell</td> + <td>Table cell</td> + <td>Table cell</td> + <td>Table cell</td> + </tr> + </tbody> +</table> +{{< /example >}} ## Forms diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/content/tables.md b/vendor/twbs/bootstrap/site/content/docs/5.2/content/tables.md index 6f6e025dc..577e3ef84 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/content/tables.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/content/tables.md @@ -80,12 +80,22 @@ Use `.table-striped` to add zebra-striping to any table row within the `<tbody>` {{< table class="table table-striped" >}} +### Striped columns + +Use `.table-striped-columns` to add zebra-striping to any table column. + +{{< table class="table table-striped-columns" >}} + These classes can also be added to table variants: {{< table class="table table-dark table-striped" >}} +{{< table class="table table-dark table-striped-columns" >}} + {{< table class="table table-success table-striped" >}} +{{< table class="table table-success table-striped-columns" >}} + ### Hoverable rows Add `.table-hover` to enable a hover state on table rows within a `<tbody>`. @@ -94,7 +104,7 @@ Add `.table-hover` to enable a hover state on table rows within a `<tbody>`. {{< table class="table table-dark table-hover" >}} -These hoverable rows can also be combined with the striped variant: +These hoverable rows can also be combined with the striped rows variant: {{< table class="table table-striped table-hover" >}} @@ -210,11 +220,11 @@ Highlight a table row or cell by adding a `.table-active` class. ## How do the variants and accented tables work? -For the accented tables ([striped rows](#striped-rows), [hoverable rows](#hoverable-rows), and [active tables](#active-tables)), we used some techniques to make these effects work for all our [table variants](#variants): +For the accented tables ([striped rows](#striped-rows), [striped columns](#striped-columns), [hoverable rows](#hoverable-rows), and [active tables](#active-tables)), we used some techniques to make these effects work for all our [table variants](#variants): - We start by setting the background of a table cell with the `--bs-table-bg` custom property. All table variants then set that custom property to colorize the table cells. This way, we don't get into trouble if semi-transparent colors are used as table backgrounds. - Then we add an inset box shadow on the table cells with `box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg);` to layer on top of any specified `background-color`. Because we use a huge spread and no blur, the color will be monotone. Since `--bs-table-accent-bg` is unset by default, we don't have a default box shadow. -- When either `.table-striped`, `.table-hover` or `.table-active` classes are added, the `--bs-table-accent-bg` is set to a semitransparent color to colorize the background. +- When either `.table-striped`, `.table-striped-columns`, `.table-hover` or `.table-active` classes are added, the `--bs-table-accent-bg` is set to a semitransparent color to colorize the background. - For each table variant, we generate a `--bs-table-accent-bg` color with the highest contrast depending on that color. For example, the accent color for `.table-primary` is darker while `.table-dark` has a lighter accent color. - Text and border colors are generated the same way, and their colors are inherited by default. @@ -250,9 +260,45 @@ Add `.table-sm` to make any `.table` more compact by cutting all cell `padding` {{< table class="table table-dark table-sm" >}} +## Table group dividers + +Add a thicker border, darker between table groups—`<thead>`, `<tbody>`, and `<tfoot>`—with `.table-group-divider`. Customize the color by changing the `border-top-color` (which we don't currently provide a utility class for at this time). + +{{< example >}} +<table class="table"> + <thead> + <tr> + <th scope="col">#</th> + <th scope="col">First</th> + <th scope="col">Last</th> + <th scope="col">Handle</th> + </tr> + </thead> + <tbody class="table-group-divider"> + <tr> + <th scope="row">1</th> + <td>Mark</td> + <td>Otto</td> + <td>@mdo</td> + </tr> + <tr> + <th scope="row">2</th> + <td>Jacob</td> + <td>Thornton</td> + <td>@fat</td> + </tr> + <tr> + <th scope="row">3</th> + <td colspan="2">Larry the Bird</td> + <td>@twitter</td> + </tr> + </tbody> +</table> +{{< /example >}} + ## Vertical alignment -Table cells of `<thead>` are always vertical aligned to the bottom. Table cells in `<tbody>` inherit their alignment from `<table>` and are aligned to the the top by default. Use the [vertical align]({{< docsref "/utilities/vertical-align" >}}) classes to re-align where needed. +Table cells of `<thead>` are always vertical aligned to the bottom. Table cells in `<tbody>` inherit their alignment from `<table>` and are aligned to the top by default. Use the [vertical align]({{< docsref "/utilities/vertical-align" >}}) classes to re-align where needed. <div class="bd-example"> <div class="table-responsive"> @@ -786,4 +832,4 @@ Use `.table-responsive{-sm|-md|-lg|-xl|-xxl}` as needed to create responsive tab ### Customizing - The factor variables (`$table-striped-bg-factor`, `$table-active-bg-factor` & `$table-hover-bg-factor`) are used to determine the contrast in table variants. -- Apart from the light & dark table variants, theme colors are lightened by the `$table-bg-level` variable. +- Apart from the light & dark table variants, theme colors are lightened by the `$table-bg-scale` variable. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/content/typography.md b/vendor/twbs/bootstrap/site/content/docs/5.2/content/typography.md index 7d41f04de..733013281 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/content/typography.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/content/typography.md @@ -22,52 +22,16 @@ These styles can be found within `_reboot.scss`, and the global variables are de All HTML headings, `<h1>` through `<h6>`, are available. -<table class="table"> - <thead> - <tr> - <th>Heading</th> - <th>Example</th> - </tr> - </thead> - <tbody> - <tr> - <td> - {{< markdown >}}`<h1></h1>`{{< /markdown >}} - </td> - <td><span class="h1">h1. Bootstrap heading</span></td> - </tr> - <tr> - <td> - {{< markdown >}}`<h2></h2>`{{< /markdown >}} - </td> - <td><span class="h2">h2. Bootstrap heading</span></td> - </tr> - <tr> - <td> - {{< markdown >}}`<h3></h3>`{{< /markdown >}} - </td> - <td><span class="h3">h3. Bootstrap heading</span></td> - </tr> - <tr> - <td> - {{< markdown >}}`<h4></h4>`{{< /markdown >}} - </td> - <td><span class="h4">h4. Bootstrap heading</span></td> - </tr> - <tr> - <td> - {{< markdown >}}`<h5></h5>`{{< /markdown >}} - </td> - <td><span class="h5">h5. Bootstrap heading</span></td> - </tr> - <tr> - <td> - {{< markdown >}}`<h6></h6>`{{< /markdown >}} - </td> - <td><span class="h6">h6. Bootstrap heading</span></td> - </tr> - </tbody> -</table> +{{< bs-table >}} +| Heading | Example | +| --- | --- | +| `<h1></h1>` | <span class="h1">h1. Bootstrap heading</span> | +| `<h2></h2>` | <span class="h2">h2. Bootstrap heading</span> | +| `<h3></h3>` | <span class="h3">h3. Bootstrap heading</span> | +| `<h4></h4>` | <span class="h4">h4. Bootstrap heading</span> | +| `<h5></h5>` | <span class="h5">h5. Bootstrap heading</span> | +| `<h6></h6>` | <span class="h6">h6. Bootstrap heading</span> | +{{< /bs-table >}} ```html <h1>h1. Bootstrap heading</h1> @@ -124,6 +88,8 @@ Traditional heading elements are designed to work best in the meat of your page Display headings are configured via the `$display-font-sizes` Sass map and two variables, `$display-font-weight` and `$display-line-height`. +Display headings are customizable via two variables, `$display-font-family` and `$display-font-style`. + {{< scss-docs name="display-headings" file="scss/_variables.scss" >}} ## Lead @@ -184,7 +150,7 @@ Add `.initialism` to an abbreviation for a slightly smaller font-size. ## Blockquotes -For quoting blocks of content from another source within your document. Wrap `<blockquote class="blockquote">` around any <abbr title="HyperText Markup Language">HTML</abbr> as the quote. +For quoting blocks of content from another source within your document. Wrap `<blockquote class="blockquote">` around any HTML as the quote. {{< example >}} <blockquote class="blockquote"> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/customize/color.md b/vendor/twbs/bootstrap/site/content/docs/5.2/customize/color.md index 63e5d19e6..23a7f7104 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/customize/color.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/customize/color.md @@ -109,7 +109,7 @@ Here's how you can use these in your Sass: ## Generating utilities -<small class="d-inline-flex px-2 py-1 font-monospace text-muted border rounded-3">Added in v5.1.0</small> +{{< added-in "5.1.0" >}} Bootstrap doesn't include `color` and `background-color` utilities for every color variable, but you can generate these yourself with our [utility API]({{< docsref "/utilities/api" >}}) and our extended Sass maps added in v5.1.0. @@ -122,6 +122,7 @@ Here's an example that generates text color utilities (e.g., `.text-purple-500`) ```scss @import "bootstrap/scss/functions"; @import "bootstrap/scss/variables"; +@import "bootstrap/scss/maps"; @import "bootstrap/scss/mixins"; @import "bootstrap/scss/utilities"; diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/customize/components.md b/vendor/twbs/bootstrap/site/content/docs/5.2/customize/components.md index b512a9036..b512a9036 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/customize/components.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/customize/components.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/customize/css-variables.md b/vendor/twbs/bootstrap/site/content/docs/5.2/customize/css-variables.md index 079f9ad23..26d167525 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/customize/css-variables.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/customize/css-variables.md @@ -30,11 +30,17 @@ Here are the variables we include (note that the `:root` is required) that can b ## Component variables -We're also beginning to make use of custom properties as local variables for various components. This way we can reduce our compiled CSS, ensure styles aren't inherited in places like nested tables, and allow some basic restyling and extending of Bootstrap components after Sass compilation. +Bootstrap 5 is increasingly making use of custom properties as local variables for various components. This way we reduce our compiled CSS, ensure styles aren't inherited in places like nested tables, and allow some basic restyling and extending of Bootstrap components after Sass compilation. -Have a look at our table documentation for some [insight into how we're using CSS variables]({{< docsref "/content/tables#how-do-the-variants-and-accented-tables-work" >}}). +Have a look at our table documentation for some [insight into how we're using CSS variables]({{< docsref "/content/tables#how-do-the-variants-and-accented-tables-work" >}}). Our [navbars also use CSS variables]({{< docsref "/components/navbar#css" >}}) as of v5.2.0. We're also using CSS variables across our grids—primarily for gutters the [new opt-in CSS grid]({{< docsref "/layout/css-grid" >}})—with more component usage coming in the future. -We're also using CSS variables across our grids—primarily for gutters—with more component usage coming in the future. +Whenever possible, we'll assign CSS variables at the base component level (e.g., `.navbar` for navbar and its sub-components). This reduces guessing on where and how to customize, and allows for easy modifications by our team in future updates. + +## Prefix + +Most CSS variables use a prefix to avoid collisions with your own codebase. This prefix is in addition to the `--` that's required on every CSS variable. + +Customize the prefix via the `$prefix` Sass variable. By default, it's set to `bs-` (note the trailing dash). ## Examples @@ -51,4 +57,4 @@ a { ## Grid breakpoints -While we include our grid breakpoints as CSS variables (except for `xs`), be aware that **CSS variables do not work in media queries**. This is by design in the CSS spec for variables, but may change in coming years with support for `env()` variables. Check out [this Stack Overflow answer](https://stackoverflow.com/a/47212942) for some helpful links. In the mean time, you can use these variables in other CSS situations, as well as in your JavaScript. +While we include our grid breakpoints as CSS variables (except for `xs`), be aware that **CSS variables do not work in media queries**. This is by design in the CSS spec for variables, but may change in coming years with support for `env()` variables. Check out [this Stack Overflow answer](https://stackoverflow.com/a/47212942) for some helpful links. In the meantime, you can use these variables in other CSS situations, as well as in your JavaScript. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/customize/optimize.md b/vendor/twbs/bootstrap/site/content/docs/5.2/customize/optimize.md index fc61728ce..e618ce23a 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/customize/optimize.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/customize/optimize.md @@ -19,8 +19,9 @@ If you're not using a component, comment it out or delete it entirely. For examp Bootstrap's JavaScript includes every component in our primary dist files (`bootstrap.js` and `bootstrap.min.js`), and even our primary dependency (Popper) with our bundle files (`bootstrap.bundle.js` and `bootstrap.bundle.min.js`). While you're customizing via Sass, be sure to remove related JavaScript. -For instance, assuming you're using your own JavaScript bundler like Webpack or Rollup, you'd only import the JavaScript you plan on using. In the example below, we show how to just include our modal JavaScript: +For instance, assuming you're using your own JavaScript bundler like Webpack, Parcel, or Vite, you'd only import the JavaScript you plan on using. In the example below, we show how to just include our modal JavaScript: +<!-- eslint-skip --> ```js // Import just what we need @@ -45,6 +46,7 @@ This way, you're not including any JavaScript you don't intend to use for compon Files in `bootstrap/js/dist` use the **default export**, so if you want to use one of them you have to do the following: +<!-- eslint-skip --> ```js import Modal from 'bootstrap/js/dist/modal' @@ -75,7 +77,7 @@ Whenever possible, be sure to compress all the code you serve to your visitors. While minifying and using compression might seem like enough, making your files non-blocking ones is also a big step in making your site well-optimized and fast enough. -If you are using a [Lighthouse](https://developers.google.com/web/tools/lighthouse/) plugin in Google Chrome, you may have stumbled over FCP. [The First Contentful Paint](https://web.dev/fcp/) metric measures the time from when the page starts loading to when any part of the page's content is rendered on the screen. +If you are using a [Lighthouse](https://developer.chrome.com/docs/lighthouse/overview/) plugin in Google Chrome, you may have stumbled over FCP. [The First Contentful Paint](https://web.dev/fcp/) metric measures the time from when the page starts loading to when any part of the page's content is rendered on the screen. You can improve FCP by deferring non-critical JavaScript or CSS. What does that mean? Simply, JavaScript or stylesheets that don't need to be present on the first paint of your page should be marked with `async` or `defer` attributes. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/customize/options.md b/vendor/twbs/bootstrap/site/content/docs/5.2/customize/options.md index c819e6e84..5013fb9b3 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/customize/options.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/customize/options.md @@ -9,7 +9,7 @@ Customize Bootstrap with our built-in custom variables file and easily toggle gl You can find and customize these variables for key global options in Bootstrap's `scss/_variables.scss` file. -{{< bs-table "table text-start" >}} +{{< bs-table "table table-options" >}} | Variable | Values | Description | | ------------------------------ | ---------------------------------- | -------------------------------------------------------------------------------------- | | `$spacer` | `1rem` (default), or any value > 0 | Specifies the default spacer value to programmatically generate our [spacer utilities]({{< docsref "/utilities/spacing" >}}). | @@ -19,6 +19,7 @@ You can find and customize these variables for key global options in Bootstrap's | `$enable-transitions` | `true` (default) or `false` | Enables predefined `transition`s on various components. | | `$enable-reduced-motion` | `true` (default) or `false` | Enables the [`prefers-reduced-motion` media query]({{< docsref "/getting-started/accessibility#reduced-motion" >}}), which suppresses certain animations/transitions based on the users' browser/operating system preferences. | | `$enable-grid-classes` | `true` (default) or `false` | Enables the generation of CSS classes for the grid system (e.g. `.row`, `.col-md-1`, etc.). | +| `$enable-container-classes` | `true` (default) or `false` | Enables the generation of CSS classes for layout containers. (New in v5.2.0) | | `$enable-caret` | `true` (default) or `false` | Enables pseudo element caret on `.dropdown-toggle`. | | `$enable-button-pointers` | `true` (default) or `false` | Add "hand" cursor to non-disabled button elements. | | `$enable-rfs` | `true` (default) or `false` | Globally enables [RFS]({{< docsref "/getting-started/rfs" >}}). | diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/customize/overview.md b/vendor/twbs/bootstrap/site/content/docs/5.2/customize/overview.md index 03b4bff33..1b332bfe4 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/customize/overview.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/customize/overview.md @@ -4,7 +4,7 @@ title: Customize description: Learn how to theme, customize, and extend Bootstrap with Sass, a boatload of global options, an expansive color system, and more. group: customize toc: false -aliases: "/docs/5.1/customize/" +aliases: "/docs/5.2/customize/" sections: - title: Sass description: Utilize our source Sass files to take advantage of variables, maps, mixins, and functions. @@ -40,12 +40,12 @@ As you familiarize yourself with Bootstrap, continue exploring this section for Several Bootstrap components include embedded SVGs in our CSS to style components consistently and easily across browsers and devices. **For organizations with more strict <abbr title="Content Security Policy">CSP</abbr> configurations**, we've documented all instances of our embedded SVGs (all of which are applied via `background-image`) so you can more thoroughly review your options. - [Accordion]({{< docsref "/components/accordion" >}}) +- [Carousel controls]({{< docsref "/components/carousel#with-controls" >}}) - [Close button]({{< docsref "/components/close-button" >}}) (used in alerts and modals) - [Form checkboxes and radio buttons]({{< docsref "/forms/checks-radios" >}}) - [Form switches]({{< docsref "/forms/checks-radios#switches" >}}) - [Form validation icons]({{< docsref "/forms/validation#server-side" >}}) -- [Select menus]({{< docsref "/forms/select" >}}) -- [Carousel controls]({{< docsref "/components/carousel#with-controls" >}}) - [Navbar toggle buttons]({{< docsref "/components/navbar#responsive-behaviors" >}}) +- [Select menus]({{< docsref "/forms/select" >}}) Based on [community conversation](https://github.com/twbs/bootstrap/issues/25394), some options for addressing this in your own codebase include replacing the URLs with locally hosted assets, removing the images and using inline images (not possible in all components), and modifying your CSP. Our recommendation is to carefully review your own security policies and decide on the best path forward, if necessary. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/customize/sass.md b/vendor/twbs/bootstrap/site/content/docs/5.2/customize/sass.md index e00d1eeae..0fd90bc37 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/customize/sass.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/customize/sass.md @@ -22,7 +22,7 @@ your-project/ └── scss ``` -If you've downloaded our source files and aren't using a package manager, you'll want to manually setup something similar to that structure, keeping Bootstrap's source files separate from your own. +If you've downloaded our source files and aren't using a package manager, you'll want to manually create something similar to that structure, keeping Bootstrap's source files separate from your own. ```text your-project/ @@ -59,10 +59,15 @@ In your `custom.scss`, you'll import Bootstrap's source Sass files. You have two // 3. Include remainder of required Bootstrap stylesheets @import "../node_modules/bootstrap/scss/variables"; + +// 4. Include any default map overrides here + +// 5. Include remainder of required parts +@import "../node_modules/bootstrap/scss/maps"; @import "../node_modules/bootstrap/scss/mixins"; @import "../node_modules/bootstrap/scss/root"; -// 4. Include any optional Bootstrap CSS as needed +// 6. Optionally include any other parts as needed @import "../node_modules/bootstrap/scss/utilities"; @import "../node_modules/bootstrap/scss/reboot"; @import "../node_modules/bootstrap/scss/type"; @@ -71,10 +76,10 @@ In your `custom.scss`, you'll import Bootstrap's source Sass files. You have two @import "../node_modules/bootstrap/scss/grid"; @import "../node_modules/bootstrap/scss/helpers"; -// 5. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss` +// 7. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss` @import "../node_modules/bootstrap/scss/utilities/api"; -// 6. Add additional custom code here +// 8. Add additional custom code here ``` With that setup in place, you can begin to modify any of the Sass variables and maps in your `custom.scss`. You can also start to add parts of Bootstrap under the `// Optional` section as needed. We suggest using the full import stack from our `bootstrap.scss` file as your starting point. @@ -99,6 +104,7 @@ $body-color: #111; // Required @import "../node_modules/bootstrap/scss/variables"; +@import "../node_modules/bootstrap/scss/maps"; @import "../node_modules/bootstrap/scss/mixins"; @import "../node_modules/bootstrap/scss/root"; @@ -154,17 +160,19 @@ $theme-colors: map-merge($theme-colors, $custom-colors); ### Remove from map -To remove colors from `$theme-colors`, or any other map, use `map-remove`. Be aware you must insert it between our requirements and options: +To remove colors from `$theme-colors`, or any other map, use `map-remove`. Be aware you must insert `$theme-colors` between our requirements just after its definition in `variables` and before its usage in `maps`: ```scss // Required @import "../node_modules/bootstrap/scss/functions"; @import "../node_modules/bootstrap/scss/variables"; -@import "../node_modules/bootstrap/scss/mixins"; -@import "../node_modules/bootstrap/scss/root"; $theme-colors: map-remove($theme-colors, "info", "light", "dark"); +@import "../node_modules/bootstrap/scss/maps"; +@import "../node_modules/bootstrap/scss/mixins"; +@import "../node_modules/bootstrap/scss/root"; + // Optional @import "../node_modules/bootstrap/scss/reboot"; @import "../node_modules/bootstrap/scss/type"; @@ -208,9 +216,9 @@ In practice, you'd call the function and pass in the color and weight parameters ### Color contrast -In order to meet [WCAG 2.0 accessibility standards for color contrast](https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html), authors **must** provide [a contrast ratio of at least 4.5:1](https://www.w3.org/WAI/WCAG20/quickref/20160105/Overview.php#visual-audio-contrast-contrast), with very few exceptions. +In order to meet the [Web Content Accessibility Guidelines (WCAG)](https://www.w3.org/TR/WCAG/) contrast requirements, authors **must** provide a minimum [text color contrast of 4.5:1](https://www.w3.org/TR/WCAG/#contrast-minimum) and a minimum [non-text color contrast of 3:1](https://www.w3.org/TR/WCAG/#non-text-contrast), with very few exceptions. -An additional function we include in Bootstrap is the color contrast function, `color-contrast`. It utilizes the [WCAG 2.0 algorithm](https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests) for calculating contrast thresholds based on [relative luminance](https://www.w3.org/WAI/GL/wiki/Relative_luminance) in a `sRGB` colorspace to automatically return a light (`#fff`), dark (`#212529`) or black (`#000`) contrast color based on the specified base color. This function is especially useful for mixins or loops where you're generating multiple classes. +To help with this, we included the `color-contrast` function in Bootstrap. It uses the [WCAG contrast ratio algorithm](https://www.w3.org/TR/WCAG/#dfn-contrast-ratio) for calculating contrast thresholds based on [relative luminance](https://www.w3.org/TR/WCAG/#dfn-relative-luminance) in an `sRGB` color space to automatically return a light (`#fff`), dark (`#212529`) or black (`#000`) contrast color based on the specified base color. This function is especially useful for mixins or loops where you're generating multiple classes. For example, to generate color swatches from our `$theme-colors` map: diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/.stylelintrc b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/.stylelintrc index dc76dedbd..79ea92df0 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/.stylelintrc +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/.stylelintrc @@ -1,12 +1,12 @@ { "extends": [ - "stylelint-config-twbs-bootstrap/css" + "stylelint-config-twbs-bootstrap" ], "rules": { "at-rule-no-vendor-prefix": null, "comment-empty-line-before": null, "media-feature-name-no-vendor-prefix": null, - "property-blacklist": null, + "property-disallowed-list": null, "property-no-vendor-prefix": null, "selector-no-qualifying-type": null, "selector-no-vendor-prefix": null, diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/examples/_index.md b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/_index.md new file mode 100644 index 000000000..8241892a5 --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/_index.md @@ -0,0 +1,45 @@ +--- +layout: single +title: Examples +description: Quickly get a project started with any of our examples ranging from using parts of the framework to custom components and layouts. +aliases: "/examples/" +--- + +{{< list-examples.inline >}} +{{ range $entry := $.Site.Data.examples -}} +<div class="row g-lg-5 mb-5"> + <div class="bd-content col-lg-3"> + <h2 id="{{ $entry.category | urlize }}">{{ $entry.category }}</h2> + <p>{{ $entry.description }}</p> + {{ if eq $entry.category "RTL" -}} + <div class="bd-callout bd-callout-warning small"> + <p> + <strong>RTL is still experimental</strong> and will evolve with feedback. Spotted something or have an improvement to suggest? + </p> + <p><a href="{{ $.Site.Params.repo }}/issues/new">Please open an issue.</a></p> + </div> + {{ end -}} + </div> + + <div class="col-lg-9"> + {{ range $i, $example := $entry.examples -}} + {{- $len := len $entry.examples -}} + {{ if (eq $i 0) }}<div class="row">{{ end }} + <div class="col-sm-6 col-md-4 mb-3"> + <a class="d-block" href="/docs/{{ $.Site.Params.docs_version }}/examples/{{ $example.name | urlize }}/"{{ if in $example.name "RTL" }} hreflang="ar"{{ end }}> + <img class="img-thumbnail mb-3" srcset="/docs/{{ $.Site.Params.docs_version }}/assets/img/examples/{{ $example.name | urlize }}.png, + /docs/{{ $.Site.Params.docs_version }}/assets/img/examples/{{ $example.name | urlize }}@2x.png 2x" + src="/docs/{{ $.Site.Params.docs_version }}/assets/img/examples/{{ $example.name | urlize }}.png" + alt="" + width="480" height="300" + loading="lazy"> + <h3 class="h5 mb-1">{{ $example.name }}</h3> + </a> + <p class="text-muted">{{ $example.description }}</p> + </div> + {{ if (eq (add $i 1) $len) }}</div>{{ end }} + {{ end -}} + </div> +</div> +{{ end -}} +{{< /list-examples.inline >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/album-rtl/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/album-rtl/index.html index 3408056bc..3408056bc 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/album-rtl/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/album-rtl/index.html diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/album/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/album/index.html index 2d25d726a..2d25d726a 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/album/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/album/index.html diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/blog-rtl/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/blog-rtl/index.html index 3ce0978f3..05af925eb 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/blog-rtl/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/blog-rtl/index.html @@ -9,7 +9,7 @@ include_js: false --- <div class="container"> - <header class="blog-header py-3"> + <header class="blog-header lh-1 py-3"> <div class="row flex-nowrap justify-content-between align-items-center"> <div class="col-4 pt-1"> <a class="link-secondary" href="#">الإشتراك في النشرة البريدية</a> @@ -45,7 +45,7 @@ include_js: false </div> <main class="container"> - <div class="p-4 p-md-5 mb-4 text-white rounded bg-dark"> + <div class="p-4 p-md-5 mb-4 rounded text-bg-dark"> <div class="col-md-6 px-0"> <h1 class="display-4 fst-italic">عنوان تدوينة مميزة أطول</h1> <p class="lead my-3">عدة أسطر نصية متعددة تعبر عن التدوية، وذلك لإعلام القراء الجدد بسرعة وكفاءة حول أكثر الأشياء إثارة للاهتمام في محتويات هذه التدوينة.</p> @@ -91,7 +91,7 @@ include_js: false </h3> <article class="blog-post"> - <h2 class="blog-post-title">مثال على تدوينة</h2> + <h2 class="blog-post-title mb-1">مثال على تدوينة</h2> <p class="blog-post-meta">1 يناير 2021 بواسطة <a href="#"> Mark </a></p> <p>تعرض مشاركة المدونة هذه بضعة أنواع مختلفة من المحتوى الذي يتم دعمه وتصميمه باستخدام Bootstrap. النصوص الأساسية، الصور، والأكواد مدعومة بشكل كامل.</p> @@ -126,7 +126,7 @@ include_js: false </article> <article class="blog-post"> - <h2 class="blog-post-title">تدوينة أخرى</h2> + <h2 class="blog-post-title mb-1">تدوينة أخرى</h2> <p class="blog-post-meta">23 ديسمبر 2020 بواسطة <a href="#">Jacob</a></p> <p>في الوقت الحالي، تدرس عدَّة شركات هذه الميكروبات بشكل أعمق، وتستزرعها من أجل الحصول على الغذاء. ففي عام 2019م، أعلن باحثون في شركة (Air Protein) الأمريكية نجاحهم في تحويل ثاني أكسيد الكربون الموجود في الهواء إلى لحوم صناعية مصنوعة من البروتين، التي لا تتطلَّب أي أرض زراعية، بل هي معتمدة بشكل أساسي على الهواء.</p> @@ -138,7 +138,7 @@ include_js: false </article> <article class="blog-post"> - <h2 class="blog-post-title">ميزة جديدة</h2> + <h2 class="blog-post-title mb-1">ميزة جديدة</h2> <p class="blog-post-meta">14 ديسمبر 2020 بواسطة <a href="#">Jacob</a></p> <p>كما أن الشركة الفنلندية (Solar Foods) طوَّرت تقنية لإنتاج البروتين من الهواء، حيث تبدأ العملية بتقسيم الماء إلى مكوناته الهيدروجين والأكسجين عن طريق الكهرباء. فالهيدروجين يوفِّر الطاقة للبكتريا لتحويل ثاني أكسيد الكربون والنيتروجين الموجودين في الهواء إلى مادة عضوية غنية بالبروتين بشكل أكفأ من نمو النباتات باستخدام البناء الضوئي. وهذا البروتين يشبه دقيق القمح وقد أطلق عليه اسم "سولين" (Solein).</p> @@ -153,8 +153,8 @@ include_js: false </article> <nav class="blog-pagination" aria-label="Pagination"> - <a class="btn btn-outline-primary" href="#">تدوينات أقدم</a> - <a class="btn btn-outline-secondary disabled">تدوينات أحدث</a> + <a class="btn btn-outline-primary rounded-pill" href="#">تدوينات أقدم</a> + <a class="btn btn-outline-secondary rounded-pill disabled">تدوينات أحدث</a> </nav> </div> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/blog/blog.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/blog/blog.css index 437a540f6..cc5fc7473 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/blog/blog.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/blog/blog.css @@ -1,7 +1,6 @@ /* stylelint-disable selector-list-comma-newline-after */ .blog-header { - line-height: 1; border-bottom: 1px solid #e5e5e5; } @@ -27,35 +26,6 @@ h1, h2, h3, h4, h5, h6 { } } -.nav-scroller { - position: relative; - z-index: 2; - height: 2.75rem; - overflow-y: hidden; -} - -.nav-scroller .nav { - display: flex; - flex-wrap: nowrap; - padding-bottom: 1rem; - margin-top: -1px; - overflow-x: auto; - text-align: center; - white-space: nowrap; - -webkit-overflow-scrolling: touch; -} - -.nav-scroller .nav-link { - padding-top: .75rem; - padding-bottom: .75rem; - font-size: .875rem; -} - -.card-img-right { - height: 100%; - border-radius: 0 3px 3px 0; -} - .flex-auto { flex: 0 0 auto; } @@ -69,9 +39,6 @@ h1, h2, h3, h4, h5, h6 { .blog-pagination { margin-bottom: 4rem; } -.blog-pagination > .btn { - border-radius: 2rem; -} /* * Blog posts @@ -80,7 +47,6 @@ h1, h2, h3, h4, h5, h6 { margin-bottom: 4rem; } .blog-post-title { - margin-bottom: .25rem; font-size: 2.5rem; } .blog-post-meta { diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/blog/blog.rtl.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/blog/blog.rtl.css index 35eac731f..fc03c35a3 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/blog/blog.rtl.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/blog/blog.rtl.css @@ -1,7 +1,6 @@ /* stylelint-disable selector-list-comma-newline-after */ .blog-header { - line-height: 1; border-bottom: 1px solid #e5e5e5; } @@ -27,35 +26,6 @@ h1, h2, h3, h4, h5, h6 { } } -.nav-scroller { - position: relative; - z-index: 2; - height: 2.75rem; - overflow-y: hidden; -} - -.nav-scroller .nav { - display: flex; - flex-wrap: nowrap; - padding-bottom: 1rem; - margin-top: -1px; - overflow-x: auto; - text-align: center; - white-space: nowrap; - -webkit-overflow-scrolling: touch; -} - -.nav-scroller .nav-link { - padding-top: .75rem; - padding-bottom: .75rem; - font-size: .875rem; -} - -.card-img-right { - height: 100%; - border-radius: 3px 0 0 3px; -} - .flex-auto { flex: 0 0 auto; } @@ -69,9 +39,6 @@ h1, h2, h3, h4, h5, h6 { .blog-pagination { margin-bottom: 4rem; } -.blog-pagination > .btn { - border-radius: 2rem; -} /* * Blog posts @@ -80,7 +47,6 @@ h1, h2, h3, h4, h5, h6 { margin-bottom: 4rem; } .blog-post-title { - margin-bottom: .25rem; font-size: 2.5rem; } .blog-post-meta { diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/blog/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/blog/index.html index fb5c25dfc..6b60ea069 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/blog/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/blog/index.html @@ -8,7 +8,7 @@ include_js: false --- <div class="container"> - <header class="blog-header py-3"> + <header class="blog-header lh-1 py-3"> <div class="row flex-nowrap justify-content-between align-items-center"> <div class="col-4 pt-1"> <a class="link-secondary" href="#">Subscribe</a> @@ -44,7 +44,7 @@ include_js: false </div> <main class="container"> - <div class="p-4 p-md-5 mb-4 text-white rounded bg-dark"> + <div class="p-4 p-md-5 mb-4 rounded text-bg-dark"> <div class="col-md-6 px-0"> <h1 class="display-4 fst-italic">Title of a longer featured blog post</h1> <p class="lead my-3">Multiple lines of text that form the lede, informing new readers quickly and efficiently about what’s most interesting in this post’s contents.</p> @@ -90,7 +90,7 @@ include_js: false </h3> <article class="blog-post"> - <h2 class="blog-post-title">Sample blog post</h2> + <h2 class="blog-post-title mb-1">Sample blog post</h2> <p class="blog-post-meta">January 1, 2021 by <a href="#">Mark</a></p> <p>This blog post shows a few different types of content that’s supported and styled with Bootstrap. Basic typography, lists, tables, images, code, and more are all supported as expected.</p> @@ -129,7 +129,7 @@ include_js: false <ul> <li><strong>To bold text</strong>, use <code class="language-plaintext highlighter-rouge"><strong></code>.</li> <li><em>To italicize text</em>, use <code class="language-plaintext highlighter-rouge"><em></code>.</li> - <li>Abbreviations, like <abbr title="HyperText Markup Langage">HTML</abbr> should use <code class="language-plaintext highlighter-rouge"><abbr></code>, with an optional <code class="language-plaintext highlighter-rouge">title</code> attribute for the full phrase.</li> + <li>Abbreviations, like <abbr title="HyperText Markup Language">HTML</abbr> should use <code class="language-plaintext highlighter-rouge"><abbr></code>, with an optional <code class="language-plaintext highlighter-rouge">title</code> attribute for the full phrase.</li> <li>Citations, like <cite>— Mark Otto</cite>, should use <code class="language-plaintext highlighter-rouge"><cite></code>.</li> <li><del>Deleted</del> text should use <code class="language-plaintext highlighter-rouge"><del></code> and <ins>inserted</ins> text should use <code class="language-plaintext highlighter-rouge"><ins></code>.</li> <li>Superscript <sup>text</sup> uses <code class="language-plaintext highlighter-rouge"><sup></code> and subscript <sub>text</sub> uses <code class="language-plaintext highlighter-rouge"><sub></code>.</li> @@ -144,7 +144,7 @@ include_js: false </article> <article class="blog-post"> - <h2 class="blog-post-title">Another blog post</h2> + <h2 class="blog-post-title mb-1">Another blog post</h2> <p class="blog-post-meta">December 23, 2020 by <a href="#">Jacob</a></p> <p>This is some additional paragraph placeholder content. It has been written to fill the available space and show how a longer snippet of text affects the surrounding content. We'll repeat it often to keep the demonstration flowing, so be on the lookout for this exact same string of text.</p> @@ -192,7 +192,7 @@ include_js: false </article> <article class="blog-post"> - <h2 class="blog-post-title">New feature</h2> + <h2 class="blog-post-title mb-1">New feature</h2> <p class="blog-post-meta">December 14, 2020 by <a href="#">Chris</a></p> <p>This is some additional paragraph placeholder content. It has been written to fill the available space and show how a longer snippet of text affects the surrounding content. We'll repeat it often to keep the demonstration flowing, so be on the lookout for this exact same string of text.</p> @@ -205,8 +205,8 @@ include_js: false </article> <nav class="blog-pagination" aria-label="Pagination"> - <a class="btn btn-outline-primary" href="#">Older</a> - <a class="btn btn-outline-secondary disabled">Newer</a> + <a class="btn btn-outline-primary rounded-pill" href="#">Older</a> + <a class="btn btn-outline-secondary rounded-pill disabled">Newer</a> </nav> </div> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/carousel-rtl/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/carousel-rtl/index.html index 043d4b063..b8c35d669 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/carousel-rtl/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/carousel-rtl/index.html @@ -25,7 +25,7 @@ extra_css: <a class="nav-link disabled">رابط غير مفعل</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="بحث" aria-label="بحث"> <button class="btn btn-outline-success" type="submit">بحث</button> </form> @@ -95,19 +95,19 @@ extra_css: <div class="row"> <div class="col-lg-4"> {{< placeholder width="140" height="140" background="#777" color="#777" class="rounded-circle" >}} - <h2>عنوان</h2> + <h2 class="fw-normal">عنوان</h2> <p>تذكر دائماً أن الحاسوب لا يمتلك ذكاءً، ولكنه يكتسب الذكاء الاصطناعي من خلال ثلاثة عناصر وظيفية رئيسة، هي: القدرة على التحليل، والقدرة على التأليف، والاستدلال المنطقي.</p> <p><a class="btn btn-secondary" href="#">عرض التفاصيل</a></p> </div><!-- /.col-lg-4 --> <div class="col-lg-4"> {{< placeholder width="140" height="140" background="#777" color="#777" class="rounded-circle" >}} - <h2>عنوان آخر</h2> + <h2 class="fw-normal">عنوان آخر</h2> <p>إذا أردنا استخدام الحاسوب الذكي في معالجة اللغة العربية فإننا نجد أنفسنا أمام تحدٍّ كبير، خاصة وأن لغتنا تمتاز بتماسك منظوماتها وتداخلها، ومع ذلك فإن الذكاء الاصطناعي يمكّننا من الحصول على أربعة أنواع من المعالجة، هي: المعالجة الصوتية، والمعالجة الصرفية، والمعالجة النحوية، والمعالجة الدلالية.</p> <p><a class="btn btn-secondary" href="#">عرض التفاصيل</a></p> </div><!-- /.col-lg-4 --> <div class="col-lg-4"> {{< placeholder width="140" height="140" background="#777" color="#777" class="rounded-circle" >}} - <h2>عنوان ثالث لتأكيد المعلومة</h2> + <h2 class="fw-normal">عنوان ثالث لتأكيد المعلومة</h2> <p>بفضل بحوث الذكاء الاصطناعي وتقنياته استطعنا الانتقال من مرحلة التعامل مع الفيزيائي إلى مرحلة التعامل مع المنطقي، وقد انعكس هذا الانتقال بصورة إيجابية على الكيفية التي تتعامل بها الشعوب مع لغاتها الحيَّة، وهذا يعني أنه يجب أن ينعكس بصورة إيجابية على كيفية تعاملنا مع لغتنا العربية.</p> <p><a class="btn btn-secondary" href="#">عرض التفاصيل</a></p> </div><!-- /.col-lg-4 --> @@ -120,7 +120,7 @@ extra_css: <div class="row featurette"> <div class="col-md-7"> - <h2 class="featurette-heading">العنوان الأول المميز. <span class="text-muted"> سيذهل عقلك. </span></h2> + <h2 class="featurette-heading fw-normal lh-1">العنوان الأول المميز. <span class="text-muted"> سيذهل عقلك. </span></h2> <p class="lead">وجه الإنسان هو جزء معقَّد ومتميِّز للغاية من جسمه. وفي الواقع، إنه أحد أكثر أنظمة الإشارات المتاحة تعقيداً لدينا؛ فهو يتضمَّن أكثر من 40 عضلة مستقلة هيكلياً ووظيفياً، بحيث يمكن تشغيل كل منها بشكل مستقل عن البعض الآخر؛ وتشكِّل أحد أقوى مؤشرات العواطف.</p> </div> <div class="col-md-5"> @@ -132,7 +132,7 @@ extra_css: <div class="row featurette"> <div class="col-md-7 order-md-2"> - <h2 class="featurette-heading">أوه نعم، هذا جيد. <span class="text-muted"> شاهد بنفسك. </span></h2> + <h2 class="featurette-heading fw-normal lh-1">أوه نعم، هذا جيد. <span class="text-muted"> شاهد بنفسك. </span></h2> <p class="lead">عندما نضحك أو نبكي، فإننا نعرض عواطفنا، مما يسمح للآخرين بإلقاء نظرة خاطفة على أذهاننا أثناء "قراءة" وجوهنا بناءً على التغييرات في مكوّنات الوجه الرئيسة، مثل: العينين والحاجبين والجفنين والأنف والشفتين.</p> </div> <div class="col-md-5 order-md-1"> @@ -144,7 +144,7 @@ extra_css: <div class="row featurette"> <div class="col-md-7"> - <h2 class="featurette-heading">وأخيرًا، هذا. <span class="text-muted"> كش ملك. </span></h2> + <h2 class="featurette-heading fw-normal lh-1">وأخيرًا، هذا. <span class="text-muted"> كش ملك. </span></h2> <p class="lead">إن جميع العضلات في أجسامنا مدعمة بالأعصاب المتصلة من كافة أنحاء الجسم بالنخاع الشوكي والدماغ. وهذا الاتصال العصبي هو ثنائي الاتجاه، أي إن العصب يتسبَّب في تقلصات العضلات بناءً على إشارات الدماغ، ويقوم في الوقت نفسه بإرسال معلومات عن حالة العضلات إلى الدماغ</p> </div> <div class="col-md-5"> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/carousel/carousel.rtl.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/carousel/carousel.css index 853640b97..0bdf9768d 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/carousel/carousel.rtl.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/carousel/carousel.css @@ -26,13 +26,6 @@ body { .carousel-item { height: 32rem; } -.carousel-item > img { - position: absolute; - top: 0; - right: 0; - min-width: 100%; - height: 32rem; -} /* MARKETING CONTENT @@ -43,13 +36,12 @@ body { margin-bottom: 1.5rem; text-align: center; } -.marketing h2 { - font-weight: 400; -} +/* rtl:begin:ignore */ .marketing .col-lg-4 p { margin-right: .75rem; margin-left: .75rem; } +/* rtl:end:ignore */ /* Featurettes @@ -60,11 +52,12 @@ body { } /* Thin out the marketing headings */ +/* rtl:begin:remove */ .featurette-heading { - font-weight: 300; - line-height: 1; + letter-spacing: -.05rem; } +/* rtl:end:remove */ /* RESPONSIVE CSS -------------------------------------------------- */ diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/carousel/carousel.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/carousel/carousel.rtl.css index f91faec76..d20a8111a 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/carousel/carousel.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/carousel/carousel.rtl.css @@ -26,13 +26,6 @@ body { .carousel-item { height: 32rem; } -.carousel-item > img { - position: absolute; - top: 0; - left: 0; - min-width: 100%; - height: 32rem; -} /* MARKETING CONTENT @@ -43,15 +36,10 @@ body { margin-bottom: 1.5rem; text-align: center; } -.marketing h2 { - font-weight: 400; -} -/* rtl:begin:ignore */ .marketing .col-lg-4 p { margin-right: .75rem; margin-left: .75rem; } -/* rtl:end:ignore */ /* Featurettes @@ -62,13 +50,6 @@ body { } /* Thin out the marketing headings */ -.featurette-heading { - font-weight: 300; - line-height: 1; - /* rtl:remove */ - letter-spacing: -.05rem; -} - /* RESPONSIVE CSS -------------------------------------------------- */ diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/carousel/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/carousel/index.html index 8faf6cdd1..67c0dd529 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/carousel/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/carousel/index.html @@ -24,7 +24,7 @@ extra_css: <a class="nav-link disabled">Disabled</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> @@ -94,19 +94,19 @@ extra_css: <div class="row"> <div class="col-lg-4"> {{< placeholder width="140" height="140" background="#777" color="#777" class="rounded-circle" >}} - <h2>Heading</h2> + <h2 class="fw-normal">Heading</h2> <p>Some representative placeholder content for the three columns of text below the carousel. This is the first column.</p> <p><a class="btn btn-secondary" href="#">View details »</a></p> </div><!-- /.col-lg-4 --> <div class="col-lg-4"> {{< placeholder width="140" height="140" background="#777" color="#777" class="rounded-circle" >}} - <h2>Heading</h2> + <h2 class="fw-normal">Heading</h2> <p>Another exciting bit of representative placeholder content. This time, we've moved on to the second column.</p> <p><a class="btn btn-secondary" href="#">View details »</a></p> </div><!-- /.col-lg-4 --> <div class="col-lg-4"> {{< placeholder width="140" height="140" background="#777" color="#777" class="rounded-circle" >}} - <h2>Heading</h2> + <h2 class="fw-normal">Heading</h2> <p>And lastly this, the third column of representative placeholder content.</p> <p><a class="btn btn-secondary" href="#">View details »</a></p> </div><!-- /.col-lg-4 --> @@ -119,7 +119,7 @@ extra_css: <div class="row featurette"> <div class="col-md-7"> - <h2 class="featurette-heading">First featurette heading. <span class="text-muted">It’ll blow your mind.</span></h2> + <h2 class="featurette-heading fw-normal lh-1">First featurette heading. <span class="text-muted">It’ll blow your mind.</span></h2> <p class="lead">Some great placeholder content for the first featurette here. Imagine some exciting prose here.</p> </div> <div class="col-md-5"> @@ -131,7 +131,7 @@ extra_css: <div class="row featurette"> <div class="col-md-7 order-md-2"> - <h2 class="featurette-heading">Oh yeah, it’s that good. <span class="text-muted">See for yourself.</span></h2> + <h2 class="featurette-heading fw-normal lh-1">Oh yeah, it’s that good. <span class="text-muted">See for yourself.</span></h2> <p class="lead">Another featurette? Of course. More placeholder content here to give you an idea of how this layout would work with some actual real-world content in place.</p> </div> <div class="col-md-5 order-md-1"> @@ -143,7 +143,7 @@ extra_css: <div class="row featurette"> <div class="col-md-7"> - <h2 class="featurette-heading">And lastly, this one. <span class="text-muted">Checkmate.</span></h2> + <h2 class="featurette-heading fw-normal lh-1">And lastly, this one. <span class="text-muted">Checkmate.</span></h2> <p class="lead">And yes, this is the last block of representative placeholder content. Again, not really intended to be actually read, simply here to give you a better view of what this would look like with some actual content. Your content.</p> </div> <div class="col-md-5"> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/cheatsheet-rtl/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/cheatsheet-rtl/index.html index 04afcbaf4..77accc976 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/cheatsheet-rtl/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/cheatsheet-rtl/index.html @@ -12,7 +12,7 @@ direction: rtl <header class="bd-header bg-dark py-3 d-flex align-items-stretch border-bottom border-dark"> <div class="container-fluid d-flex align-items-center"> <h1 class="d-flex align-items-center fs-4 text-white mb-0"> - <img src="/docs/5.1/assets/brand/bootstrap-logo-white.svg" width="38" height="30" class="me-3" alt="Bootstrap"> + <img src="/docs/{{< param docs_version >}}/assets/brand/bootstrap-logo-white.svg" width="38" height="30" class="me-3" alt="Bootstrap"> ورقة الغش </h1> <a href="{{< docsref "/examples/cheatsheet" >}}" class="ms-auto link-light" hreflang="en">جدول بيانات LTR</a> @@ -23,48 +23,48 @@ direction: rtl <nav class="small" id="toc"> <ul class="list-unstyled"> <li class="my-2"> - <button class="btn d-inline-flex align-items-center collapsed" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#contents-collapse" aria-controls="contents-collapse">المحتوى</button> + <button class="btn d-inline-flex align-items-center collapsed border-0" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#contents-collapse" aria-controls="contents-collapse">المحتوى</button> <ul class="list-unstyled ps-3 collapse" id="contents-collapse"> - <li><a class="d-inline-flex align-items-center rounded" href="#typography">النصوص</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#images">الصور</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#tables">الجداول</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#figures">النماذج البيانية</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#typography">النصوص</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#images">الصور</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#tables">الجداول</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#figures">النماذج البيانية</a></li> </ul> </li> <li class="my-2"> - <button class="btn d-inline-flex align-items-center collapsed" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#forms-collapse" aria-controls="forms-collapse">النماذج</button> + <button class="btn d-inline-flex align-items-center collapsed border-0" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#forms-collapse" aria-controls="forms-collapse">النماذج</button> <ul class="list-unstyled ps-3 collapse" id="forms-collapse"> - <li><a class="d-inline-flex align-items-center rounded" href="#overview">نظرة عامة</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#disabled-forms">الحقول المعطلة</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#sizing">الأحجام</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#input-group">مجموعة الإدخال</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#floating-labels">الحقول ذوي العناوين العائمة</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#validation">التحقق</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#overview">نظرة عامة</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#disabled-forms">الحقول المعطلة</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#sizing">الأحجام</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#input-group">مجموعة الإدخال</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#floating-labels">الحقول ذوي العناوين العائمة</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#validation">التحقق</a></li> </ul> </li> <li class="my-2"> - <button class="btn d-inline-flex align-items-center collapsed" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#components-collapse" aria-controls="components-collapse">مكونات</button> + <button class="btn d-inline-flex align-items-center collapsed border-0" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#components-collapse" aria-controls="components-collapse">مكونات</button> <ul class="list-unstyled ps-3 collapse" id="components-collapse"> - <li><a class="d-inline-flex align-items-center rounded" href="#accordion">المطوية</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#alerts">الإنذارات</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#badge">الشارة</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#breadcrumb">مسار التنقل التفصيلي</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#buttons">الأزرار</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#button-group">مجموعة الأزرار</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#card">البطاقة</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#carousel">شرائح العرض</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#dropdowns">القوائم المنسدلة</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#list-group">مجموعة العناصر</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#modal">الصندوق العائم</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#navs">التنقل</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#navbar">شريط التنقل</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#pagination">ترقيم الصفحات</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#popovers">الصناديق المنبثقة</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#progress">شريط التقدم</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#scrollspy">المخطوطة</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#spinners">الدوائر المتحركة</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#toasts">الإشعارات</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#tooltips">التلميحات</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#accordion">المطوية</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#alerts">الإنذارات</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#badge">الشارة</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#breadcrumb">مسار التنقل التفصيلي</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#buttons">الأزرار</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#button-group">مجموعة الأزرار</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#card">البطاقة</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#carousel">شرائح العرض</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#dropdowns">القوائم المنسدلة</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#list-group">مجموعة العناصر</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#modal">الصندوق العائم</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#navs">التنقل</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#navbar">شريط التنقل</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#pagination">ترقيم الصفحات</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#popovers">الصناديق المنبثقة</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#progress">شريط التقدم</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#scrollspy">المخطوطة</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#spinners">الدوائر المتحركة</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#toasts">الإشعارات</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#tooltips">التلميحات</a></li> </ul> </li> </ul> @@ -117,6 +117,10 @@ direction: rtl {{< /example >}} {{< example show_markup="false" >}} + <hr> + {{< /example >}} + + {{< example show_markup="false" >}} <blockquote class="blockquote"> <p>إقتباس مبهر، موضوع في عنصر blockquote</p> <footer class="blockquote-footer">شخص مشهور في <cite title= "عنوان المصدر"> عنوان المصدر </cite></footer> @@ -617,7 +621,7 @@ direction: rtl </h4> <div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample"> <div class="accordion-body"> - <strong>هذا هو محتوى عنصر المطوية الأول.</strong> سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootsrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. + <strong>هذا هو محتوى عنصر المطوية الأول.</strong> سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootstrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. </div> </div> </div> @@ -629,7 +633,7 @@ direction: rtl </h4> <div id="collapseTwo" class="accordion-collapse collapse" aria-labelledby="headingTwo" data-bs-parent="#accordionExample"> <div class="accordion-body"> - <strong>هذا هو محتوى عنصر المطوية الثاني.</strong> سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootsrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. + <strong>هذا هو محتوى عنصر المطوية الثاني.</strong> سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootstrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. </div> </div> </div> @@ -641,7 +645,7 @@ direction: rtl </h4> <div id="collapseThree" class="accordion-collapse collapse" aria-labelledby="headingThree" data-bs-parent="#accordionExample"> <div class="accordion-body"> - <strong>هذا هو محتوى عنصر المطوية الثالث.</strong> سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootsrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. + <strong>هذا هو محتوى عنصر المطوية الثالث.</strong> سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootstrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. </div> </div> </div> @@ -688,16 +692,16 @@ direction: rtl <p class="h2">مثال على عنوان <span class="badge bg-secondary">جديد</span></p> <p class="h3">مثال على عنوان <span class="badge bg-success">جديد</span></p> <p class="h4">مثال على عنوان <span class="badge bg-danger">جديد</span></p> - <p class="h5">مثال على عنوان <span class="badge bg-warning text-dark">جديد</span></p> - <p class="h6">مثال على عنوان <span class="badge bg-info text-dark">جديد</span></p> - <p class="h6">مثال على عنوان <span class="badge bg-light text-dark">جديد</span></p> + <p class="h5">مثال على عنوان <span class="badge text-bg-warning">جديد</span></p> + <p class="h6">مثال على عنوان <span class="badge text-bg-info">جديد</span></p> + <p class="h6">مثال على عنوان <span class="badge text-bg-light">جديد</span></p> <p class="h6">مثال على عنوان <span class="badge bg-dark">جديد</span></p> {{< /example >}} {{< example show_markup="false" >}} {{< badge.inline >}} {{- range (index $.Site.Data "theme-colors") }} - <span class="badge rounded-pill bg-{{ .name }}{{ if or (eq .name "light") (eq .name "warning") (eq .name "info") }} text-dark{{ end }}">{{ .name | title }}</span>{{- end -}} + <span class="badge rounded-pill {{ if or (eq .name "light") (eq .name "warning") (eq .name "info") }}text-{{ end }}bg-{{ .name }}">{{ .name | title }}</span>{{- end -}} {{< /badge.inline >}} {{< /example >}} </div> @@ -909,10 +913,10 @@ direction: rtl {{< example show_markup="false" >}} <div class="btn-group w-100 align-items-center justify-content-between flex-wrap"> <div class="dropdown"> - <button class="btn btn-secondary btn-sm dropdown-toggle" type="button" id="dropdownMenuButtonSM" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> زر القائمة المنسدلة </button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuButtonSM"> + <ul class="dropdown-menu"> <li><h6 class="dropdown-header">عنوان القائمة المنسدلة</h6></li> <li><a class="dropdown-item" href="#">عمل</a></li> <li><a class="dropdown-item" href="#">عمل آخر</a></li> @@ -922,10 +926,10 @@ direction: rtl </ul> </div> <div class="dropdown"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> زر القائمة المنسدلة </button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton"> + <ul class="dropdown-menu"> <li><h6 class="dropdown-header">عنوان القائمة المنسدلة</h6></li> <li><a class="dropdown-item" href="#">عمل</a></li> <li><a class="dropdown-item" href="#">عمل آخر</a></li> @@ -935,10 +939,10 @@ direction: rtl </ul> </div> <div class="dropdown"> - <button class="btn btn-secondary btn-lg dropdown-toggle" type="button" id="dropdownMenuButtonLG" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary btn-lg dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> زر القائمة المنسدلة </button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuButtonLG"> + <ul class="dropdown-menu"> <li><h6 class="dropdown-header">عنوان القائمة المنسدلة</h6></li> <li><a class="dropdown-item" href="#">عمل</a></li> <li><a class="dropdown-item" href="#">عمل آخر</a></li> @@ -1022,10 +1026,10 @@ direction: rtl {{< example show_markup="false" >}} <div class="btn-group w-100 align-items-center justify-content-between flex-wrap"> <div class="dropend"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropendMenuButton" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> زر القائمة المنسدلة لليسار </button> - <ul class="dropdown-menu" aria-labelledby="dropendMenuButton"> + <ul class="dropdown-menu"> <li><h6 class="dropdown-header">عنوان القائمة المنسدلة</h6></li> <li><a class="dropdown-item" href="#">عمل</a></li> <li><a class="dropdown-item" href="#">عمل آخر</a></li> @@ -1035,10 +1039,10 @@ direction: rtl </ul> </div> <div class="dropup"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropupMenuButton" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> زر القائمة المنسدلة للأعلى </button> - <ul class="dropdown-menu" aria-labelledby="dropupMenuButton"> + <ul class="dropdown-menu"> <li><h6 class="dropdown-header">عنوان القائمة المنسدلة</h6></li> <li><a class="dropdown-item" href="#">عمل</a></li> <li><a class="dropdown-item" href="#">عمل آخر</a></li> @@ -1048,10 +1052,10 @@ direction: rtl </ul> </div> <div class="dropstart"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropstartMenuButton" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> زر القائمة المنسدلة لليمين </button> - <ul class="dropdown-menu" aria-labelledby="dropstartMenuButton"> + <ul class="dropdown-menu"> <li><h6 class="dropdown-header">عنوان القائمة المنسدلة</h6></li> <li><a class="dropdown-item" href="#">عمل</a></li> <li><a class="dropdown-item" href="#">عمل آخر</a></li> @@ -1066,10 +1070,10 @@ direction: rtl {{< example show_markup="false" >}} <div class="btn-group"> <div class="dropdown"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownRightMenuButton" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> قائمة منسدلة بمحاذاة نهاية الزر </button> - <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="dropdownRightMenuButton"> + <ul class="dropdown-menu dropdown-menu-end"> <li><h6 class="dropdown-header">عنوان القائمة المنسدلة</h6></li> <li><a class="dropdown-item" href="#">عمل</a></li> <li><a class="dropdown-item" href="#">عمل آخر</a></li> @@ -1208,7 +1212,7 @@ direction: rtl <div> {{< example show_markup="false" >}} - <nav class="navbar navbar-expand-lg navbar-light bg-light"> + <nav class="navbar navbar-expand-lg bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#"> <img src="/docs/{{< param docs_version >}}/assets/brand/bootstrap-logo-white.svg" width="38" height="30" class="d-inline-block align-top" alt="Bootstrap" loading="lazy" @@ -1226,10 +1230,10 @@ direction: rtl <a class="nav-link" href="#">رابط</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> + <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> قائمة منسدلة </a> - <ul class="dropdown-menu" aria-labelledby="navbarDropdown"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">عمل</a></li> <li><a class="dropdown-item" href="#">عمل آخر</a></li> <li><hr class="dropdown-divider"></li> @@ -1240,7 +1244,7 @@ direction: rtl <a class="nav-link disabled">معطل</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="بحث" aria-label="بحث"> <button class="btn btn-outline-dark" type="submit">بحث</button> </form> @@ -1265,10 +1269,10 @@ direction: rtl <a class="nav-link" href="#">رابط</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown2" role="button" data-bs-toggle="dropdown" aria-expanded="false"> + <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> قائمة منسدلة </a> - <ul class="dropdown-menu" aria-labelledby="navbarDropdown2"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">عمل</a></li> <li><a class="dropdown-item" href="#">عمل آخر</a></li> <li><hr class="dropdown-divider"></li> @@ -1279,7 +1283,7 @@ direction: rtl <a class="nav-link disabled">معطل</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="بحث" aria-label="بحث"> <button class="btn btn-outline-light" type="submit">بحث</button> </form> @@ -1385,26 +1389,26 @@ direction: rtl <div> {{< example show_markup="false" >}} <div class="progress mb-3"> - <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">0%</div> + <div class="progress-bar" role="progressbar" aria-label="مثال مع عنوان" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">0%</div> </div> <div class="progress mb-3"> - <div class="progress-bar bg-success w-25" role="progressbar" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">25%</div> + <div class="progress-bar bg-success w-25" role="progressbar" aria-label="مثال ناجح مع عنوان" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">25%</div> </div> <div class="progress mb-3"> - <div class="progress-bar bg-info text-dark w-50" role="progressbar" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">50%</div> + <div class="progress-bar text-bg-info w-50" role="progressbar" aria-label="مثال توضيح مع عنوان" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">50%</div> </div> <div class="progress mb-3"> - <div class="progress-bar bg-warning text-dark w-75" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">75%</div> + <div class="progress-bar text-bg-warning w-75" role="progressbar" aria-label="مثال تنبيه مع عنوان" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">75%</div> </div> <div class="progress"> - <div class="progress-bar bg-danger w-100" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">100%</div> + <div class="progress-bar bg-danger w-100" role="progressbar" aria-label="مثال خطر مع عنوان" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">100%</div> </div> {{< /example >}} {{< example show_markup="false" >}} <div class="progress"> - <div class="progress-bar" role="progressbar" style="width: 15%" aria-valuenow="15" aria-valuemin="0" aria-valuemax="100"></div> - <div class="progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar" style="width: 40%" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100"></div> + <div class="progress-bar" role="progressbar" aria-label="القسم الأول - مثال افتراضي" style="width: 15%" aria-valuenow="15" aria-valuemin="0" aria-valuemax="100"></div> + <div class="progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar" aria-label="القسم الثاني - مثال ناجح مقلّم متحرك" style="width: 40%" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100"></div> </div> {{< /example >}} </div> @@ -1417,7 +1421,7 @@ direction: rtl <div> <div class="bd-example"> - <nav id="navbar-example2" class="navbar navbar-light bg-light px-3"> + <nav id="navbar-example2" class="navbar bg-light px-3"> <a class="navbar-brand" href="#">شريط التنقل</a> <ul class="nav nav-pills"> <li class="nav-item"> @@ -1437,7 +1441,7 @@ direction: rtl </li> </ul> </nav> - <div data-bs-spy="scroll" data-bs-target="#navbar-example2" data-bs-offset="0" class="scrollspy-example"> + <div data-bs-spy="scroll" data-bs-target="#navbar-example2" data-bs-offset="0" class="scrollspy-example position-relative mt-2 overflow-auto"> <h4 id="fat"><bdi lang="en" dir="ltr">@fat</bdi></h4> <p>محتوى لتوضيح كيف تعمل المخطوطة. ببساطة، المخطوطة عبارة عن منشور طويل يحتوي على عدة أقسام، ولديه شريط تنقل يسهل الوصول إلى هذه الأقسام الفرعية.</p> <h4 id="mdo"><bdi lang="en" dir="ltr">@mdo</bdi></h4> @@ -1497,7 +1501,7 @@ direction: rtl <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="قريب"></button> </div> <div class="toast-body"> - مرحبا بالعالم! هذه رسالة إشعار. + مرحبًا بالعالم! هذه رسالة إشعار. </div> </div> {{< /example >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/cheatsheet/cheatsheet.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/cheatsheet/cheatsheet.css index 77aa0f23c..e2f99b859 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/cheatsheet/cheatsheet.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/cheatsheet/cheatsheet.css @@ -27,7 +27,6 @@ body { margin-top: .125rem; margin-left: .3125rem; color: rgba(0, 0, 0, .65); - text-decoration: none; } .bd-aside a:hover, @@ -45,7 +44,6 @@ body { padding: .25rem .5rem; font-weight: 600; color: rgba(0, 0, 0, .65); - border: 0; } .bd-aside .btn:hover, @@ -77,10 +75,7 @@ body { /* Examples */ .scrollspy-example { - position: relative; height: 200px; - margin-top: .5rem; - overflow: auto; } [id="modal"] .bd-example .btn, @@ -99,9 +94,9 @@ body { @media (min-width: 1200px) { body { display: grid; - gap: 1rem; - grid-template-columns: 1fr 4fr 1fr; grid-template-rows: auto; + grid-template-columns: 1fr 4fr 1fr; + gap: 1rem; } .bd-header { @@ -127,10 +122,10 @@ body { .bd-cheatsheet section, .bd-cheatsheet article { display: inherit; /* 1 */ - gap: inherit; /* 1 */ + grid-template-rows: auto; grid-template-columns: 1fr 4fr; grid-column: 1 / span 2; - grid-template-rows: auto; + gap: inherit; /* 1 */ } .bd-aside { diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/cheatsheet/cheatsheet.js b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/cheatsheet/cheatsheet.js index 0a50258b9..e25a89e75 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/cheatsheet/cheatsheet.js +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/cheatsheet/cheatsheet.js @@ -1,24 +1,24 @@ /* global bootstrap: false */ -(function () { +(() => { 'use strict' // Tooltip and popover demos document.querySelectorAll('.tooltip-demo') - .forEach(function (tooltip) { + .forEach(tooltip => { new bootstrap.Tooltip(tooltip, { selector: '[data-bs-toggle="tooltip"]' }) }) document.querySelectorAll('[data-bs-toggle="popover"]') - .forEach(function (popover) { + .forEach(popover => { new bootstrap.Popover(popover) }) document.querySelectorAll('.toast') - .forEach(function (toastNode) { - var toast = new bootstrap.Toast(toastNode, { + .forEach(toastNode => { + const toast = new bootstrap.Toast(toastNode, { autohide: false }) @@ -27,27 +27,27 @@ // Disable empty links and submit buttons document.querySelectorAll('[href="#"], [type="submit"]') - .forEach(function (link) { - link.addEventListener('click', function (event) { + .forEach(link => { + link.addEventListener('click', event => { event.preventDefault() }) }) function setActiveItem() { - var hash = window.location.hash + const { hash } = window.location if (hash === '') { return } - var link = document.querySelector('.bd-aside a[href="' + hash + '"]') + const link = document.querySelector(`.bd-aside a[href="${hash}"]`) if (!link) { return } - var active = document.querySelector('.bd-aside .active') - var parent = link.parentNode.parentNode.previousElementSibling + const active = document.querySelector('.bd-aside .active') + const parent = link.parentNode.parentNode.previousElementSibling link.classList.add('active') @@ -59,7 +59,7 @@ return } - var expanded = active.parentNode.parentNode.previousElementSibling + const expanded = active.parentNode.parentNode.previousElementSibling active.classList.remove('active') diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/cheatsheet/cheatsheet.rtl.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/cheatsheet/cheatsheet.rtl.css index c1a4a1ccc..e04d84871 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/cheatsheet/cheatsheet.rtl.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/cheatsheet/cheatsheet.rtl.css @@ -27,7 +27,6 @@ body { margin-top: .125rem; margin-right: .3125rem; color: rgba(0, 0, 0, .65); - text-decoration: none; } .bd-aside a:hover, @@ -45,7 +44,6 @@ body { padding: .25rem .5rem; font-weight: 600; color: rgba(0, 0, 0, .65); - border: 0; } .bd-aside .btn:hover, @@ -74,10 +72,7 @@ body { /* Examples */ .scrollspy-example { - position: relative; height: 200px; - margin-top: .5rem; - overflow: auto; } [id="modal"] .bd-example .btn, @@ -96,9 +91,9 @@ body { @media (min-width: 1200px) { body { display: grid; - gap: 1rem; - grid-template-columns: 1fr 4fr 1fr; grid-template-rows: auto; + grid-template-columns: 1fr 4fr 1fr; + gap: 1rem; } .bd-header { @@ -122,10 +117,10 @@ body { .bd-cheatsheet section, .bd-cheatsheet article { display: inherit; /* 1 */ - gap: inherit; /* 1 */ + grid-template-rows: auto; grid-template-columns: 1fr 4fr; grid-column: 1 / span 2; - grid-template-rows: auto; + gap: inherit; /* 1 */ } .bd-aside { diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/cheatsheet/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/cheatsheet/index.html index d68e26233..5627f8375 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/cheatsheet/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/cheatsheet/index.html @@ -11,7 +11,7 @@ body_class: "bg-light" <header class="bd-header bg-dark py-3 d-flex align-items-stretch border-bottom border-dark"> <div class="container-fluid d-flex align-items-center"> <h1 class="d-flex align-items-center fs-4 text-white mb-0"> - <img src="/docs/5.1/assets/brand/bootstrap-logo-white.svg" width="38" height="30" class="me-3" alt="Bootstrap"> + <img src="/docs/{{< param docs_version >}}/assets/brand/bootstrap-logo-white.svg" width="38" height="30" class="me-3" alt="Bootstrap"> Cheatsheet </h1> <a href="{{< docsref "/examples/cheatsheet-rtl" >}}" class="ms-auto link-light" hreflang="ar">RTL cheatsheet</a> @@ -22,48 +22,48 @@ body_class: "bg-light" <nav class="small" id="toc"> <ul class="list-unstyled"> <li class="my-2"> - <button class="btn d-inline-flex align-items-center collapsed" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#contents-collapse" aria-controls="contents-collapse">Contents</button> + <button class="btn d-inline-flex align-items-center collapsed border-0" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#contents-collapse" aria-controls="contents-collapse">Contents</button> <ul class="list-unstyled ps-3 collapse" id="contents-collapse"> - <li><a class="d-inline-flex align-items-center rounded" href="#typography">Typography</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#images">Images</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#tables">Tables</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#figures">Figures</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#typography">Typography</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#images">Images</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#tables">Tables</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#figures">Figures</a></li> </ul> </li> <li class="my-2"> - <button class="btn d-inline-flex align-items-center collapsed" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#forms-collapse" aria-controls="forms-collapse">Forms</button> + <button class="btn d-inline-flex align-items-center collapsed border-0" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#forms-collapse" aria-controls="forms-collapse">Forms</button> <ul class="list-unstyled ps-3 collapse" id="forms-collapse"> - <li><a class="d-inline-flex align-items-center rounded" href="#overview">Overview</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#disabled-forms">Disabled forms</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#sizing">Sizing</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#input-group">Input group</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#floating-labels">Floating labels</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#validation">Validation</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#overview">Overview</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#disabled-forms">Disabled forms</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#sizing">Sizing</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#input-group">Input group</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#floating-labels">Floating labels</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#validation">Validation</a></li> </ul> </li> <li class="my-2"> - <button class="btn d-inline-flex align-items-center collapsed" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#components-collapse" aria-controls="components-collapse">Components</button> + <button class="btn d-inline-flex align-items-center collapsed border-0" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#components-collapse" aria-controls="components-collapse">Components</button> <ul class="list-unstyled ps-3 collapse" id="components-collapse"> - <li><a class="d-inline-flex align-items-center rounded" href="#accordion">Accordion</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#alerts">Alerts</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#badge">Badge</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#breadcrumb">Breadcrumb</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#buttons">Buttons</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#button-group">Button group</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#card">Card</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#carousel">Carousel</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#dropdowns">Dropdowns</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#list-group">List group</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#modal">Modal</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#navs">Navs</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#navbar">Navbar</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#pagination">Pagination</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#popovers">Popovers</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#progress">Progress</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#scrollspy">Scrollspy</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#spinners">Spinners</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#toasts">Toasts</a></li> - <li><a class="d-inline-flex align-items-center rounded" href="#tooltips">Tooltips</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#accordion">Accordion</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#alerts">Alerts</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#badge">Badge</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#breadcrumb">Breadcrumb</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#buttons">Buttons</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#button-group">Button group</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#card">Card</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#carousel">Carousel</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#dropdowns">Dropdowns</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#list-group">List group</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#modal">Modal</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#navs">Navs</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#navbar">Navbar</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#pagination">Pagination</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#popovers">Popovers</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#progress">Progress</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#scrollspy">Scrollspy</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#spinners">Spinners</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#toasts">Toasts</a></li> + <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#tooltips">Tooltips</a></li> </ul> </li> </ul> @@ -116,6 +116,10 @@ body_class: "bg-light" {{< /example >}} {{< example show_markup="false" >}} + <hr> + {{< /example >}} + + {{< example show_markup="false" >}} <blockquote class="blockquote"> <p>A well-known quote, contained in a blockquote element.</p> <footer class="blockquote-footer">Someone famous in <cite title="Source Title">Source Title</cite></footer> @@ -687,16 +691,16 @@ body_class: "bg-light" <p class="h2">Example heading <span class="badge bg-secondary">New</span></p> <p class="h3">Example heading <span class="badge bg-success">New</span></p> <p class="h4">Example heading <span class="badge bg-danger">New</span></p> - <p class="h5">Example heading <span class="badge bg-warning text-dark">New</span></p> - <p class="h6">Example heading <span class="badge bg-info text-dark">New</span></p> - <p class="h6">Example heading <span class="badge bg-light text-dark">New</span></p> + <p class="h5">Example heading <span class="badge text-bg-warning">New</span></p> + <p class="h6">Example heading <span class="badge text-bg-info">New</span></p> + <p class="h6">Example heading <span class="badge text-bg-light">New</span></p> <p class="h6">Example heading <span class="badge bg-dark">New</span></p> {{< /example >}} {{< example show_markup="false" >}} {{< badge.inline >}} {{- range (index $.Site.Data "theme-colors") }} - <span class="badge rounded-pill bg-{{ .name }}{{ if or (eq .name "light") (eq .name "warning") (eq .name "info") }} text-dark{{ end }}">{{ .name | title }}</span>{{- end -}} + <span class="badge rounded-pill {{ if or (eq .name "light") (eq .name "warning") (eq .name "info") }}text-{{ end }}bg-{{ .name }}">{{ .name | title }}</span>{{- end -}} {{< /badge.inline >}} {{< /example >}} </div> @@ -908,10 +912,10 @@ body_class: "bg-light" {{< example show_markup="false" >}} <div class="btn-group w-100 align-items-center justify-content-between flex-wrap"> <div class="dropdown"> - <button class="btn btn-secondary btn-sm dropdown-toggle" type="button" id="dropdownMenuButtonSM" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown button </button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuButtonSM"> + <ul class="dropdown-menu"> <li><h6 class="dropdown-header">Dropdown header</h6></li> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> @@ -921,10 +925,10 @@ body_class: "bg-light" </ul> </div> <div class="dropdown"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown button </button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton"> + <ul class="dropdown-menu"> <li><h6 class="dropdown-header">Dropdown header</h6></li> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> @@ -934,10 +938,10 @@ body_class: "bg-light" </ul> </div> <div class="dropdown"> - <button class="btn btn-secondary btn-lg dropdown-toggle" type="button" id="dropdownMenuButtonLG" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary btn-lg dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown button </button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuButtonLG"> + <ul class="dropdown-menu"> <li><h6 class="dropdown-header">Dropdown header</h6></li> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> @@ -1021,10 +1025,10 @@ body_class: "bg-light" {{< example show_markup="false" >}} <div class="btn-group w-100 align-items-center justify-content-between flex-wrap"> <div class="dropend"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropendMenuButton" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropend button </button> - <ul class="dropdown-menu" aria-labelledby="dropendMenuButton"> + <ul class="dropdown-menu"> <li><h6 class="dropdown-header">Dropdown header</h6></li> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> @@ -1034,10 +1038,10 @@ body_class: "bg-light" </ul> </div> <div class="dropup"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropupMenuButton" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropup button </button> - <ul class="dropdown-menu" aria-labelledby="dropupMenuButton"> + <ul class="dropdown-menu"> <li><h6 class="dropdown-header">Dropdown header</h6></li> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> @@ -1047,10 +1051,10 @@ body_class: "bg-light" </ul> </div> <div class="dropstart"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropstartMenuButton" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropstart button </button> - <ul class="dropdown-menu" aria-labelledby="dropstartMenuButton"> + <ul class="dropdown-menu"> <li><h6 class="dropdown-header">Dropdown header</h6></li> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> @@ -1065,10 +1069,10 @@ body_class: "bg-light" {{< example show_markup="false" >}} <div class="btn-group"> <div class="dropdown"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownRightMenuButton" data-bs-toggle="dropdown" aria-expanded="false"> + <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> End-aligned menu </button> - <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="dropdownRightMenuButton"> + <ul class="dropdown-menu dropdown-menu-end"> <li><h6 class="dropdown-header">Dropdown header</h6></li> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> @@ -1170,13 +1174,13 @@ body_class: "bg-light" </nav> <div class="tab-content" id="nav-tabContent"> <div class="tab-pane fade show active" id="nav-home" role="tabpanel" aria-labelledby="nav-home-tab"> - <p><strong>This is some placeholder content the Home tab's associated content.</strong> Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + <p>This is some placeholder content the <strong>Home tab's</strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> </div> <div class="tab-pane fade" id="nav-profile" role="tabpanel" aria-labelledby="nav-profile-tab"> - <p><strong>This is some placeholder content the Profile tab's associated content.</strong> Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + <p>This is some placeholder content the <strong>Profile tab's</strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> </div> <div class="tab-pane fade" id="nav-contact" role="tabpanel" aria-labelledby="nav-contact-tab"> - <p><strong>This is some placeholder content the Contact tab's associated content.</strong> Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> + <p>This is some placeholder content the <strong>Contact tab's</strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other <code>.nav</code>-powered navigation.</p> </div> </div> {{< /example >}} @@ -1207,7 +1211,7 @@ body_class: "bg-light" <div> {{< example show_markup="false" >}} - <nav class="navbar navbar-expand-lg navbar-light bg-light"> + <nav class="navbar navbar-expand-lg bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#"> <img src="/docs/{{< param docs_version >}}/assets/brand/bootstrap-logo-white.svg" width="38" height="30" class="d-inline-block align-top" alt="Bootstrap" loading="lazy" @@ -1225,10 +1229,10 @@ body_class: "bg-light" <a class="nav-link" href="#">Link</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> + <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown </a> - <ul class="dropdown-menu" aria-labelledby="navbarDropdown"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><hr class="dropdown-divider"></li> @@ -1239,7 +1243,7 @@ body_class: "bg-light" <a class="nav-link disabled">Disabled</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-dark" type="submit">Search</button> </form> @@ -1264,10 +1268,10 @@ body_class: "bg-light" <a class="nav-link" href="#">Link</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown2" role="button" data-bs-toggle="dropdown" aria-expanded="false"> + <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown </a> - <ul class="dropdown-menu" aria-labelledby="navbarDropdown2"> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><hr class="dropdown-divider"></li> @@ -1278,7 +1282,7 @@ body_class: "bg-light" <a class="nav-link disabled">Disabled</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-light" type="submit">Search</button> </form> @@ -1382,26 +1386,26 @@ body_class: "bg-light" <div> {{< example show_markup="false" >}} <div class="progress mb-3"> - <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">0%</div> + <div class="progress-bar" role="progressbar" aria-label="Example with label" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">0%</div> </div> <div class="progress mb-3"> - <div class="progress-bar bg-success w-25" role="progressbar" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">25%</div> + <div class="progress-bar bg-success w-25" role="progressbar" aria-label="Success example with label" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">25%</div> </div> <div class="progress mb-3"> - <div class="progress-bar bg-info text-dark w-50" role="progressbar" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">50%</div> + <div class="progress-bar text-bg-info w-50" role="progressbar" aria-label="Info example with label" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">50%</div> </div> <div class="progress mb-3"> - <div class="progress-bar bg-warning text-dark w-75" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">75%</div> + <div class="progress-bar text-bg-warning w-75" role="progressbar" aria-label="Warning example with label" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">75%</div> </div> <div class="progress"> - <div class="progress-bar bg-danger w-100" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">100%</div> + <div class="progress-bar bg-danger w-100" role="progressbar" aria-label="Danger example with label" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">100%</div> </div> {{< /example >}} {{< example show_markup="false" >}} <div class="progress"> - <div class="progress-bar" role="progressbar" style="width: 15%" aria-valuenow="15" aria-valuemin="0" aria-valuemax="100"></div> - <div class="progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar" style="width: 40%" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100"></div> + <div class="progress-bar" role="progressbar" aria-label="Segment one - default example" style="width: 15%" aria-valuenow="15" aria-valuemin="0" aria-valuemax="100"></div> + <div class="progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar" aria-label="Segment two - animated striped success example" style="width: 40%" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100"></div> </div> {{< /example >}} </div> @@ -1414,7 +1418,7 @@ body_class: "bg-light" <div> <div class="bd-example"> - <nav id="navbar-example2" class="navbar navbar-light bg-light px-3"> + <nav id="navbar-example2" class="navbar bg-light px-3"> <a class="navbar-brand" href="#">Navbar</a> <ul class="nav nav-pills"> <li class="nav-item"> @@ -1434,7 +1438,7 @@ body_class: "bg-light" </li> </ul> </nav> - <div data-bs-spy="scroll" data-bs-target="#navbar-example2" data-bs-offset="0" class="scrollspy-example" tabindex="0"> + <div data-bs-spy="scroll" data-bs-target="#navbar-example2" data-bs-offset="0" class="scrollspy-example position-relative mt-2 overflow-auto" tabindex="0"> <h4 id="scrollspyHeading1">First heading</h4> <p>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.</p> <h4 id="scrollspyHeading2">Second heading</h4> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/checkout-rtl/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/checkout-rtl/index.html index e0ca621b1..e0ca621b1 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/checkout-rtl/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/checkout-rtl/index.html diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/checkout/form-validation.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/checkout/form-validation.css index e5ea31c40..e5ea31c40 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/checkout/form-validation.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/checkout/form-validation.css diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/examples/checkout/form-validation.js b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/checkout/form-validation.js new file mode 100644 index 000000000..30ea0aa6b --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/checkout/form-validation.js @@ -0,0 +1,19 @@ +// Example starter JavaScript for disabling form submissions if there are invalid fields +(() => { + 'use strict' + + // Fetch all the forms we want to apply custom Bootstrap validation styles to + const forms = document.querySelectorAll('.needs-validation') + + // Loop over them and prevent submission + Array.from(forms).forEach(form => { + form.addEventListener('submit', event => { + if (!form.checkValidity()) { + event.preventDefault() + event.stopPropagation() + } + + form.classList.add('was-validated') + }, false) + }) +})() diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/checkout/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/checkout/index.html index 4809dc4bb..4809dc4bb 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/checkout/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/checkout/index.html diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/cover/cover.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/cover/cover.css index 87afc3be9..1b1c5407b 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/cover/cover.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/cover/cover.css @@ -31,10 +31,7 @@ body { */ .nav-masthead .nav-link { - padding: .25rem 0; - font-weight: 700; color: rgba(255, 255, 255, .5); - background-color: transparent; border-bottom: .25rem solid transparent; } diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/cover/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/cover/index.html index 10362083e..34dc1c2b6 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/cover/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/cover/index.html @@ -4,7 +4,7 @@ title: Cover Template extra_css: - "cover.css" html_class: "h-100" -body_class: "d-flex h-100 text-center text-white bg-dark" +body_class: "d-flex h-100 text-center text-bg-dark" include_js: false --- @@ -13,9 +13,9 @@ include_js: false <div> <h3 class="float-md-start mb-0">Cover</h3> <nav class="nav nav-masthead justify-content-center float-md-end"> - <a class="nav-link active" aria-current="page" href="#">Home</a> - <a class="nav-link" href="#">Features</a> - <a class="nav-link" href="#">Contact</a> + <a class="nav-link fw-bold py-1 px-0 active" aria-current="page" href="#">Home</a> + <a class="nav-link fw-bold py-1 px-0" href="#">Features</a> + <a class="nav-link fw-bold py-1 px-0" href="#">Contact</a> </nav> </div> </header> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard-rtl/dashboard.js b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard-rtl/dashboard.js index 7831fa9d0..96e0895bf 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard-rtl/dashboard.js +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard-rtl/dashboard.js @@ -1,14 +1,14 @@ /* globals Chart:false, feather:false */ -(function () { +(() => { 'use strict' feather.replace({ 'aria-hidden': 'true' }) // Graphs - var ctx = document.getElementById('myChart') + const ctx = document.getElementById('myChart') // eslint-disable-next-line no-unused-vars - var myChart = new Chart(ctx, { + const myChart = new Chart(ctx, { type: 'line', data: { labels: [ diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard-rtl/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard-rtl/index.html index 19db4f3b4..bc41cc604 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard-rtl/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard-rtl/index.html @@ -13,11 +13,11 @@ extra_js: --- <header class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow"> - <a class="navbar-brand col-md-3 col-lg-2 me-0 px-3" href="#">اسم الشركة</a> + <a class="navbar-brand col-md-3 col-lg-2 me-0 px-3 fs-6" href="#">اسم الشركة</a> <button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#sidebarMenu" aria-controls="sidebarMenu" aria-expanded="false" aria-label="عرض/إخفاء لوحة التنقل"> <span class="navbar-toggler-icon"></span> </button> - <input class="form-control form-control-dark w-100" type="text" placeholder="بحث" aria-label="بحث"> + <input class="form-control form-control-dark w-100 rounded-0 border-0" type="text" placeholder="بحث" aria-label="بحث"> <div class="navbar-nav"> <div class="nav-item text-nowrap"> <a class="nav-link px-3" href="#">تسجيل الخروج</a> @@ -28,74 +28,74 @@ extra_js: <div class="container-fluid"> <div class="row"> <nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-light sidebar collapse"> - <div class="position-sticky pt-3"> + <div class="position-sticky pt-3 sidebar-sticky"> <ul class="nav flex-column"> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#"> - <span data-feather="home"></span> + <span data-feather="home" class="align-text-bottom"></span> لوحة القيادة </a> </li> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="file"></span> + <span data-feather="file" class="align-text-bottom"></span> الطلبات </a> </li> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="shopping-cart"></span> + <span data-feather="shopping-cart" class="align-text-bottom"></span> المنتجات </a> </li> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="users"></span> + <span data-feather="users" class="align-text-bottom"></span> الزبائن </a> </li> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="bar-chart-2"></span> + <span data-feather="bar-chart-2" class="align-text-bottom"></span> التقارير </a> </li> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="layers"></span> + <span data-feather="layers" class="align-text-bottom"></span> التكاملات </a> </li> </ul> - <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted"> + <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted text-uppercase"> <span>التقارير المحفوظة</span> <a class="link-secondary" href="#" aria-label="إضافة تقرير جديد"> - <span data-feather="plus-circle"></span> + <span data-feather="plus-circle" class="align-text-bottom"></span> </a> </h6> <ul class="nav flex-column mb-2"> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="file-text"></span> + <span data-feather="file-text" class="align-text-bottom"></span> الشهر الحالي </a> </li> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="file-text"></span> + <span data-feather="file-text" class="align-text-bottom"></span> الربع الأخير </a> </li> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="file-text"></span> + <span data-feather="file-text" class="align-text-bottom"></span> التفاعل الإجتماعي </a> </li> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="file-text"></span> + <span data-feather="file-text" class="align-text-bottom"></span> مبيعات نهاية العام </a> </li> @@ -112,7 +112,7 @@ extra_js: <button type="button" class="btn btn-sm btn-outline-secondary">تصدير</button> </div> <button type="button" class="btn btn-sm btn-outline-secondary dropdown-toggle"> - <span data-feather="calendar"></span> + <span data-feather="calendar" class="align-text-bottom"></span> هذا الأسبوع </button> </div> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard/dashboard.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard/dashboard.css index e1099fbb3..ad12048e7 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard/dashboard.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard/dashboard.css @@ -5,7 +5,6 @@ body { .feather { width: 16px; height: 16px; - vertical-align: text-bottom; } /* @@ -33,10 +32,7 @@ body { } .sidebar-sticky { - position: relative; - top: 0; height: calc(100vh - 48px); - padding-top: .5rem; overflow-x: hidden; overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */ } @@ -62,7 +58,6 @@ body { .sidebar-heading { font-size: .75rem; - text-transform: uppercase; } /* @@ -72,7 +67,6 @@ body { .navbar-brand { padding-top: .75rem; padding-bottom: .75rem; - font-size: 1rem; background-color: rgba(0, 0, 0, .25); box-shadow: inset -1px 0 0 rgba(0, 0, 0, .25); } @@ -84,8 +78,6 @@ body { .navbar .form-control { padding: .75rem 1rem; - border-width: 0; - border-radius: 0; } .form-control-dark { diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard/dashboard.js b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard/dashboard.js index 7c2402ae2..e1379758b 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard/dashboard.js +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard/dashboard.js @@ -1,14 +1,14 @@ /* globals Chart:false, feather:false */ -(function () { +(() => { 'use strict' feather.replace({ 'aria-hidden': 'true' }) // Graphs - var ctx = document.getElementById('myChart') + const ctx = document.getElementById('myChart') // eslint-disable-next-line no-unused-vars - var myChart = new Chart(ctx, { + const myChart = new Chart(ctx, { type: 'line', data: { labels: [ diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard/dashboard.rtl.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard/dashboard.rtl.css index a88226ecf..31ea3cc64 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard/dashboard.rtl.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard/dashboard.rtl.css @@ -5,7 +5,6 @@ body { .feather { width: 16px; height: 16px; - vertical-align: text-bottom; } /* @@ -29,10 +28,7 @@ body { } .sidebar-sticky { - position: relative; - top: 0; height: calc(100vh - 48px); - padding-top: .5rem; overflow-x: hidden; overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */ } @@ -58,7 +54,6 @@ body { .sidebar-heading { font-size: .75rem; - text-transform: uppercase; } /* @@ -68,7 +63,6 @@ body { .navbar-brand { padding-top: .75rem; padding-bottom: .75rem; - font-size: 1rem; background-color: rgba(0, 0, 0, .25); box-shadow: inset 1px 0 0 rgba(0, 0, 0, .25); } @@ -80,8 +74,6 @@ body { .navbar .form-control { padding: .75rem 1rem; - border-width: 0; - border-radius: 0; } .form-control-dark { diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard/index.html index 04c187dbc..b3b40c266 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/dashboard/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/dashboard/index.html @@ -12,11 +12,11 @@ extra_js: --- <header class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow"> - <a class="navbar-brand col-md-3 col-lg-2 me-0 px-3" href="#">Company name</a> + <a class="navbar-brand col-md-3 col-lg-2 me-0 px-3 fs-6" href="#">Company name</a> <button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#sidebarMenu" aria-controls="sidebarMenu" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> - <input class="form-control form-control-dark w-100" type="text" placeholder="Search" aria-label="Search"> + <input class="form-control form-control-dark w-100 rounded-0 border-0" type="text" placeholder="Search" aria-label="Search"> <div class="navbar-nav"> <div class="nav-item text-nowrap"> <a class="nav-link px-3" href="#">Sign out</a> @@ -27,74 +27,74 @@ extra_js: <div class="container-fluid"> <div class="row"> <nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-light sidebar collapse"> - <div class="position-sticky pt-3"> + <div class="position-sticky pt-3 sidebar-sticky"> <ul class="nav flex-column"> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#"> - <span data-feather="home"></span> + <span data-feather="home" class="align-text-bottom"></span> Dashboard </a> </li> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="file"></span> + <span data-feather="file" class="align-text-bottom"></span> Orders </a> </li> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="shopping-cart"></span> + <span data-feather="shopping-cart" class="align-text-bottom"></span> Products </a> </li> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="users"></span> + <span data-feather="users" class="align-text-bottom"></span> Customers </a> </li> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="bar-chart-2"></span> + <span data-feather="bar-chart-2" class="align-text-bottom"></span> Reports </a> </li> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="layers"></span> + <span data-feather="layers" class="align-text-bottom"></span> Integrations </a> </li> </ul> - <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted"> + <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted text-uppercase"> <span>Saved reports</span> <a class="link-secondary" href="#" aria-label="Add a new report"> - <span data-feather="plus-circle"></span> + <span data-feather="plus-circle" class="align-text-bottom"></span> </a> </h6> <ul class="nav flex-column mb-2"> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="file-text"></span> + <span data-feather="file-text" class="align-text-bottom"></span> Current month </a> </li> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="file-text"></span> + <span data-feather="file-text" class="align-text-bottom"></span> Last quarter </a> </li> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="file-text"></span> + <span data-feather="file-text" class="align-text-bottom"></span> Social engagement </a> </li> <li class="nav-item"> <a class="nav-link" href="#"> - <span data-feather="file-text"></span> + <span data-feather="file-text" class="align-text-bottom"></span> Year-end sale </a> </li> @@ -111,7 +111,7 @@ extra_js: <button type="button" class="btn btn-sm btn-outline-secondary">Export</button> </div> <button type="button" class="btn btn-sm btn-outline-secondary dropdown-toggle"> - <span data-feather="calendar"></span> + <span data-feather="calendar" class="align-text-bottom"></span> This week </button> </div> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/dropdowns/dropdowns.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/dropdowns/dropdowns.css index 4341c59ea..556f310a9 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/dropdowns/dropdowns.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/dropdowns/dropdowns.css @@ -1,33 +1,7 @@ -.b-example-divider { - height: 3rem; - background-color: rgba(0, 0, 0, .1); - border: solid rgba(0, 0, 0, .15); - border-width: 1px 0; - box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); -} - -.bi { - vertical-align: -.125em; - fill: currentColor; -} - .dropdown-menu { - position: static; - display: block; - width: auto; margin: 4rem auto; } -.dropdown-menu-macos { - display: grid; - gap: .25rem; - padding: .5rem; - border-radius: .5rem; -} -.dropdown-menu-macos .dropdown-item { - border-radius: .25rem; -} - .dropdown-item-danger { color: var(--bs-red); } @@ -41,9 +15,7 @@ } .btn-hover-light { - text-align: left; background-color: var(--bs-white); - border-radius: .25rem; } .btn-hover-light:hover, .btn-hover-light:focus { @@ -80,6 +52,7 @@ background-color: rgba(0, 0, 0, .05); } .cal-btn[disabled] { + border: 0; opacity: .5; } @@ -87,3 +60,20 @@ background-color: rgba(255, 255, 255, .05); border-color: rgba(255, 255, 255, .15); } + + +.w-220px { + width: 220px; +} + +.w-280px { + width: 280px; +} + +.w-340px { + width: 340px; +} + +.w-600px { + width: 600px; +} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/dropdowns/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/dropdowns/index.html index 5296d1507..f08f69701 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/dropdowns/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/dropdowns/index.html @@ -80,70 +80,69 @@ body_class: "" </symbol> </svg> -<div class="d-flex gap-5 justify-content-center" id="dropdownMacos"> - <ul class="dropdown-menu dropdown-menu-macos mx-0 shadow" style="width: 220px;"> - <li><a class="dropdown-item active" href="#">Action</a></li> - <li><a class="dropdown-item" href="#">Another action</a></li> - <li><a class="dropdown-item" href="#">Something else here</a></li> +<div class="d-flex gap-5 justify-content-center"> + <ul class="dropdown-menu position-static d-grid gap-1 p-2 rounded-3 mx-0 shadow w-220px"> + <li><a class="dropdown-item rounded-2 active" href="#">Action</a></li> + <li><a class="dropdown-item rounded-2" href="#">Another action</a></li> + <li><a class="dropdown-item rounded-2" href="#">Something else here</a></li> <li><hr class="dropdown-divider"></li> - <li><a class="dropdown-item" href="#">Separated link</a></li> + <li><a class="dropdown-item rounded-2" href="#">Separated link</a></li> </ul> - <ul class="dropdown-menu dropdown-menu-dark dropdown-menu-macos mx-0 border-0 shadow" style="width: 220px;"> - <li><a class="dropdown-item active" href="#">Action</a></li> - <li><a class="dropdown-item" href="#">Another action</a></li> - <li><a class="dropdown-item" href="#">Something else here</a></li> + <ul class="dropdown-menu dropdown-menu-dark position-static d-grid gap-1 p-2 rounded-3 mx-0 border-0 shadow w-220px"> + <li><a class="dropdown-item rounded-2 active" href="#">Action</a></li> + <li><a class="dropdown-item rounded-2" href="#">Another action</a></li> + <li><a class="dropdown-item rounded-2" href="#">Something else here</a></li> <li><hr class="dropdown-divider"></li> - <li><a class="dropdown-item" href="#">Separated link</a></li> + <li><a class="dropdown-item rounded-2" href="#">Separated link</a></li> </ul> </div> <div class="b-example-divider"></div> - -<div class="d-flex gap-5 justify-content-center" id="dropdownFilter"> - <div class="dropdown-menu pt-0 mx-0 rounded-3 shadow overflow-hidden" style="width: 280px;"> +<div class="d-flex gap-5 justify-content-center"> + <div class="dropdown-menu d-block position-static pt-0 mx-0 rounded-3 shadow overflow-hidden w-280px"> <form class="p-2 mb-2 bg-light border-bottom"> <input type="search" class="form-control" autocomplete="false" placeholder="Type to filter..."> </form> <ul class="list-unstyled mb-0"> <li><a class="dropdown-item d-flex align-items-center gap-2 py-2" href="#"> - <span class="d-inline-block bg-success rounded-circle" style="width: .5em; height: .5em;"></span> + <span class="d-inline-block bg-success rounded-circle p-1"></span> Action </a></li> <li><a class="dropdown-item d-flex align-items-center gap-2 py-2" href="#"> - <span class="d-inline-block bg-primary rounded-circle" style="width: .5em; height: .5em;"></span> + <span class="d-inline-block bg-primary rounded-circle p-1"></span> Another action </a></li> <li><a class="dropdown-item d-flex align-items-center gap-2 py-2" href="#"> - <span class="d-inline-block bg-danger rounded-circle" style="width: .5em; height: .5em;"></span> + <span class="d-inline-block bg-danger rounded-circle p-1"></span> Something else here </a></li> <li><a class="dropdown-item d-flex align-items-center gap-2 py-2" href="#"> - <span class="d-inline-block bg-info rounded-circle" style="width: .5em; height: .5em;"></span> + <span class="d-inline-block bg-info rounded-circle p-1"></span> Separated link </a></li> </ul> </div> - <div class="dropdown-menu dropdown-menu-dark border-0 pt-0 mx-0 rounded-3 shadow overflow-hidden" style="width: 280px;"> + <div class="dropdown-menu dropdown-menu-dark d-block position-static border-0 pt-0 mx-0 rounded-3 shadow overflow-hidden w-280px"> <form class="p-2 mb-2 bg-dark border-bottom border-dark"> <input type="search" class="form-control form-control-dark" autocomplete="false" placeholder="Type to filter..."> </form> <ul class="list-unstyled mb-0"> <li><a class="dropdown-item d-flex align-items-center gap-2 py-2" href="#"> - <span class="d-inline-block bg-success rounded-circle" style="width: .5em; height: .5em;"></span> + <span class="d-inline-block bg-success rounded-circle p-1"></span> Action </a></li> <li><a class="dropdown-item d-flex align-items-center gap-2 py-2" href="#"> - <span class="d-inline-block bg-primary rounded-circle" style="width: .5em; height: .5em;"></span> + <span class="d-inline-block bg-primary rounded-circle p-1"></span> Another action </a></li> <li><a class="dropdown-item d-flex align-items-center gap-2 py-2" href="#"> - <span class="d-inline-block bg-danger rounded-circle" style="width: .5em; height: .5em;"></span> + <span class="d-inline-block bg-danger rounded-circle p-1"></span> Something else here </a></li> <li><a class="dropdown-item d-flex align-items-center gap-2 py-2" href="#"> - <span class="d-inline-block bg-info rounded-circle" style="width: .5em; height: .5em;"></span> + <span class="d-inline-block bg-info rounded-circle p-1"></span> Separated link </a></li> </ul> @@ -152,8 +151,8 @@ body_class: "" <div class="b-example-divider"></div> -<div class="d-flex gap-5 justify-content-center" id="dropdownIcons"> - <ul class="dropdown-menu mx-0 shadow" style="width: 220px;"> +<div class="d-flex gap-5 justify-content-center"> + <ul class="dropdown-menu d-block position-static mx-0 shadow w-220px"> <li> <a class="dropdown-item d-flex gap-2 align-items-center" href="#"> <svg class="bi" width="16" height="16"><use xlink:href="#files"/></svg> @@ -192,7 +191,7 @@ body_class: "" </a> </li> </ul> - <ul class="dropdown-menu dropdown-menu-dark mx-0 border-0 shadow" style="width: 220px;"> + <ul class="dropdown-menu dropdown-menu-dark d-block position-static mx-0 border-0 shadow w-220px"> <li> <a class="dropdown-item d-flex gap-2 align-items-center" href="#"> <svg class="bi" width="16" height="16"><use xlink:href="#files"/></svg> @@ -235,7 +234,7 @@ body_class: "" <div class="b-example-divider"></div> -<div class="dropdown-menu p-2 shadow rounded-3" style="width: 340px" id="dropdownCalendar"> +<div class="dropdown-menu d-block position-static p-2 shadow rounded-3 w-340px"> <div class="d-grid gap-1"> <div class="cal"> <div class="cal-month"> @@ -316,16 +315,16 @@ body_class: "" <div class="b-example-divider"></div> -<div class="dropdown-menu d-flex align-items-stretch p-3 rounded-3 shadow-lg" style="width: 600px" id="dropdownMega"> +<div class="dropdown-menu position-static d-flex align-items-stretch p-3 rounded-3 shadow-lg w-600px"> <nav class="d-grid gap-2 col-8"> - <a href="#" class="btn btn-hover-light d-flex align-items-center gap-3 py-2 px-3 lh-sm"> + <a href="#" class="btn btn-hover-light rounded-2 d-flex align-items-center gap-3 py-2 px-3 lh-sm text-start"> <svg class="bi" width="32" height="32"><use xlink:href="#image-fill"/></svg> <div> <strong class="d-block">Features</strong> <small>Take a tour through the product</small> </div> </a> - <a href="#" class="btn btn-hover-light d-flex align-items-center gap-3 py-2 px-3 lh-sm"> + <a href="#" class="btn btn-hover-light rounded-2 d-flex align-items-center gap-3 py-2 px-3 lh-sm text-start"> <svg class="bi" width="32" height="32"><use xlink:href="#question-circle"/></svg> <div> <strong class="d-block">Support</strong> @@ -336,4 +335,4 @@ body_class: "" <div class="col-4"> ... </div> -</div>
\ No newline at end of file +</div> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/examples/features/features.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/features/features.css new file mode 100644 index 000000000..619222364 --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/features/features.css @@ -0,0 +1,31 @@ +.feature-icon { + width: 4rem; + height: 4rem; + border-radius: .75rem; +} + +.icon-link > .bi { + margin-top: .125rem; + margin-left: .125rem; + fill: currentcolor; + transition: transform .25s ease-in-out; +} +.icon-link:hover > .bi { + transform: translate(.25rem); +} + +.icon-square { + width: 3rem; + height: 3rem; + border-radius: .75rem; +} + +.text-shadow-1 { text-shadow: 0 .125rem .25rem rgba(0, 0, 0, .25); } +.text-shadow-2 { text-shadow: 0 .25rem .5rem rgba(0, 0, 0, .25); } +.text-shadow-3 { text-shadow: 0 .5rem 1.5rem rgba(0, 0, 0, .25); } + +.card-cover { + background-repeat: no-repeat; + background-position: center center; + background-size: cover; +} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/features/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/features/index.html index 1e331f00a..07ae5ad3c 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/features/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/features/index.html @@ -71,34 +71,34 @@ body_class: "" <h2 class="pb-2 border-bottom">Columns with icons</h2> <div class="row g-4 py-5 row-cols-1 row-cols-lg-3"> <div class="feature col"> - <div class="feature-icon bg-primary bg-gradient"> + <div class="feature-icon d-inline-flex align-items-center justify-content-center text-bg-primary bg-gradient fs-2 mb-3"> <svg class="bi" width="1em" height="1em"><use xlink:href="#collection"/></svg> </div> <h2>Featured title</h2> <p>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="icon-link"> + <a href="#" class="icon-link d-inline-flex align-items-center"> Call to action <svg class="bi" width="1em" height="1em"><use xlink:href="#chevron-right"/></svg> </a> </div> <div class="feature col"> - <div class="feature-icon bg-primary bg-gradient"> + <div class="feature-icon d-inline-flex align-items-center justify-content-center text-bg-primary bg-gradient fs-2 mb-3"> <svg class="bi" width="1em" height="1em"><use xlink:href="#people-circle"/></svg> </div> <h2>Featured title</h2> <p>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="icon-link"> + <a href="#" class="icon-link d-inline-flex align-items-center"> Call to action <svg class="bi" width="1em" height="1em"><use xlink:href="#chevron-right"/></svg> </a> </div> <div class="feature col"> - <div class="feature-icon bg-primary bg-gradient"> + <div class="feature-icon d-inline-flex align-items-center justify-content-center text-bg-primary bg-gradient fs-2 mb-3"> <svg class="bi" width="1em" height="1em"><use xlink:href="#toggles2"/></svg> </div> <h2>Featured title</h2> <p>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="icon-link"> + <a href="#" class="icon-link d-inline-flex align-items-center"> Call to action <svg class="bi" width="1em" height="1em"><use xlink:href="#chevron-right"/></svg> </a> @@ -112,7 +112,7 @@ body_class: "" <h2 class="pb-2 border-bottom">Hanging icons</h2> <div class="row g-4 py-5 row-cols-1 row-cols-lg-3"> <div class="col d-flex align-items-start"> - <div class="icon-square bg-light text-dark flex-shrink-0 me-3"> + <div class="icon-square text-bg-light d-inline-flex align-items-center justify-content-center fs-4 flex-shrink-0 me-3"> <svg class="bi" width="1em" height="1em"><use xlink:href="#toggles2"/></svg> </div> <div> @@ -124,7 +124,7 @@ body_class: "" </div> </div> <div class="col d-flex align-items-start"> - <div class="icon-square bg-light text-dark flex-shrink-0 me-3"> + <div class="icon-square text-bg-light d-inline-flex align-items-center justify-content-center fs-4 flex-shrink-0 me-3"> <svg class="bi" width="1em" height="1em"><use xlink:href="#cpu-fill"/></svg> </div> <div> @@ -136,7 +136,7 @@ body_class: "" </div> </div> <div class="col d-flex align-items-start"> - <div class="icon-square bg-light text-dark flex-shrink-0 me-3"> + <div class="icon-square text-bg-light d-inline-flex align-items-center justify-content-center fs-4 flex-shrink-0 me-3"> <svg class="bi" width="1em" height="1em"><use xlink:href="#tools"/></svg> </div> <div> @@ -157,7 +157,7 @@ body_class: "" <div class="row row-cols-1 row-cols-lg-3 align-items-stretch g-4 py-5"> <div class="col"> - <div class="card card-cover h-100 overflow-hidden text-white bg-dark rounded-5 shadow-lg" style="background-image: url('unsplash-photo-1.jpg');"> + <div class="card card-cover h-100 overflow-hidden text-bg-dark rounded-4 shadow-lg" style="background-image: url('unsplash-photo-1.jpg');"> <div class="d-flex flex-column h-100 p-5 pb-3 text-white text-shadow-1"> <h2 class="pt-5 mt-5 mb-4 display-6 lh-1 fw-bold">Short title, long jacket</h2> <ul class="d-flex list-unstyled mt-auto"> @@ -178,7 +178,7 @@ body_class: "" </div> <div class="col"> - <div class="card card-cover h-100 overflow-hidden text-white bg-dark rounded-5 shadow-lg" style="background-image: url('unsplash-photo-2.jpg');"> + <div class="card card-cover h-100 overflow-hidden text-bg-dark rounded-4 shadow-lg" style="background-image: url('unsplash-photo-2.jpg');"> <div class="d-flex flex-column h-100 p-5 pb-3 text-white text-shadow-1"> <h2 class="pt-5 mt-5 mb-4 display-6 lh-1 fw-bold">Much longer title that wraps to multiple lines</h2> <ul class="d-flex list-unstyled mt-auto"> @@ -199,7 +199,7 @@ body_class: "" </div> <div class="col"> - <div class="card card-cover h-100 overflow-hidden text-white bg-dark rounded-5 shadow-lg" style="background-image: url('unsplash-photo-3.jpg');"> + <div class="card card-cover h-100 overflow-hidden text-bg-dark rounded-4 shadow-lg" style="background-image: url('unsplash-photo-3.jpg');"> <div class="d-flex flex-column h-100 p-5 pb-3 text-shadow-1"> <h2 class="pt-5 mt-5 mb-4 display-6 lh-1 fw-bold">Another longer title belongs here</h2> <ul class="d-flex list-unstyled mt-auto"> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/features/unsplash-photo-1.jpg b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/features/unsplash-photo-1.jpg Binary files differindex ed2e36a78..ed2e36a78 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/features/unsplash-photo-1.jpg +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/features/unsplash-photo-1.jpg diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/features/unsplash-photo-2.jpg b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/features/unsplash-photo-2.jpg Binary files differindex b66864a00..b66864a00 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/features/unsplash-photo-2.jpg +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/features/unsplash-photo-2.jpg diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/features/unsplash-photo-3.jpg b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/features/unsplash-photo-3.jpg Binary files differindex c411b17ec..c411b17ec 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/features/unsplash-photo-3.jpg +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/features/unsplash-photo-3.jpg diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/footers/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/footers/index.html index b26909574..827c2426a 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/footers/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/footers/index.html @@ -1,8 +1,6 @@ --- layout: examples title: Footers -extra_css: - - "footers.css" body_class: "" --- @@ -48,7 +46,7 @@ body_class: "" <a href="/" class="mb-3 me-2 mb-md-0 text-muted text-decoration-none lh-1"> <svg class="bi" width="30" height="24"><use xlink:href="#bootstrap"/></svg> </a> - <span class="text-muted">© {{< year >}} Company, Inc</span> + <span class="mb-3 mb-md-0 text-muted">© {{< year >}} Company, Inc</span> </div> <ul class="nav col-md-4 justify-content-end list-unstyled d-flex"> @@ -77,19 +75,19 @@ body_class: "" <div class="b-example-divider"></div> <div class="container"> - <footer class="row row-cols-5 py-5 my-5 border-top"> - <div class="col"> + <footer class="row row-cols-1 row-cols-sm-2 row-cols-md-5 py-5 my-5 border-top"> + <div class="col mb-3"> <a href="/" class="d-flex align-items-center mb-3 link-dark text-decoration-none"> <svg class="bi me-2" width="40" height="32"><use xlink:href="#bootstrap"/></svg> </a> <p class="text-muted">© {{< year >}}</p> </div> - <div class="col"> + <div class="col mb-3"> </div> - <div class="col"> + <div class="col mb-3"> <h5>Section</h5> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-muted">Home</a></li> @@ -100,7 +98,7 @@ body_class: "" </ul> </div> - <div class="col"> + <div class="col mb-3"> <h5>Section</h5> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-muted">Home</a></li> @@ -111,7 +109,7 @@ body_class: "" </ul> </div> - <div class="col"> + <div class="col mb-3"> <h5>Section</h5> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-muted">Home</a></li> @@ -130,7 +128,7 @@ body_class: "" <div class="container"> <footer class="py-5"> <div class="row"> - <div class="col-2"> + <div class="col-6 col-md-2 mb-3"> <h5>Section</h5> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-muted">Home</a></li> @@ -141,7 +139,7 @@ body_class: "" </ul> </div> - <div class="col-2"> + <div class="col-6 col-md-2 mb-3"> <h5>Section</h5> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-muted">Home</a></li> @@ -152,7 +150,7 @@ body_class: "" </ul> </div> - <div class="col-2"> + <div class="col-6 col-md-2 mb-3"> <h5>Section</h5> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="#" class="nav-link p-0 text-muted">Home</a></li> @@ -163,11 +161,11 @@ body_class: "" </ul> </div> - <div class="col-4 offset-1"> + <div class="col-md-5 offset-md-1 mb-3"> <form> <h5>Subscribe to our newsletter</h5> - <p>Monthly digest of whats new and exciting from us.</p> - <div class="d-flex w-100 gap-2"> + <p>Monthly digest of what's new and exciting from us.</p> + <div class="d-flex flex-column flex-sm-row w-100 gap-2"> <label for="newsletter1" class="visually-hidden">Email address</label> <input id="newsletter1" type="text" class="form-control" placeholder="Email address"> <button class="btn btn-primary" type="button">Subscribe</button> @@ -176,7 +174,7 @@ body_class: "" </div> </div> - <div class="d-flex justify-content-between py-4 my-4 border-top"> + <div class="d-flex flex-column flex-sm-row justify-content-between py-4 my-4 border-top"> <p>© {{< year >}} Company, Inc. All rights reserved.</p> <ul class="list-unstyled d-flex"> <li class="ms-3"><a class="link-dark" href="#"><svg class="bi" width="24" height="24"><use xlink:href="#twitter"/></svg></a></li> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/grid/grid.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/grid/grid.css index 18e3568b1..18e3568b1 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/grid/grid.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/grid/grid.css diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/grid/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/grid/index.html index f26829b4f..7c4f1d322 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/grid/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/grid/index.html @@ -17,37 +17,37 @@ include_js: false <h2 class="mt-4">Five grid tiers</h2> <p>There are five tiers to the Bootstrap grid system, one for each range of devices we support. Each tier starts at a minimum viewport size and automatically applies to the larger devices unless overridden.</p> - <div class="row mb-3"> + <div class="row mb-3 text-center"> <div class="col-4 themed-grid-col">.col-4</div> <div class="col-4 themed-grid-col">.col-4</div> <div class="col-4 themed-grid-col">.col-4</div> </div> - <div class="row mb-3"> + <div class="row mb-3 text-center"> <div class="col-sm-4 themed-grid-col">.col-sm-4</div> <div class="col-sm-4 themed-grid-col">.col-sm-4</div> <div class="col-sm-4 themed-grid-col">.col-sm-4</div> </div> - <div class="row mb-3"> + <div class="row mb-3 text-center"> <div class="col-md-4 themed-grid-col">.col-md-4</div> <div class="col-md-4 themed-grid-col">.col-md-4</div> <div class="col-md-4 themed-grid-col">.col-md-4</div> </div> - <div class="row mb-3"> + <div class="row mb-3 text-center"> <div class="col-lg-4 themed-grid-col">.col-lg-4</div> <div class="col-lg-4 themed-grid-col">.col-lg-4</div> <div class="col-lg-4 themed-grid-col">.col-lg-4</div> </div> - <div class="row mb-3"> + <div class="row mb-3 text-center"> <div class="col-xl-4 themed-grid-col">.col-xl-4</div> <div class="col-xl-4 themed-grid-col">.col-xl-4</div> <div class="col-xl-4 themed-grid-col">.col-xl-4</div> </div> - <div class="row mb-3"> + <div class="row mb-3 text-center"> <div class="col-xxl-4 themed-grid-col">.col-xxl-4</div> <div class="col-xxl-4 themed-grid-col">.col-xxl-4</div> <div class="col-xxl-4 themed-grid-col">.col-xxl-4</div> @@ -55,7 +55,7 @@ include_js: false <h2 class="mt-4">Three equal columns</h2> <p>Get three equal-width columns <strong>starting at desktops and scaling to large desktops</strong>. On mobile devices, tablets and below, the columns will automatically stack.</p> - <div class="row mb-3"> + <div class="row mb-3 text-center"> <div class="col-md-4 themed-grid-col">.col-md-4</div> <div class="col-md-4 themed-grid-col">.col-md-4</div> <div class="col-md-4 themed-grid-col">.col-md-4</div> @@ -63,7 +63,7 @@ include_js: false <h2 class="mt-4">Three equal columns alternative</h2> <p>By using the <code>.row-cols-*</code> classes, you can easily create a grid with equal columns.</p> - <div class="row row-cols-md-3 mb-3"> + <div class="row row-cols-md-3 mb-3 text-center"> <div class="col themed-grid-col"><code>.col</code> child of <code>.row-cols-md-3</code></div> <div class="col themed-grid-col"><code>.col</code> child of <code>.row-cols-md-3</code></div> <div class="col themed-grid-col"><code>.col</code> child of <code>.row-cols-md-3</code></div> @@ -71,7 +71,7 @@ include_js: false <h2 class="mt-4">Three unequal columns</h2> <p>Get three columns <strong>starting at desktops and scaling to large desktops</strong> of various widths. Remember, grid columns should add up to twelve for a single horizontal block. More than that, and columns start stacking no matter the viewport.</p> - <div class="row mb-3"> + <div class="row mb-3 text-center"> <div class="col-md-3 themed-grid-col">.col-md-3</div> <div class="col-md-6 themed-grid-col">.col-md-6</div> <div class="col-md-3 themed-grid-col">.col-md-3</div> @@ -79,7 +79,7 @@ include_js: false <h2 class="mt-4">Two columns</h2> <p>Get two columns <strong>starting at desktops and scaling to large desktops</strong>.</p> - <div class="row mb-3"> + <div class="row mb-3 text-center"> <div class="col-md-8 themed-grid-col">.col-md-8</div> <div class="col-md-4 themed-grid-col">.col-md-4</div> </div> @@ -94,7 +94,7 @@ include_js: false <h2 class="mt-4">Two columns with two nested columns</h2> <p>Per the documentation, nesting is easy—just put a row of columns within an existing column. This gives you two columns <strong>starting at desktops and scaling to large desktops</strong>, with another two (equal widths) within the larger column.</p> <p>At mobile device sizes, tablets and down, these columns and their nested columns will stack.</p> - <div class="row mb-3"> + <div class="row mb-3 text-center"> <div class="col-md-8 themed-grid-col"> <div class="pb-3"> .col-md-8 @@ -110,18 +110,18 @@ include_js: false <hr class="my-4"> <h2 class="mt-4">Mixed: mobile and desktop</h2> - <p>The Bootstrap v4 grid system has five tiers of classes: xs (extra small, this class infix is not used), sm (small), md (medium), lg (large), and xl (extra large). You can use nearly any combination of these classes to create more dynamic and flexible layouts.</p> - <p>Each tier of classes scales up, meaning if you plan on setting the same widths for md, lg and xl, you only need to specify md.</p> - <div class="row mb-3"> + <p>The Bootstrap v5 grid system has six tiers of classes: xs (extra small, this class infix is not used), sm (small), md (medium), lg (large), xl (x-large), and xxl (xx-large). You can use nearly any combination of these classes to create more dynamic and flexible layouts.</p> + <p>Each tier of classes scales up, meaning if you plan on setting the same widths for md, lg, xl and xxl, you only need to specify md.</p> + <div class="row mb-3 text-center"> <div class="col-md-8 themed-grid-col">.col-md-8</div> <div class="col-6 col-md-4 themed-grid-col">.col-6 .col-md-4</div> </div> - <div class="row mb-3"> + <div class="row mb-3 text-center"> <div class="col-6 col-md-4 themed-grid-col">.col-6 .col-md-4</div> <div class="col-6 col-md-4 themed-grid-col">.col-6 .col-md-4</div> <div class="col-6 col-md-4 themed-grid-col">.col-6 .col-md-4</div> </div> - <div class="row mb-3"> + <div class="row mb-3 text-center"> <div class="col-6 themed-grid-col">.col-6</div> <div class="col-6 themed-grid-col">.col-6</div> </div> @@ -129,11 +129,11 @@ include_js: false <hr class="my-4"> <h2 class="mt-4">Mixed: mobile, tablet, and desktop</h2> - <div class="row mb-3"> + <div class="row mb-3 text-center"> <div class="col-sm-6 col-lg-8 themed-grid-col">.col-sm-6 .col-lg-8</div> <div class="col-6 col-lg-4 themed-grid-col">.col-6 .col-lg-4</div> </div> - <div class="row mb-3"> + <div class="row mb-3 text-center"> <div class="col-6 col-sm-4 themed-grid-col">.col-6 .col-sm-4</div> <div class="col-6 col-sm-4 themed-grid-col">.col-6 .col-sm-4</div> <div class="col-6 col-sm-4 themed-grid-col">.col-6 .col-sm-4</div> @@ -143,7 +143,7 @@ include_js: false <h2 class="mt-4">Gutters</h2> <p>With <code>.gx-*</code> classes, the horizontal gutters can be adjusted.</p> - <div class="row row-cols-1 row-cols-md-3 gx-4"> + <div class="row row-cols-1 row-cols-md-3 gx-4 text-center"> <div class="col themed-grid-col"><code>.col</code> with <code>.gx-4</code> gutters</div> <div class="col themed-grid-col"><code>.col</code> with <code>.gx-4</code> gutters</div> <div class="col themed-grid-col"><code>.col</code> with <code>.gx-4</code> gutters</div> @@ -152,7 +152,7 @@ include_js: false <div class="col themed-grid-col"><code>.col</code> with <code>.gx-4</code> gutters</div> </div> <p class="mt-4">Use the <code>.gy-*</code> classes to control the vertical gutters.</p> - <div class="row row-cols-1 row-cols-md-3 gy-4"> + <div class="row row-cols-1 row-cols-md-3 gy-4 text-center"> <div class="col themed-grid-col"><code>.col</code> with <code>.gy-4</code> gutters</div> <div class="col themed-grid-col"><code>.col</code> with <code>.gy-4</code> gutters</div> <div class="col themed-grid-col"><code>.col</code> with <code>.gy-4</code> gutters</div> @@ -161,7 +161,7 @@ include_js: false <div class="col themed-grid-col"><code>.col</code> with <code>.gy-4</code> gutters</div> </div> <p class="mt-4">With <code>.g-*</code> classes, the gutters in both directions can be adjusted.</p> - <div class="row row-cols-1 row-cols-md-3 g-3"> + <div class="row row-cols-1 row-cols-md-3 g-3 text-center"> <div class="col themed-grid-col"><code>.col</code> with <code>.g-3</code> gutters</div> <div class="col themed-grid-col"><code>.col</code> with <code>.g-3</code> gutters</div> <div class="col themed-grid-col"><code>.col</code> with <code>.g-3</code> gutters</div> @@ -178,11 +178,11 @@ include_js: false <p>Additional classes added in Bootstrap v4.4 allow containers that are 100% wide until a particular breakpoint. v5 adds a new <code>xxl</code> breakpoint.</p> </div> - <div class="container themed-container">.container</div> - <div class="container-sm themed-container">.container-sm</div> - <div class="container-md themed-container">.container-md</div> - <div class="container-lg themed-container">.container-lg</div> - <div class="container-xl themed-container">.container-xl</div> - <div class="container-xxl themed-container">.container-xxl</div> - <div class="container-fluid themed-container">.container-fluid</div> + <div class="container themed-container text-center">.container</div> + <div class="container-sm themed-container text-center">.container-sm</div> + <div class="container-md themed-container text-center">.container-md</div> + <div class="container-lg themed-container text-center">.container-lg</div> + <div class="container-xl themed-container text-center">.container-xl</div> + <div class="container-xxl themed-container text-center">.container-xxl</div> + <div class="container-fluid themed-container text-center">.container-fluid</div> </main> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/examples/headers/headers.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/headers/headers.css new file mode 100644 index 000000000..8230c9a5f --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/headers/headers.css @@ -0,0 +1,15 @@ +.form-control-dark { + border-color: var(--bs-gray); +} +.form-control-dark:focus { + border-color: #fff; + box-shadow: 0 0 0 .25rem rgba(255, 255, 255, .25); +} + +.text-small { + font-size: 85%; +} + +.dropdown-toggle { + outline: 0; +} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/headers/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/headers/index.html index e15b47e5f..b8fc8b27b 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/headers/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/headers/index.html @@ -89,7 +89,7 @@ body_class: "" <div class="b-example-divider"></div> - <header class="p-3 bg-dark text-white"> + <header class="p-3 text-bg-dark"> <div class="container"> <div class="d-flex flex-wrap align-items-center justify-content-center justify-content-lg-start"> <a href="/" class="d-flex align-items-center mb-2 mb-lg-0 text-white text-decoration-none"> @@ -104,8 +104,8 @@ body_class: "" <li><a href="#" class="nav-link px-2 text-white">About</a></li> </ul> - <form class="col-12 col-lg-auto mb-3 mb-lg-0 me-lg-3"> - <input type="search" class="form-control form-control-dark" placeholder="Search..." aria-label="Search"> + <form class="col-12 col-lg-auto mb-3 mb-lg-0 me-lg-3" role="search"> + <input type="search" class="form-control form-control-dark text-bg-dark" placeholder="Search..." aria-label="Search"> </form> <div class="text-end"> @@ -132,15 +132,15 @@ body_class: "" <li><a href="#" class="nav-link px-2 link-dark">Products</a></li> </ul> - <form class="col-12 col-lg-auto mb-3 mb-lg-0 me-lg-3"> + <form class="col-12 col-lg-auto mb-3 mb-lg-0 me-lg-3" role="search"> <input type="search" class="form-control" placeholder="Search..." aria-label="Search"> </form> <div class="dropdown text-end"> - <a href="#" class="d-block link-dark text-decoration-none dropdown-toggle" id="dropdownUser1" data-bs-toggle="dropdown" aria-expanded="false"> + <a href="#" class="d-block link-dark text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> <img src="https://github.com/mdo.png" alt="mdo" width="32" height="32" class="rounded-circle"> </a> - <ul class="dropdown-menu text-small" aria-labelledby="dropdownUser1"> + <ul class="dropdown-menu text-small"> <li><a class="dropdown-item" href="#">New project...</a></li> <li><a class="dropdown-item" href="#">Settings</a></li> <li><a class="dropdown-item" href="#">Profile</a></li> @@ -157,10 +157,10 @@ body_class: "" <header class="py-3 mb-3 border-bottom"> <div class="container-fluid d-grid gap-3 align-items-center" style="grid-template-columns: 1fr 2fr;"> <div class="dropdown"> - <a href="#" class="d-flex align-items-center col-lg-4 mb-2 mb-lg-0 link-dark text-decoration-none dropdown-toggle" id="dropdownNavLink" data-bs-toggle="dropdown" aria-expanded="false"> + <a href="#" class="d-flex align-items-center col-lg-4 mb-2 mb-lg-0 link-dark text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> <svg class="bi me-2" width="40" height="32"><use xlink:href="#bootstrap"/></svg> </a> - <ul class="dropdown-menu text-small shadow" aria-labelledby="dropdownNavLink"> + <ul class="dropdown-menu text-small shadow"> <li><a class="dropdown-item active" href="#" aria-current="page">Overview</a></li> <li><a class="dropdown-item" href="#">Inventory</a></li> <li><a class="dropdown-item" href="#">Customers</a></li> @@ -172,15 +172,15 @@ body_class: "" </div> <div class="d-flex align-items-center"> - <form class="w-100 me-3"> + <form class="w-100 me-3" role="search"> <input type="search" class="form-control" placeholder="Search..." aria-label="Search"> </form> <div class="flex-shrink-0 dropdown"> - <a href="#" class="d-block link-dark text-decoration-none dropdown-toggle" id="dropdownUser2" data-bs-toggle="dropdown" aria-expanded="false"> + <a href="#" class="d-block link-dark text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> <img src="https://github.com/mdo.png" alt="mdo" width="32" height="32" class="rounded-circle"> </a> - <ul class="dropdown-menu text-small shadow" aria-labelledby="dropdownUser2"> + <ul class="dropdown-menu text-small shadow"> <li><a class="dropdown-item" href="#">New project...</a></li> <li><a class="dropdown-item" href="#">Settings</a></li> <li><a class="dropdown-item" href="#">Profile</a></li> @@ -226,7 +226,7 @@ body_class: "" <svg class="bi me-2" width="40" height="32"><use xlink:href="#bootstrap"/></svg> <span class="fs-4">Double header</span> </a> - <form class="col-12 col-lg-auto mb-3 mb-lg-0"> + <form class="col-12 col-lg-auto mb-3 mb-lg-0" role="search"> <input type="search" class="form-control" placeholder="Search..." aria-label="Search"> </form> </div> @@ -235,7 +235,7 @@ body_class: "" <div class="b-example-divider"></div> <header> - <div class="px-3 py-2 bg-dark text-white"> + <div class="px-3 py-2 text-bg-dark"> <div class="container"> <div class="d-flex flex-wrap align-items-center justify-content-center justify-content-lg-start"> <a href="/" class="d-flex align-items-center my-2 my-lg-0 me-lg-auto text-white text-decoration-none"> @@ -279,7 +279,7 @@ body_class: "" </div> <div class="px-3 py-2 border-bottom mb-3"> <div class="container d-flex flex-wrap justify-content-center"> - <form class="col-12 col-lg-auto mb-2 mb-lg-0 me-lg-auto"> + <form class="col-12 col-lg-auto mb-2 mb-lg-0 me-lg-auto" role="search"> <input type="search" class="form-control" placeholder="Search..." aria-label="Search"> </form> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/heroes/bootstrap-docs.png b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/heroes/bootstrap-docs.png Binary files differindex 471a9eddf..471a9eddf 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/heroes/bootstrap-docs.png +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/heroes/bootstrap-docs.png diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/heroes/bootstrap-themes.png b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/heroes/bootstrap-themes.png Binary files differindex 13c32337d..13c32337d 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/heroes/bootstrap-themes.png +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/heroes/bootstrap-themes.png diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/examples/heroes/heroes.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/heroes/heroes.css new file mode 100644 index 000000000..e9deaf744 --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/heroes/heroes.css @@ -0,0 +1,3 @@ +@media (min-width: 992px) { + .rounded-lg-3 { border-radius: .3rem; } +} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/heroes/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/heroes/index.html index ef621fd50..ef621fd50 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/heroes/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/heroes/index.html diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/jumbotron/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/jumbotron/index.html index 99cc61dee..8131d1903 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/jumbotron/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/jumbotron/index.html @@ -23,7 +23,7 @@ include_js: false <div class="row align-items-md-stretch"> <div class="col-md-6"> - <div class="h-100 p-5 text-white bg-dark rounded-3"> + <div class="h-100 p-5 text-bg-dark rounded-3"> <h2>Change the background</h2> <p>Swap the background-color utility and add a `.text-*` color utility to mix up the jumbotron look. Then, mix and match with additional component themes and more.</p> <button class="btn btn-outline-light" type="button">Example button</button> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/list-groups/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/list-groups/index.html index c16bad944..9599913c0 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/list-groups/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/list-groups/index.html @@ -27,7 +27,7 @@ body_class: "" </symbol> </svg> -<div class="list-group"> +<div class="list-group w-auto"> <a href="#" class="list-group-item list-group-item-action d-flex gap-3 py-3" aria-current="true"> <img src="https://github.com/twbs.png" alt="twbs" width="32" height="32" class="rounded-circle flex-shrink-0"> <div class="d-flex gap-2 w-100 justify-content-between"> @@ -63,7 +63,7 @@ body_class: "" <div class="b-example-divider"></div> <div class="d-flex gap-5 justify-content-center"> - <div class="list-group mx-0"> + <div class="list-group mx-0 w-auto"> <label class="list-group-item d-flex gap-2"> <input class="form-check-input flex-shrink-0" type="checkbox" value="" checked> <span> @@ -87,7 +87,7 @@ body_class: "" </label> </div> - <div class="list-group mx-0"> + <div class="list-group mx-0 w-auto"> <label class="list-group-item d-flex gap-2"> <input class="form-check-input flex-shrink-0" type="radio" name="listGroupRadios" id="listGroupRadios1" value="" checked> <span> @@ -114,7 +114,7 @@ body_class: "" <div class="b-example-divider"></div> -<div class="list-group"> +<div class="list-group w-auto"> <label class="list-group-item d-flex gap-3"> <input class="form-check-input flex-shrink-0" type="checkbox" value="" checked style="font-size: 1.375em;"> <span class="pt-1 form-checked-content"> @@ -146,7 +146,7 @@ body_class: "" </span> </label> <label class="list-group-item d-flex gap-3 bg-light"> - <input class="form-check-input form-check-input-placeholder bg-light flex-shrink-0" disabled type="checkbox" value="" style="font-size: 1.375em;"> + <input class="form-check-input form-check-input-placeholder bg-light flex-shrink-0 pe-none" disabled type="checkbox" value="" style="font-size: 1.375em;"> <span class="pt-1 form-checked-content"> <span contenteditable="true" class="w-100">Add new task...</span> <small class="d-block text-muted"> @@ -159,28 +159,64 @@ body_class: "" <div class="b-example-divider"></div> -<div class="list-group list-group-checkable"> - <input class="list-group-item-check" type="radio" name="listGroupCheckableRadios" id="listGroupCheckableRadios1" value="" checked> - <label class="list-group-item py-3" for="listGroupCheckableRadios1"> +<div class="list-group list-group-checkable d-grid gap-2 border-0 w-auto"> + <input class="list-group-item-check pe-none" type="radio" name="listGroupCheckableRadios" id="listGroupCheckableRadios1" value="" checked> + <label class="list-group-item rounded-3 py-3" for="listGroupCheckableRadios1"> First radio <span class="d-block small opacity-50">With support text underneath to add more detail</span> </label> - <input class="list-group-item-check" type="radio" name="listGroupCheckableRadios" id="listGroupCheckableRadios2" value=""> - <label class="list-group-item py-3" for="listGroupCheckableRadios2"> + <input class="list-group-item-check pe-none" type="radio" name="listGroupCheckableRadios" id="listGroupCheckableRadios2" value=""> + <label class="list-group-item rounded-3 py-3" for="listGroupCheckableRadios2"> Second radio <span class="d-block small opacity-50">Some other text goes here</span> </label> - <input class="list-group-item-check" type="radio" name="listGroupCheckableRadios" id="listGroupCheckableRadios3" value=""> - <label class="list-group-item py-3" for="listGroupCheckableRadios3"> + <input class="list-group-item-check pe-none" type="radio" name="listGroupCheckableRadios" id="listGroupCheckableRadios3" value=""> + <label class="list-group-item rounded-3 py-3" for="listGroupCheckableRadios3"> Third radio <span class="d-block small opacity-50">And we end with another snippet of text</span> </label> - <input class="list-group-item-check" type="radio" name="listGroupCheckableRadios" id="listGroupCheckableRadios4" value="" disabled> - <label class="list-group-item py-3" for="listGroupCheckableRadios4"> + <input class="list-group-item-check pe-none" type="radio" name="listGroupCheckableRadios" id="listGroupCheckableRadios4" value="" disabled> + <label class="list-group-item rounded-3 py-3" for="listGroupCheckableRadios4"> Fourth disabled radio <span class="d-block small opacity-50">This option is disabled</span> </label> -</div>
\ No newline at end of file +</div> + +<div class="b-example-divider"></div> + +<div class="list-group list-group-radio d-grid gap-2 border-0 w-auto"> + <div class="position-relative"> + <input class="form-check-input position-absolute top-50 end-0 me-3 fs-5" type="radio" name="listGroupRadioGrid" id="listGroupRadioGrid1" value="" checked> + <label class="list-group-item py-3 pe-5" for="listGroupRadioGrid1"> + <strong class="fw-semibold">First radio</strong> + <span class="d-block small opacity-75">With support text underneath to add more detail</span> + </label> + </div> + + <div class="position-relative"> + <input class="form-check-input position-absolute top-50 end-0 me-3 fs-5" type="radio" name="listGroupRadioGrid" id="listGroupRadioGrid2" value=""> + <label class="list-group-item py-3 pe-5" for="listGroupRadioGrid2"> + <strong class="fw-semibold">Second radio</strong> + <span class="d-block small opacity-75">Some other text goes here</span> + </label> + </div> + + <div class="position-relative"> + <input class="form-check-input position-absolute top-50 end-0 me-3 fs-5" type="radio" name="listGroupRadioGrid" id="listGroupRadioGrid3" value=""> + <label class="list-group-item py-3 pe-5" for="listGroupRadioGrid3"> + <strong class="fw-semibold">Third radio</strong> + <span class="d-block small opacity-75">And we end with another snippet of text</span> + </label> + </div> + + <div class="position-relative"> + <input class="form-check-input position-absolute top-50 end-0 me-3 fs-5" type="radio" name="listGroupRadioGrid" id="listGroupRadioGrid4" value="" disabled> + <label class="list-group-item py-3 pe-5" for="listGroupRadioGrid4"> + <strong class="fw-semibold">Fourth disabled radio</strong> + <span class="d-block small opacity-75">This option is disabled</span> + </label> + </div> +</div> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/list-groups/list-groups.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/list-groups/list-groups.css index 11351f87e..218508412 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/list-groups/list-groups.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/list-groups/list-groups.css @@ -1,21 +1,4 @@ -.b-example-divider { - height: 3rem; - background-color: rgba(0, 0, 0, .1); - border: solid rgba(0, 0, 0, .15); - border-width: 1px 0; - box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); -} - -.bi { - vertical-align: -.125em; - fill: currentColor; -} - -.opacity-50 { opacity: .5; } -.opacity-75 { opacity: .75; } - .list-group { - width: auto; max-width: 460px; margin: 4rem auto; } @@ -25,26 +8,18 @@ } .form-check-input-placeholder { - pointer-events: none; border-style: dashed; } [contenteditable]:focus { outline: 0; } -.list-group-checkable { - display: grid; - gap: .5rem; - border: 0; -} .list-group-checkable .list-group-item { cursor: pointer; - border-radius: .5rem; } .list-group-item-check { position: absolute; clip: rect(0, 0, 0, 0); - pointer-events: none; } .list-group-item-check:hover + .list-group-item { background-color: var(--bs-light); @@ -59,3 +34,28 @@ filter: none; opacity: .5; } + +.list-group-radio .list-group-item { + cursor: pointer; + border-radius: .5rem; +} +.list-group-radio .form-check-input { + z-index: 2; + margin-top: -.5em; +} +.list-group-radio .list-group-item:hover, +.list-group-radio .list-group-item:focus { + background-color: var(--bs-light); +} + +.list-group-radio .form-check-input:checked + .list-group-item { + background-color: var(--bs-body); + border-color: var(--bs-blue); + box-shadow: 0 0 0 2px var(--bs-blue); +} +.list-group-radio .form-check-input[disabled] + .list-group-item, +.list-group-radio .form-check-input:disabled + .list-group-item { + pointer-events: none; + filter: none; + opacity: .5; +} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/masonry/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/masonry/index.html index 9061d7cce..b4aecaa17 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/masonry/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/masonry/index.html @@ -54,7 +54,7 @@ extra_js: </div> </div> <div class="col-sm-6 col-lg-4 mb-4"> - <div class="card bg-primary text-white text-center p-3"> + <div class="card text-bg-primary text-center p-3"> <figure class="mb-0"> <blockquote class="blockquote"> <p>A well-known quote, contained in a blockquote element.</p> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/modals/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/modals/index.html index cc0feff87..0f16aabf8 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/modals/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/modals/index.html @@ -57,7 +57,7 @@ body_class: "" <div class="modal modal-sheet position-static d-block bg-secondary py-5" tabindex="-1" role="dialog" id="modalSheet"> <div class="modal-dialog" role="document"> - <div class="modal-content rounded-6 shadow"> + <div class="modal-content rounded-4 shadow"> <div class="modal-header border-bottom-0"> <h5 class="modal-title">Modal title</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> @@ -77,13 +77,13 @@ body_class: "" <div class="modal modal-alert position-static d-block bg-secondary py-5" tabindex="-1" role="dialog" id="modalChoice"> <div class="modal-dialog" role="document"> - <div class="modal-content rounded-4 shadow"> + <div class="modal-content rounded-3 shadow"> <div class="modal-body p-4 text-center"> <h5 class="mb-0">Enable this setting?</h5> <p class="mb-0">You can always change your mind in your account settings.</p> </div> <div class="modal-footer flex-nowrap p-0"> - <button type="button" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 m-0 rounded-0 border-right"><strong>Yes, enable</strong></button> + <button type="button" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 m-0 rounded-0 border-end"><strong>Yes, enable</strong></button> <button type="button" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 m-0 rounded-0" data-bs-dismiss="modal">No thanks</button> </div> </div> @@ -94,7 +94,7 @@ body_class: "" <div class="modal modal-tour position-static d-block bg-secondary py-5" tabindex="-1" role="dialog" id="modalTour"> <div class="modal-dialog" role="document"> - <div class="modal-content rounded-6 shadow"> + <div class="modal-content rounded-4 shadow"> <div class="modal-body p-5"> <h2 class="fw-bold mb-0">What's new</h2> @@ -131,7 +131,7 @@ body_class: "" <div class="modal modal-signin position-static d-block bg-secondary py-5" tabindex="-1" role="dialog" id="modalSignin"> <div class="modal-dialog" role="document"> - <div class="modal-content rounded-5 shadow"> + <div class="modal-content rounded-4 shadow"> <div class="modal-header p-5 pb-4 border-bottom-0"> <!-- <h5 class="modal-title">Modal title</h5> --> <h2 class="fw-bold mb-0">Sign up for free</h2> @@ -141,26 +141,26 @@ body_class: "" <div class="modal-body p-5 pt-0"> <form class=""> <div class="form-floating mb-3"> - <input type="email" class="form-control rounded-4" id="floatingInput" placeholder="name@example.com"> + <input type="email" class="form-control rounded-3" id="floatingInput" placeholder="name@example.com"> <label for="floatingInput">Email address</label> </div> <div class="form-floating mb-3"> - <input type="password" class="form-control rounded-4" id="floatingPassword" placeholder="Password"> + <input type="password" class="form-control rounded-3" id="floatingPassword" placeholder="Password"> <label for="floatingPassword">Password</label> </div> - <button class="w-100 mb-2 btn btn-lg rounded-4 btn-primary" type="submit">Sign up</button> + <button class="w-100 mb-2 btn btn-lg rounded-3 btn-primary" type="submit">Sign up</button> <small class="text-muted">By clicking Sign up, you agree to the terms of use.</small> <hr class="my-4"> <h2 class="fs-5 fw-bold mb-3">Or use a third-party</h2> - <button class="w-100 py-2 mb-2 btn btn-outline-dark rounded-4" type="submit"> + <button class="w-100 py-2 mb-2 btn btn-outline-dark rounded-3" type="submit"> <svg class="bi me-1" width="16" height="16"><use xlink:href="#twitter"/></svg> Sign up with Twitter </button> - <button class="w-100 py-2 mb-2 btn btn-outline-primary rounded-4" type="submit"> + <button class="w-100 py-2 mb-2 btn btn-outline-primary rounded-3" type="submit"> <svg class="bi me-1" width="16" height="16"><use xlink:href="#facebook"/></svg> Sign up with Facebook </button> - <button class="w-100 py-2 mb-2 btn btn-outline-secondary rounded-4" type="submit"> + <button class="w-100 py-2 mb-2 btn btn-outline-secondary rounded-3" type="submit"> <svg class="bi me-1" width="16" height="16"><use xlink:href="#github"/></svg> Sign up with GitHub </button> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/examples/modals/modals.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/modals/modals.css new file mode 100644 index 000000000..51ad2c4fb --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/modals/modals.css @@ -0,0 +1,15 @@ +.modal-sheet .modal-dialog { + width: 380px; + transition: bottom .75s ease-in-out; +} +.modal-sheet .modal-footer { + padding-bottom: 2rem; +} + +.modal-alert .modal-dialog { + width: 380px; +} + +.modal-tour .modal-dialog { + width: 380px; +} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbar-bottom/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbar-bottom/index.html index 1a6399975..c0e859ad0 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbar-bottom/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbar-bottom/index.html @@ -28,8 +28,8 @@ title: Bottom navbar example <a class="nav-link disabled">Disabled</a> </li> <li class="nav-item dropup"> - <a class="nav-link dropdown-toggle" href="#" id="dropdown10" data-bs-toggle="dropdown" aria-expanded="false">Dropup</a> - <ul class="dropdown-menu" aria-labelledby="dropdown10"> + <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropup</a> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbar-fixed/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbar-fixed/index.html index 0c981392e..b0d998652 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbar-fixed/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbar-fixed/index.html @@ -23,7 +23,7 @@ extra_css: <a class="nav-link disabled">Disabled</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbar-fixed/navbar-top-fixed.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbar-fixed/navbar-top-fixed.css index c77c0c147..c77c0c147 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbar-fixed/navbar-top-fixed.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbar-fixed/navbar-top-fixed.css diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbar-static/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbar-static/index.html index 63c54c9f2..b6c26c94a 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbar-static/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbar-static/index.html @@ -23,7 +23,7 @@ extra_css: <a class="nav-link disabled">Disabled</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbar-static/navbar-top.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbar-static/navbar-top.css index 25bbdde09..25bbdde09 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbar-static/navbar-top.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbar-static/navbar-top.css diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbars-offcanvas/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbars-offcanvas/index.html new file mode 100644 index 000000000..9099dc93a --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbars-offcanvas/index.html @@ -0,0 +1,147 @@ +--- +layout: examples +title: Navbar Template +extra_css: + - "navbar.css" +--- + +<main> + <nav class="navbar navbar-dark bg-dark" aria-label="Dark offcanvas navbar"> + <div class="container-fluid"> + <a class="navbar-brand" href="#">Dark offcanvas navbar</a> + <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNavbarDark" aria-controls="offcanvasNavbarDark"> + <span class="navbar-toggler-icon"></span> + </button> + <div class="offcanvas offcanvas-end text-bg-dark" tabindex="-1" id="offcanvasNavbarDark" aria-labelledby="offcanvasNavbarDarkLabel"> + <div class="offcanvas-header"> + <h5 class="offcanvas-title" id="offcanvasNavbarDarkLabel">Offcanvas</h5> + <button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvas" aria-label="Close"></button> + </div> + <div class="offcanvas-body"> + <ul class="navbar-nav justify-content-end flex-grow-1 pe-3"> + <li class="nav-item"> + <a class="nav-link active" aria-current="page" href="#">Home</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="#">Link</a> + </li> + <li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> + Dropdown + </a> + <ul class="dropdown-menu"> + <li><a class="dropdown-item" href="#">Action</a></li> + <li><a class="dropdown-item" href="#">Another action</a></li> + <li> + <hr class="dropdown-divider"> + </li> + <li><a class="dropdown-item" href="#">Something else here</a></li> + </ul> + </li> + </ul> + <form class="d-flex mt-3" role="search"> + <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> + <button class="btn btn-outline-success" type="submit">Search</button> + </form> + </div> + </div> + </div> + </nav> + + <nav class="navbar bg-light" aria-label="Light offcanvas navbar"> + <div class="container-fluid"> + <a class="navbar-brand" href="#">Light offcanvas navbar</a> + <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNavbarLight" aria-controls="offcanvasNavbarLight"> + <span class="navbar-toggler-icon"></span> + </button> + <div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasNavbarLight" aria-labelledby="offcanvasNavbarLightLabel"> + <div class="offcanvas-header"> + <h5 class="offcanvas-title" id="offcanvasNavbarLightLabel">Offcanvas</h5> + <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> + </div> + <div class="offcanvas-body"> + <ul class="navbar-nav justify-content-end flex-grow-1 pe-3"> + <li class="nav-item"> + <a class="nav-link active" aria-current="page" href="#">Home</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="#">Link</a> + </li> + <li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> + Dropdown + </a> + <ul class="dropdown-menu"> + <li><a class="dropdown-item" href="#">Action</a></li> + <li><a class="dropdown-item" href="#">Another action</a></li> + <li> + <hr class="dropdown-divider"> + </li> + <li><a class="dropdown-item" href="#">Something else here</a></li> + </ul> + </li> + </ul> + <form class="d-flex mt-3" role="search"> + <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> + <button class="btn btn-outline-success" type="submit">Search</button> + </form> + </div> + </div> + </div> + </nav> + + <nav class="navbar navbar-expand-lg navbar-dark bg-dark" aria-label="Offcanvas navbar large"> + <div class="container-fluid"> + <a class="navbar-brand" href="#">Responsive offcanvas navbar</a> + <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNavbar2" aria-controls="offcanvasNavbar2"> + <span class="navbar-toggler-icon"></span> + </button> + <div class="offcanvas offcanvas-end text-bg-dark" tabindex="-1" id="offcanvasNavbar2" aria-labelledby="offcanvasNavbar2Label"> + <div class="offcanvas-header"> + <h5 class="offcanvas-title" id="offcanvasNavbar2Label">Offcanvas</h5> + <button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvas" aria-label="Close"></button> + </div> + <div class="offcanvas-body"> + <ul class="navbar-nav justify-content-end flex-grow-1 pe-3"> + <li class="nav-item"> + <a class="nav-link active" aria-current="page" href="#">Home</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="#">Link</a> + </li> + <li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> + Dropdown + </a> + <ul class="dropdown-menu"> + <li><a class="dropdown-item" href="#">Action</a></li> + <li><a class="dropdown-item" href="#">Another action</a></li> + <li> + <hr class="dropdown-divider"> + </li> + <li><a class="dropdown-item" href="#">Something else here</a></li> + </ul> + </li> + </ul> + <form class="d-flex mt-3 mt-lg-0" role="search"> + <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> + <button class="btn btn-outline-success" type="submit">Search</button> + </form> + </div> + </div> + </div> + </nav> + + <div class="container my-5"> + <div class="bg-light p-5 rounded"> + <div class="col-sm-8 py-5 mx-auto"> + <h1 class="display-5 fw-normal">Navbar with offcanvas examples</h1> + <p class="fs-5">This example shows how responsive offcanvas menus work within the navbar. For positioning of navbars, checkout the <a href="{{< docsref "/examples/navbar-static" >}}">top</a> and <a href="{{< docsref "/examples/navbar-fixed" >}}">fixed top</a> examples.</p> + <p>From the top down, you'll see a dark navbar, light navbar and a responsive navbar—each with offcanvases built in. Resize your browser window to the large breakpoint to see the toggle for the offcanvas.</p> + <p> + <a class="btn btn-primary" href="{{< docsref "/components/navbar#offcanvas" >}}" role="button">Learn more about offcanvas navbars »</a> + </p> + </div> + </div> + </div> +</main> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbars/navbar.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbars-offcanvas/navbar.css index 70d209409..70d209409 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbars/navbar.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbars-offcanvas/navbar.css diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbars/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbars/index.html index 04d6ab623..cc90b8ce0 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/navbars/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbars/index.html @@ -25,16 +25,16 @@ extra_css: <a class="nav-link disabled">Disabled</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="dropdown01" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> - <ul class="dropdown-menu" aria-labelledby="dropdown01"> + <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> </ul> </li> </ul> - <form> - <input class="form-control" type="text" placeholder="Search" aria-label="Search"> + <form role="search"> + <input class="form-control" type="search" placeholder="Search" aria-label="Search"> </form> </div> </div> @@ -56,8 +56,8 @@ extra_css: <a class="nav-link" href="#">Link</a> </li> </ul> - <form> - <input class="form-control" type="text" placeholder="Search" aria-label="Search"> + <form role="search"> + <input class="form-control" type="search" placeholder="Search" aria-label="Search"> </form> </div> </div> @@ -82,16 +82,16 @@ extra_css: <a class="nav-link disabled">Disabled</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="dropdown03" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> - <ul class="dropdown-menu" aria-labelledby="dropdown03"> + <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> </ul> </li> </ul> - <form> - <input class="form-control" type="text" placeholder="Search" aria-label="Search"> + <form role="search"> + <input class="form-control" type="search" placeholder="Search" aria-label="Search"> </form> </div> </div> @@ -116,16 +116,16 @@ extra_css: <a class="nav-link disabled">Disabled</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="dropdown04" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> - <ul class="dropdown-menu" aria-labelledby="dropdown04"> + <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> </ul> </li> </ul> - <form> - <input class="form-control" type="text" placeholder="Search" aria-label="Search"> + <form role="search"> + <input class="form-control" type="search" placeholder="Search" aria-label="Search"> </form> </div> </div> @@ -150,16 +150,16 @@ extra_css: <a class="nav-link disabled">Disabled</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="dropdown05" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> - <ul class="dropdown-menu" aria-labelledby="dropdown05"> + <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> </ul> </li> </ul> - <form> - <input class="form-control" type="text" placeholder="Search" aria-label="Search"> + <form role="search"> + <input class="form-control" type="search" placeholder="Search" aria-label="Search"> </form> </div> </div> @@ -184,16 +184,16 @@ extra_css: <a class="nav-link disabled">Disabled</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="dropdown06" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> - <ul class="dropdown-menu" aria-labelledby="dropdown06"> + <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> </ul> </li> </ul> - <form> - <input class="form-control" type="text" placeholder="Search" aria-label="Search"> + <form role="search"> + <input class="form-control" type="search" placeholder="Search" aria-label="Search"> </form> </div> </div> @@ -218,16 +218,16 @@ extra_css: <a class="nav-link disabled">Disabled</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="dropdownXxl" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> - <ul class="dropdown-menu" aria-labelledby="dropdownXxl"> + <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> </ul> </li> </ul> - <form> - <input class="form-control" type="text" placeholder="Search" aria-label="Search"> + <form role="search"> + <input class="form-control" type="search" placeholder="Search" aria-label="Search"> </form> </div> </div> @@ -252,16 +252,16 @@ extra_css: <a class="nav-link disabled">Disabled</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="dropdown07" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> - <ul class="dropdown-menu" aria-labelledby="dropdown07"> + <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> </ul> </li> </ul> - <form> - <input class="form-control" type="text" placeholder="Search" aria-label="Search"> + <form role="search"> + <input class="form-control" type="search" placeholder="Search" aria-label="Search"> </form> </div> </div> @@ -286,16 +286,16 @@ extra_css: <a class="nav-link disabled">Disabled</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="dropdown07XL" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> - <ul class="dropdown-menu" aria-labelledby="dropdown07XL"> + <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> </ul> </li> </ul> - <form> - <input class="form-control" type="text" placeholder="Search" aria-label="Search"> + <form role="search"> + <input class="form-control" type="search" placeholder="Search" aria-label="Search"> </form> </div> </div> @@ -323,8 +323,8 @@ extra_css: <a class="nav-link disabled">Disabled</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="dropdown08" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> - <ul class="dropdown-menu" aria-labelledby="dropdown08"> + <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> @@ -336,7 +336,7 @@ extra_css: </nav> <div class="container"> - <nav class="navbar navbar-expand-lg navbar-light bg-light rounded" aria-label="Eleventh navbar example"> + <nav class="navbar navbar-expand-lg bg-light rounded" aria-label="Eleventh navbar example"> <div class="container-fluid"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarsExample09" aria-controls="navbarsExample09" aria-expanded="false" aria-label="Toggle navigation"> @@ -355,22 +355,22 @@ extra_css: <a class="nav-link disabled">Disabled</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="dropdown09" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> - <ul class="dropdown-menu" aria-labelledby="dropdown09"> + <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> </ul> </li> </ul> - <form> - <input class="form-control" type="text" placeholder="Search" aria-label="Search"> + <form role="search"> + <input class="form-control" type="search" placeholder="Search" aria-label="Search"> </form> </div> </div> </nav> - <nav class="navbar navbar-expand-lg navbar-light bg-light rounded" aria-label="Twelfth navbar example"> + <nav class="navbar navbar-expand-lg bg-light rounded" aria-label="Twelfth navbar example"> <div class="container-fluid"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarsExample10" aria-controls="navbarsExample10" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> @@ -388,8 +388,8 @@ extra_css: <a class="nav-link disabled">Disabled</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="dropdown10" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> - <ul class="dropdown-menu" aria-labelledby="dropdown10"> + <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbars/navbar.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbars/navbar.css new file mode 100644 index 000000000..70d209409 --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/navbars/navbar.css @@ -0,0 +1,7 @@ +body { + padding-bottom: 20px; +} + +.navbar { + margin-bottom: 20px; +} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/offcanvas-navbar/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/offcanvas-navbar/index.html index 5af7e2ea2..81c9bb4bb 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/offcanvas-navbar/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/offcanvas-navbar/index.html @@ -6,7 +6,7 @@ extra_css: extra_js: - src: "offcanvas.js" body_class: "bg-light" -aliases: "/docs/5.1/examples/offcanvas/" +aliases: "/docs/5.2/examples/offcanvas/" --- <nav class="navbar navbar-expand-lg fixed-top navbar-dark bg-dark" aria-label="Main navigation"> @@ -31,15 +31,15 @@ aliases: "/docs/5.1/examples/offcanvas/" <a class="nav-link" href="#">Switch account</a> </li> <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="dropdown01" data-bs-toggle="dropdown" aria-expanded="false">Settings</a> - <ul class="dropdown-menu" aria-labelledby="dropdown01"> + <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Settings</a> + <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> </ul> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> @@ -48,11 +48,11 @@ aliases: "/docs/5.1/examples/offcanvas/" </nav> <div class="nav-scroller bg-body shadow-sm"> - <nav class="nav nav-underline" aria-label="Secondary navigation"> + <nav class="nav" aria-label="Secondary navigation"> <a class="nav-link active" aria-current="page" href="#">Dashboard</a> <a class="nav-link" href="#"> Friends - <span class="badge bg-light text-dark rounded-pill align-text-bottom">27</span> + <span class="badge text-bg-light rounded-pill align-text-bottom">27</span> </a> <a class="nav-link" href="#">Explore</a> <a class="nav-link" href="#">Suggestions</a> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/offcanvas-navbar/offcanvas.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/offcanvas-navbar/offcanvas.css index 97fe8399c..f855b96a5 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/offcanvas-navbar/offcanvas.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/offcanvas-navbar/offcanvas.css @@ -27,37 +27,22 @@ body { } } -.nav-scroller { - position: relative; - z-index: 2; - height: 2.75rem; - overflow-y: hidden; -} - .nav-scroller .nav { - display: flex; - flex-wrap: nowrap; - padding-bottom: 1rem; - margin-top: -1px; - overflow-x: auto; color: rgba(255, 255, 255, .75); - text-align: center; - white-space: nowrap; - -webkit-overflow-scrolling: touch; } -.nav-underline .nav-link { +.nav-scroller .nav-link { padding-top: .75rem; padding-bottom: .75rem; font-size: .875rem; color: #6c757d; } -.nav-underline .nav-link:hover { +.nav-scroller .nav-link:hover { color: #007bff; } -.nav-underline .active { +.nav-scroller .active { font-weight: 500; color: #343a40; } diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/offcanvas-navbar/offcanvas.js b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/offcanvas-navbar/offcanvas.js index 91103b1c4..b97a17164 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/offcanvas-navbar/offcanvas.js +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/offcanvas-navbar/offcanvas.js @@ -1,7 +1,7 @@ -(function () { +(() => { 'use strict' - document.querySelector('#navbarSideCollapse').addEventListener('click', function () { + document.querySelector('#navbarSideCollapse').addEventListener('click', () => { document.querySelector('.offcanvas-collapse').classList.toggle('open') }) })() diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/pricing/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/pricing/index.html index c62c68c70..64b856a64 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/pricing/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/pricing/index.html @@ -73,7 +73,7 @@ include_js: false </div> <div class="col"> <div class="card mb-4 rounded-3 shadow-sm border-primary"> - <div class="card-header py-3 text-white bg-primary border-primary"> + <div class="card-header py-3 text-bg-primary border-primary"> <h4 class="my-0 fw-normal">Enterprise</h4> </div> <div class="card-body"> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/pricing/pricing.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/pricing/pricing.css index c7304d10b..c7304d10b 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/pricing/pricing.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/pricing/pricing.css diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/product/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/product/index.html index 291901efa..c2eb0eb2a 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/product/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/product/index.html @@ -32,7 +32,7 @@ extra_css: </div> <div class="d-md-flex flex-md-equal w-100 my-md-3 ps-md-3"> - <div class="bg-dark me-md-3 pt-3 px-3 pt-md-5 px-md-5 text-center text-white overflow-hidden"> + <div class="text-bg-dark me-md-3 pt-3 px-3 pt-md-5 px-md-5 text-center overflow-hidden"> <div class="my-3 py-3"> <h2 class="display-5">Another headline</h2> <p class="lead">And an even wittier subheading.</p> @@ -56,7 +56,7 @@ extra_css: </div> <div class="bg-dark shadow-sm mx-auto" style="width: 80%; height: 300px; border-radius: 21px 21px 0 0;"></div> </div> - <div class="bg-primary me-md-3 pt-3 px-3 pt-md-5 px-md-5 text-center text-white overflow-hidden"> + <div class="text-bg-primary me-md-3 pt-3 px-3 pt-md-5 px-md-5 text-center overflow-hidden"> <div class="my-3 py-3"> <h2 class="display-5">Another headline</h2> <p class="lead">And an even wittier subheading.</p> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/product/product.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/product/product.css index 5fcb582b4..5fcb582b4 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/product/product.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/product/product.css diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sidebars/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sidebars/index.html index 4d628f1c0..48889facc 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sidebars/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sidebars/index.html @@ -67,54 +67,54 @@ body_class: "" </symbol> </svg> -<main> +<main class="d-flex flex-nowrap"> <h1 class="visually-hidden">Sidebars examples</h1> - <div class="d-flex flex-column flex-shrink-0 p-3 text-white bg-dark" style="width: 280px;"> + <div class="d-flex flex-column flex-shrink-0 p-3 text-bg-dark" style="width: 280px;"> <a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-white text-decoration-none"> - <svg class="bi me-2" width="40" height="32"><use xlink:href="#bootstrap"/></svg> + <svg class="bi pe-none me-2" width="40" height="32"><use xlink:href="#bootstrap"/></svg> <span class="fs-4">Sidebar</span> </a> <hr> <ul class="nav nav-pills flex-column mb-auto"> <li class="nav-item"> <a href="#" class="nav-link active" aria-current="page"> - <svg class="bi me-2" width="16" height="16"><use xlink:href="#home"/></svg> + <svg class="bi pe-none me-2" width="16" height="16"><use xlink:href="#home"/></svg> Home </a> </li> <li> <a href="#" class="nav-link text-white"> - <svg class="bi me-2" width="16" height="16"><use xlink:href="#speedometer2"/></svg> + <svg class="bi pe-none me-2" width="16" height="16"><use xlink:href="#speedometer2"/></svg> Dashboard </a> </li> <li> <a href="#" class="nav-link text-white"> - <svg class="bi me-2" width="16" height="16"><use xlink:href="#table"/></svg> + <svg class="bi pe-none me-2" width="16" height="16"><use xlink:href="#table"/></svg> Orders </a> </li> <li> <a href="#" class="nav-link text-white"> - <svg class="bi me-2" width="16" height="16"><use xlink:href="#grid"/></svg> + <svg class="bi pe-none me-2" width="16" height="16"><use xlink:href="#grid"/></svg> Products </a> </li> <li> <a href="#" class="nav-link text-white"> - <svg class="bi me-2" width="16" height="16"><use xlink:href="#people-circle"/></svg> + <svg class="bi pe-none me-2" width="16" height="16"><use xlink:href="#people-circle"/></svg> Customers </a> </li> </ul> <hr> <div class="dropdown"> - <a href="#" class="d-flex align-items-center text-white text-decoration-none dropdown-toggle" id="dropdownUser1" data-bs-toggle="dropdown" aria-expanded="false"> + <a href="#" class="d-flex align-items-center text-white text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> <img src="https://github.com/mdo.png" alt="" width="32" height="32" class="rounded-circle me-2"> <strong>mdo</strong> </a> - <ul class="dropdown-menu dropdown-menu-dark text-small shadow" aria-labelledby="dropdownUser1"> + <ul class="dropdown-menu dropdown-menu-dark text-small shadow"> <li><a class="dropdown-item" href="#">New project...</a></li> <li><a class="dropdown-item" href="#">Settings</a></li> <li><a class="dropdown-item" href="#">Profile</a></li> @@ -124,53 +124,53 @@ body_class: "" </div> </div> - <div class="b-example-divider"></div> + <div class="b-example-divider b-example-vr"></div> <div class="d-flex flex-column flex-shrink-0 p-3 bg-light" style="width: 280px;"> <a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto link-dark text-decoration-none"> - <svg class="bi me-2" width="40" height="32"><use xlink:href="#bootstrap"/></svg> + <svg class="bi pe-none me-2" width="40" height="32"><use xlink:href="#bootstrap"/></svg> <span class="fs-4">Sidebar</span> </a> <hr> <ul class="nav nav-pills flex-column mb-auto"> <li class="nav-item"> <a href="#" class="nav-link active" aria-current="page"> - <svg class="bi me-2" width="16" height="16"><use xlink:href="#home"/></svg> + <svg class="bi pe-none me-2" width="16" height="16"><use xlink:href="#home"/></svg> Home </a> </li> <li> <a href="#" class="nav-link link-dark"> - <svg class="bi me-2" width="16" height="16"><use xlink:href="#speedometer2"/></svg> + <svg class="bi pe-none me-2" width="16" height="16"><use xlink:href="#speedometer2"/></svg> Dashboard </a> </li> <li> <a href="#" class="nav-link link-dark"> - <svg class="bi me-2" width="16" height="16"><use xlink:href="#table"/></svg> + <svg class="bi pe-none me-2" width="16" height="16"><use xlink:href="#table"/></svg> Orders </a> </li> <li> <a href="#" class="nav-link link-dark"> - <svg class="bi me-2" width="16" height="16"><use xlink:href="#grid"/></svg> + <svg class="bi pe-none me-2" width="16" height="16"><use xlink:href="#grid"/></svg> Products </a> </li> <li> <a href="#" class="nav-link link-dark"> - <svg class="bi me-2" width="16" height="16"><use xlink:href="#people-circle"/></svg> + <svg class="bi pe-none me-2" width="16" height="16"><use xlink:href="#people-circle"/></svg> Customers </a> </li> </ul> <hr> <div class="dropdown"> - <a href="#" class="d-flex align-items-center link-dark text-decoration-none dropdown-toggle" id="dropdownUser2" data-bs-toggle="dropdown" aria-expanded="false"> + <a href="#" class="d-flex align-items-center link-dark text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> <img src="https://github.com/mdo.png" alt="" width="32" height="32" class="rounded-circle me-2"> <strong>mdo</strong> </a> - <ul class="dropdown-menu text-small shadow" aria-labelledby="dropdownUser2"> + <ul class="dropdown-menu text-small shadow"> <li><a class="dropdown-item" href="#">New project...</a></li> <li><a class="dropdown-item" href="#">Settings</a></li> <li><a class="dropdown-item" href="#">Profile</a></li> @@ -180,45 +180,45 @@ body_class: "" </div> </div> - <div class="b-example-divider"></div> + <div class="b-example-divider b-example-vr"></div> <div class="d-flex flex-column flex-shrink-0 bg-light" style="width: 4.5rem;"> <a href="/" class="d-block p-3 link-dark text-decoration-none" title="Icon-only" data-bs-toggle="tooltip" data-bs-placement="right"> - <svg class="bi" width="40" height="32"><use xlink:href="#bootstrap"/></svg> + <svg class="bi pe-none" width="40" height="32"><use xlink:href="#bootstrap"/></svg> <span class="visually-hidden">Icon-only</span> </a> <ul class="nav nav-pills nav-flush flex-column mb-auto text-center"> <li class="nav-item"> - <a href="#" class="nav-link active py-3 border-bottom" aria-current="page" title="Home" data-bs-toggle="tooltip" data-bs-placement="right"> - <svg class="bi" width="24" height="24" role="img" aria-label="Home"><use xlink:href="#home"/></svg> + <a href="#" class="nav-link active py-3 border-bottom rounded-0" aria-current="page" title="Home" data-bs-toggle="tooltip" data-bs-placement="right"> + <svg class="bi pe-none" width="24" height="24" role="img" aria-label="Home"><use xlink:href="#home"/></svg> </a> </li> <li> - <a href="#" class="nav-link py-3 border-bottom" title="Dashboard" data-bs-toggle="tooltip" data-bs-placement="right"> - <svg class="bi" width="24" height="24" role="img" aria-label="Dashboard"><use xlink:href="#speedometer2"/></svg> + <a href="#" class="nav-link py-3 border-bottom rounded-0" title="Dashboard" data-bs-toggle="tooltip" data-bs-placement="right"> + <svg class="bi pe-none" width="24" height="24" role="img" aria-label="Dashboard"><use xlink:href="#speedometer2"/></svg> </a> </li> <li> - <a href="#" class="nav-link py-3 border-bottom" title="Orders" data-bs-toggle="tooltip" data-bs-placement="right"> - <svg class="bi" width="24" height="24" role="img" aria-label="Orders"><use xlink:href="#table"/></svg> + <a href="#" class="nav-link py-3 border-bottom rounded-0" title="Orders" data-bs-toggle="tooltip" data-bs-placement="right"> + <svg class="bi pe-none" width="24" height="24" role="img" aria-label="Orders"><use xlink:href="#table"/></svg> </a> </li> <li> - <a href="#" class="nav-link py-3 border-bottom" title="Products" data-bs-toggle="tooltip" data-bs-placement="right"> - <svg class="bi" width="24" height="24" role="img" aria-label="Products"><use xlink:href="#grid"/></svg> + <a href="#" class="nav-link py-3 border-bottom rounded-0" title="Products" data-bs-toggle="tooltip" data-bs-placement="right"> + <svg class="bi pe-none" width="24" height="24" role="img" aria-label="Products"><use xlink:href="#grid"/></svg> </a> </li> <li> - <a href="#" class="nav-link py-3 border-bottom" title="Customers" data-bs-toggle="tooltip" data-bs-placement="right"> - <svg class="bi" width="24" height="24" role="img" aria-label="Customers"><use xlink:href="#people-circle"/></svg> + <a href="#" class="nav-link py-3 border-bottom rounded-0" title="Customers" data-bs-toggle="tooltip" data-bs-placement="right"> + <svg class="bi pe-none" width="24" height="24" role="img" aria-label="Customers"><use xlink:href="#people-circle"/></svg> </a> </li> </ul> <div class="dropdown border-top"> - <a href="#" class="d-flex align-items-center justify-content-center p-3 link-dark text-decoration-none dropdown-toggle" id="dropdownUser3" data-bs-toggle="dropdown" aria-expanded="false"> + <a href="#" class="d-flex align-items-center justify-content-center p-3 link-dark text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> <img src="https://github.com/mdo.png" alt="mdo" width="24" height="24" class="rounded-circle"> </a> - <ul class="dropdown-menu text-small shadow" aria-labelledby="dropdownUser3"> + <ul class="dropdown-menu text-small shadow"> <li><a class="dropdown-item" href="#">New project...</a></li> <li><a class="dropdown-item" href="#">Settings</a></li> <li><a class="dropdown-item" href="#">Profile</a></li> @@ -228,92 +228,92 @@ body_class: "" </div> </div> - <div class="b-example-divider"></div> + <div class="b-example-divider b-example-vr"></div> <div class="flex-shrink-0 p-3 bg-white" style="width: 280px;"> <a href="/" class="d-flex align-items-center pb-3 mb-3 link-dark text-decoration-none border-bottom"> - <svg class="bi me-2" width="30" height="24"><use xlink:href="#bootstrap"/></svg> + <svg class="bi pe-none me-2" width="30" height="24"><use xlink:href="#bootstrap"/></svg> <span class="fs-5 fw-semibold">Collapsible</span> </a> <ul class="list-unstyled ps-0"> <li class="mb-1"> - <button class="btn btn-toggle align-items-center rounded collapsed" data-bs-toggle="collapse" data-bs-target="#home-collapse" aria-expanded="true"> + <button class="btn btn-toggle d-inline-flex align-items-center rounded border-0 collapsed" data-bs-toggle="collapse" data-bs-target="#home-collapse" aria-expanded="true"> Home </button> <div class="collapse show" id="home-collapse"> <ul class="btn-toggle-nav list-unstyled fw-normal pb-1 small"> - <li><a href="#" class="link-dark rounded">Overview</a></li> - <li><a href="#" class="link-dark rounded">Updates</a></li> - <li><a href="#" class="link-dark rounded">Reports</a></li> + <li><a href="#" class="link-dark d-inline-flex text-decoration-none rounded">Overview</a></li> + <li><a href="#" class="link-dark d-inline-flex text-decoration-none rounded">Updates</a></li> + <li><a href="#" class="link-dark d-inline-flex text-decoration-none rounded">Reports</a></li> </ul> </div> </li> <li class="mb-1"> - <button class="btn btn-toggle align-items-center rounded collapsed" data-bs-toggle="collapse" data-bs-target="#dashboard-collapse" aria-expanded="false"> + <button class="btn btn-toggle d-inline-flex align-items-center rounded border-0 collapsed" data-bs-toggle="collapse" data-bs-target="#dashboard-collapse" aria-expanded="false"> Dashboard </button> <div class="collapse" id="dashboard-collapse"> <ul class="btn-toggle-nav list-unstyled fw-normal pb-1 small"> - <li><a href="#" class="link-dark rounded">Overview</a></li> - <li><a href="#" class="link-dark rounded">Weekly</a></li> - <li><a href="#" class="link-dark rounded">Monthly</a></li> - <li><a href="#" class="link-dark rounded">Annually</a></li> + <li><a href="#" class="link-dark d-inline-flex text-decoration-none rounded">Overview</a></li> + <li><a href="#" class="link-dark d-inline-flex text-decoration-none rounded">Weekly</a></li> + <li><a href="#" class="link-dark d-inline-flex text-decoration-none rounded">Monthly</a></li> + <li><a href="#" class="link-dark d-inline-flex text-decoration-none rounded">Annually</a></li> </ul> </div> </li> <li class="mb-1"> - <button class="btn btn-toggle align-items-center rounded collapsed" data-bs-toggle="collapse" data-bs-target="#orders-collapse" aria-expanded="false"> + <button class="btn btn-toggle d-inline-flex align-items-center rounded border-0 collapsed" data-bs-toggle="collapse" data-bs-target="#orders-collapse" aria-expanded="false"> Orders </button> <div class="collapse" id="orders-collapse"> <ul class="btn-toggle-nav list-unstyled fw-normal pb-1 small"> - <li><a href="#" class="link-dark rounded">New</a></li> - <li><a href="#" class="link-dark rounded">Processed</a></li> - <li><a href="#" class="link-dark rounded">Shipped</a></li> - <li><a href="#" class="link-dark rounded">Returned</a></li> + <li><a href="#" class="link-dark d-inline-flex text-decoration-none rounded">New</a></li> + <li><a href="#" class="link-dark d-inline-flex text-decoration-none rounded">Processed</a></li> + <li><a href="#" class="link-dark d-inline-flex text-decoration-none rounded">Shipped</a></li> + <li><a href="#" class="link-dark d-inline-flex text-decoration-none rounded">Returned</a></li> </ul> </div> </li> <li class="border-top my-3"></li> <li class="mb-1"> - <button class="btn btn-toggle align-items-center rounded collapsed" data-bs-toggle="collapse" data-bs-target="#account-collapse" aria-expanded="false"> + <button class="btn btn-toggle d-inline-flex align-items-center rounded border-0 collapsed" data-bs-toggle="collapse" data-bs-target="#account-collapse" aria-expanded="false"> Account </button> <div class="collapse" id="account-collapse"> <ul class="btn-toggle-nav list-unstyled fw-normal pb-1 small"> - <li><a href="#" class="link-dark rounded">New...</a></li> - <li><a href="#" class="link-dark rounded">Profile</a></li> - <li><a href="#" class="link-dark rounded">Settings</a></li> - <li><a href="#" class="link-dark rounded">Sign out</a></li> + <li><a href="#" class="link-dark d-inline-flex text-decoration-none rounded">New...</a></li> + <li><a href="#" class="link-dark d-inline-flex text-decoration-none rounded">Profile</a></li> + <li><a href="#" class="link-dark d-inline-flex text-decoration-none rounded">Settings</a></li> + <li><a href="#" class="link-dark d-inline-flex text-decoration-none rounded">Sign out</a></li> </ul> </div> </li> </ul> </div> - <div class="b-example-divider"></div> + <div class="b-example-divider b-example-vr"></div> <div class="d-flex flex-column align-items-stretch flex-shrink-0 bg-white" style="width: 380px;"> <a href="/" class="d-flex align-items-center flex-shrink-0 p-3 link-dark text-decoration-none border-bottom"> - <svg class="bi me-2" width="30" height="24"><use xlink:href="#bootstrap"/></svg> + <svg class="bi pe-none me-2" width="30" height="24"><use xlink:href="#bootstrap"/></svg> <span class="fs-5 fw-semibold">List group</span> </a> <div class="list-group list-group-flush border-bottom scrollarea"> - <a href="#" class="list-group-item list-group-item-action active py-3 lh-tight" aria-current="true"> + <a href="#" class="list-group-item list-group-item-action active py-3 lh-sm" aria-current="true"> <div class="d-flex w-100 align-items-center justify-content-between"> <strong class="mb-1">List group item heading</strong> <small>Wed</small> </div> <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div> </a> - <a href="#" class="list-group-item list-group-item-action py-3 lh-tight"> + <a href="#" class="list-group-item list-group-item-action py-3 lh-sm"> <div class="d-flex w-100 align-items-center justify-content-between"> <strong class="mb-1">List group item heading</strong> <small class="text-muted">Tues</small> </div> <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div> </a> - <a href="#" class="list-group-item list-group-item-action py-3 lh-tight"> + <a href="#" class="list-group-item list-group-item-action py-3 lh-sm"> <div class="d-flex w-100 align-items-center justify-content-between"> <strong class="mb-1">List group item heading</strong> <small class="text-muted">Mon</small> @@ -321,63 +321,63 @@ body_class: "" <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div> </a> - <a href="#" class="list-group-item list-group-item-action py-3 lh-tight" aria-current="true"> + <a href="#" class="list-group-item list-group-item-action py-3 lh-sm" aria-current="true"> <div class="d-flex w-100 align-items-center justify-content-between"> <strong class="mb-1">List group item heading</strong> <small class="text-muted">Wed</small> </div> <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div> </a> - <a href="#" class="list-group-item list-group-item-action py-3 lh-tight"> + <a href="#" class="list-group-item list-group-item-action py-3 lh-sm"> <div class="d-flex w-100 align-items-center justify-content-between"> <strong class="mb-1">List group item heading</strong> <small class="text-muted">Tues</small> </div> <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div> </a> - <a href="#" class="list-group-item list-group-item-action py-3 lh-tight"> + <a href="#" class="list-group-item list-group-item-action py-3 lh-sm"> <div class="d-flex w-100 align-items-center justify-content-between"> <strong class="mb-1">List group item heading</strong> <small class="text-muted">Mon</small> </div> <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div> </a> - <a href="#" class="list-group-item list-group-item-action py-3 lh-tight" aria-current="true"> + <a href="#" class="list-group-item list-group-item-action py-3 lh-sm" aria-current="true"> <div class="d-flex w-100 align-items-center justify-content-between"> <strong class="mb-1">List group item heading</strong> <small class="text-muted">Wed</small> </div> <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div> </a> - <a href="#" class="list-group-item list-group-item-action py-3 lh-tight"> + <a href="#" class="list-group-item list-group-item-action py-3 lh-sm"> <div class="d-flex w-100 align-items-center justify-content-between"> <strong class="mb-1">List group item heading</strong> <small class="text-muted">Tues</small> </div> <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div> </a> - <a href="#" class="list-group-item list-group-item-action py-3 lh-tight"> + <a href="#" class="list-group-item list-group-item-action py-3 lh-sm"> <div class="d-flex w-100 align-items-center justify-content-between"> <strong class="mb-1">List group item heading</strong> <small class="text-muted">Mon</small> </div> <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div> </a> - <a href="#" class="list-group-item list-group-item-action py-3 lh-tight" aria-current="true"> + <a href="#" class="list-group-item list-group-item-action py-3 lh-sm" aria-current="true"> <div class="d-flex w-100 align-items-center justify-content-between"> <strong class="mb-1">List group item heading</strong> <small class="text-muted">Wed</small> </div> <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div> </a> - <a href="#" class="list-group-item list-group-item-action py-3 lh-tight"> + <a href="#" class="list-group-item list-group-item-action py-3 lh-sm"> <div class="d-flex w-100 align-items-center justify-content-between"> <strong class="mb-1">List group item heading</strong> <small class="text-muted">Tues</small> </div> <div class="col-10 mb-1 small">Some placeholder content in a paragraph below the heading and date.</div> </a> - <a href="#" class="list-group-item list-group-item-action py-3 lh-tight"> + <a href="#" class="list-group-item list-group-item-action py-3 lh-sm"> <div class="d-flex w-100 align-items-center justify-content-between"> <strong class="mb-1">List group item heading</strong> <small class="text-muted">Mon</small> @@ -387,5 +387,5 @@ body_class: "" </div> </div> - <div class="b-example-divider"></div> + <div class="b-example-divider b-example-vr"></div> </main> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sidebars/sidebars.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sidebars/sidebars.css index 6949a379e..5dc9fbaeb 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sidebars/sidebars.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sidebars/sidebars.css @@ -8,8 +8,6 @@ html { } main { - display: flex; - flex-wrap: nowrap; height: 100vh; height: -webkit-fill-available; max-height: 100vh; @@ -17,36 +15,13 @@ main { overflow-y: hidden; } -.b-example-divider { - flex-shrink: 0; - width: 1.5rem; - height: 100vh; - background-color: rgba(0, 0, 0, .1); - border: solid rgba(0, 0, 0, .15); - border-width: 1px 0; - box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); -} - -.bi { - vertical-align: -.125em; - pointer-events: none; - fill: currentColor; -} - .dropdown-toggle { outline: 0; } -.nav-flush .nav-link { - border-radius: 0; -} - .btn-toggle { - display: inline-flex; - align-items: center; padding: .25rem .5rem; font-weight: 600; color: rgba(0, 0, 0, .65); background-color: transparent; - border: 0; } .btn-toggle:hover, .btn-toggle:focus { @@ -70,11 +45,9 @@ main { } .btn-toggle-nav a { - display: inline-flex; padding: .1875rem .5rem; margin-top: .125rem; margin-left: 1.25rem; - text-decoration: none; } .btn-toggle-nav a:hover, .btn-toggle-nav a:focus { @@ -84,6 +57,3 @@ main { .scrollarea { overflow-y: auto; } - -.fw-semibold { font-weight: 600; } -.lh-tight { line-height: 1.25; } diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sidebars/sidebars.js b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sidebars/sidebars.js new file mode 100644 index 000000000..4075f1f15 --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sidebars/sidebars.js @@ -0,0 +1,8 @@ +/* global bootstrap: false */ +(() => { + 'use strict' + const tooltipTriggerList = Array.from(document.querySelectorAll('[data-bs-toggle="tooltip"]')) + tooltipTriggerList.forEach(tooltipTriggerEl => { + new bootstrap.Tooltip(tooltipTriggerEl) + }) +})() diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sign-in/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sign-in/index.html index fb885ba41..8772ba3c6 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sign-in/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sign-in/index.html @@ -7,7 +7,7 @@ body_class: "text-center" include_js: false --- -<main class="form-signin"> +<main class="form-signin w-100 m-auto"> <form> <img class="mb-4" src="/docs/{{< param docs_version >}}/assets/brand/bootstrap-logo.svg" alt="" width="72" height="57"> <h1 class="h3 mb-3 fw-normal">Please sign in</h1> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sign-in/signin.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sign-in/signin.css index 4732d1fb9..89deea44c 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sign-in/signin.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sign-in/signin.css @@ -12,14 +12,8 @@ body { } .form-signin { - width: 100%; max-width: 330px; padding: 15px; - margin: auto; -} - -.form-signin .checkbox { - font-weight: 400; } .form-signin .form-floating:focus-within { diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/starter-template/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/starter-template/index.html index 3623ff180..a16984ab9 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/starter-template/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/starter-template/index.html @@ -27,20 +27,21 @@ extra_css: <div class="col-md-6"> <h2>Starter projects</h2> <p>Ready to beyond the starter template? Check out these open source projects that you can quickly duplicate to a new GitHub repository.</p> - <ul class="icon-list"> - <li><a href="https://github.com/twbs/bootstrap-npm-starter" rel="noopener" target="_blank">Bootstrap npm starter</a></li> - <li class="text-muted">Bootstrap Parcel starter (coming soon!)</li> + <ul class="icon-list ps-0"> + <li class="d-flex align-items-start mb-1"><a href="https://github.com/twbs/bootstrap-npm-starter" rel="noopener" target="_blank">Bootstrap npm starter</a></li> + <li class="text-muted d-flex align-items-start mb-1">Bootstrap Parcel starter (coming soon!)</li> </ul> </div> <div class="col-md-6"> <h2>Guides</h2> <p>Read more detailed instructions and documentation on using or contributing to Bootstrap.</p> - <ul class="icon-list"> - <li><a href="{{< docsref "/getting-started/introduction" >}}">Bootstrap quick start guide</a></li> - <li><a href="{{< docsref "/getting-started/webpack" >}}">Bootstrap Webpack guide</a></li> - <li><a href="{{< docsref "/getting-started/parcel" >}}">Bootstrap Parcel guide</a></li> - <li><a href="{{< docsref "/getting-started/contribute" >}}">Contributing to Bootstrap</a></li> + <ul class="icon-list ps-0"> + <li class="d-flex align-items-start mb-1"><a href="{{< docsref "/getting-started/introduction" >}}">Bootstrap quick start guide</a></li> + <li class="d-flex align-items-start mb-1"><a href="{{< docsref "/getting-started/webpack" >}}">Bootstrap Webpack guide</a></li> + <li class="d-flex align-items-start mb-1"><a href="{{< docsref "/getting-started/parcel" >}}">Bootstrap Parcel guide</a></li> + <li class="d-flex align-items-start mb-1"><a href="{{< docsref "/getting-started/vite" >}}">Bootstrap Vite guide</a></li> + <li class="d-flex align-items-start mb-1"><a href="{{< docsref "/getting-started/contribute" >}}">Contributing to Bootstrap</a></li> </ul> </div> </div> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/starter-template/starter-template.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/starter-template/starter-template.css index d03436db0..582dcbe4f 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/starter-template/starter-template.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/starter-template/starter-template.css @@ -1,12 +1,3 @@ -.icon-list { - padding-left: 0; - list-style: none; -} -.icon-list li { - display: flex; - align-items: flex-start; - margin-bottom: .25rem; -} .icon-list li::before { display: block; flex-shrink: 0; diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sticky-footer-navbar/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sticky-footer-navbar/index.html index cd72aa778..1f807a6dc 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sticky-footer-navbar/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sticky-footer-navbar/index.html @@ -27,7 +27,7 @@ body_class: "d-flex flex-column h-100" <a class="nav-link disabled">Disabled</a> </li> </ul> - <form class="d-flex"> + <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sticky-footer-navbar/sticky-footer-navbar.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sticky-footer-navbar/sticky-footer-navbar.css index 3087ead7d..3087ead7d 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sticky-footer-navbar/sticky-footer-navbar.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sticky-footer-navbar/sticky-footer-navbar.css diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sticky-footer/index.html b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sticky-footer/index.html index 7a6e127cd..7a6e127cd 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sticky-footer/index.html +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sticky-footer/index.html diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sticky-footer/sticky-footer.css b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sticky-footer/sticky-footer.css index f8be43729..f8be43729 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/examples/sticky-footer/sticky-footer.css +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/examples/sticky-footer/sticky-footer.css diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/checks-radios.md b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/checks-radios.md index efd040de0..12f8b00d1 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/checks-radios.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/checks-radios.md @@ -3,7 +3,7 @@ layout: docs title: Checks and radios description: Create consistent cross-browser and cross-device checkboxes and radios with our completely rewritten checks component. group: forms -aliases: "/docs/5.1/forms/checks/" +aliases: "/docs/5.2/forms/checks/" toc: true --- @@ -36,7 +36,7 @@ Our checks use custom Bootstrap icons to indicate checked or indeterminate state Checkboxes can utilize the `:indeterminate` pseudo class when manually set via JavaScript (there is no available HTML attribute for specifying it). -{{< example class="bd-example-indeterminate">}} +{{< example class="bd-example-indeterminate" stackblitz_add_js="true" >}} <div class="form-check"> <input class="form-check-input" type="checkbox" value="" id="flexCheckIndeterminate"> <label class="form-check-label" for="flexCheckIndeterminate"> @@ -49,7 +49,13 @@ Checkboxes can utilize the `:indeterminate` pseudo class when manually set via J Add the `disabled` attribute and the associated `<label>`s are automatically styled to match with a lighter color to help indicate the input's state. -{{< example >}} +{{< example class="bd-example-indeterminate" stackblitz_add_js="true" >}} +<div class="form-check"> + <input class="form-check-input" type="checkbox" value="" id="flexCheckIndeterminateDisabled" disabled> + <label class="form-check-label" for="flexCheckIndeterminateDisabled"> + Disabled indeterminate checkbox + </label> +</div> <div class="form-check"> <input class="form-check-input" type="checkbox" value="" id="flexCheckDisabled" disabled> <label class="form-check-label" for="flexCheckDisabled"> @@ -197,6 +203,30 @@ Group checkboxes or radios on the same horizontal row by adding `.form-check-inl </div> {{< /example >}} +## Reverse + +Put your checkboxes, radios, and switches on the opposite side with the `.form-check-reverse` modifier class. + +{{< example >}} +<div class="form-check form-check-reverse"> + <input class="form-check-input" type="checkbox" value="" id="reverseCheck1"> + <label class="form-check-label" for="reverseCheck1"> + Reverse checkbox + </label> +</div> +<div class="form-check form-check-reverse"> + <input class="form-check-input" type="checkbox" value="" id="reverseCheck2" disabled> + <label class="form-check-label" for="reverseCheck2"> + Disabled reverse checkbox + </label> +</div> + +<div class="form-check form-switch form-check-reverse"> + <input class="form-check-input" type="checkbox" id="flexSwitchCheckReverse"> + <label class="form-check-label" for="flexSwitchCheckReverse">Reverse switch checkbox input</label> +</div> +{{< /example >}} + ## Without labels Omit the wrapping `.form-check` for checkboxes and radios that have no label text. Remember to still provide some form of accessible name for assistive technologies (for instance, using `aria-label`). See the [forms overview accessibility]({{< docsref "/forms/overview#accessibility" >}}) section for details. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/floating-labels.md b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/floating-labels.md index 941055089..9ec4fcd2f 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/floating-labels.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/floating-labels.md @@ -75,6 +75,50 @@ Other than `.form-control`, floating labels are only available on `.form-select` </div> {{< /example >}} +## Readonly plaintext + +Floating labels also support `.form-control-plaintext`, which can be helpful for toggling from an editable `<input>` to a plaintext value without affecting the page layout. + +{{< example >}} +<div class="form-floating mb-3"> + <input type="email" readonly class="form-control-plaintext" id="floatingEmptyPlaintextInput" placeholder="name@example.com"> + <label for="floatingEmptyPlaintextInput">Empty input</label> +</div> +<div class="form-floating mb-3"> + <input type="email" readonly class="form-control-plaintext" id="floatingPlaintextInput" placeholder="name@example.com" value="name@example.com"> + <label for="floatingPlaintextInput">Input with value</label> +</div> +{{< /example >}} + +## Input groups + +Floating labels also support `.input-group`. + +{{< example >}} +<div class="input-group mb-3"> + <span class="input-group-text">@</span> + <div class="form-floating"> + <input type="text" class="form-control" id="floatingInputGroup1" placeholder="Username"> + <label for="floatingInputGroup1">Username</label> + </div> +</div> +{{< /example >}} + +When using `.input-group` and `.form-floating` along with form validation, the `-feedback` should be placed outside of the `.form-floating`, but inside of the `.input-group`. This means that the feedback will need to be shown using javascript. + +{{< example >}} +<div class="input-group has-validation"> + <span class="input-group-text">@</span> + <div class="form-floating is-invalid"> + <input type="text" class="form-control is-invalid" id="floatingInputGroup2" placeholder="Username" required> + <label for="floatingInputGroup2">Username</label> + </div> + <div class="invalid-feedback"> + Please choose a username. + </div> +</div> +{{< /example >}} + ## Layout When working with the Bootstrap grid system, be sure to place form elements within column classes. @@ -89,7 +133,7 @@ When working with the Bootstrap grid system, be sure to place form elements with </div> <div class="col-md"> <div class="form-floating"> - <select class="form-select" id="floatingSelectGrid" aria-label="Floating label select example"> + <select class="form-select" id="floatingSelectGrid"> <option selected>Open this select menu</option> <option value="1">One</option> <option value="2">Two</option> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/form-control.md b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/form-control.md index 9c1c495b1..4d6972d1d 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/form-control.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/form-control.md @@ -31,7 +31,7 @@ Set heights using classes like `.form-control-lg` and `.form-control-sm`. ## Disabled -Add the `disabled` boolean attribute on an input to give it a grayed out appearance and remove pointer events. +Add the `disabled` boolean attribute on an input to give it a grayed out appearance, remove pointer events, and prevent focusing. {{< example >}} <input class="form-control" type="text" placeholder="Disabled input" aria-label="Disabled input example" disabled> @@ -40,7 +40,7 @@ Add the `disabled` boolean attribute on an input to give it a grayed out appeara ## Readonly -Add the `readonly` boolean attribute on an input to prevent modification of the input's value. +Add the `readonly` boolean attribute on an input to prevent modification of the input's value. `readonly` inputs can still be focused and selected, while `disabled` inputs cannot. {{< example >}} <input class="form-control" type="text" value="Readonly input here..." aria-label="readonly input example" readonly> @@ -48,7 +48,7 @@ Add the `readonly` boolean attribute on an input to prevent modification of the ## Readonly plain text -If you want to have `<input readonly>` elements in your form styled as plain text, use the `.form-control-plaintext` class to remove the default form field styling and preserve the correct margin and padding. +If you want to have `<input readonly>` elements in your form styled as plain text, replace `.form-control` with `.form-control-plaintext` to remove the default form field styling and preserve the correct `margin` and `padding`. {{< example >}} <div class="mb-3 row"> @@ -108,6 +108,8 @@ If you want to have `<input readonly>` elements in your form styled as plain tex ## Color +Set the `type="color"` and add `.form-control-color` to the `<input>`. We use the modifier class to set fixed `height`s and override some inconsistencies between browsers. + {{< example >}} <label for="exampleColorInput" class="form-label">Color picker</label> <input type="color" class="form-control form-control-color" id="exampleColorInput" value="#563d7c" title="Choose your color"> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/input-group.md b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/input-group.md index 00e9eeec9..00e9eeec9 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/input-group.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/input-group.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/layout.md b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/layout.md index 47e2f8ab7..21423040e 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/layout.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/layout.md @@ -12,7 +12,6 @@ Every group of form fields should reside in a `<form>` element. Bootstrap provid - New to browser forms? Consider reviewing [the MDN form docs](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form) for an overview and complete list of available attributes. - `<button>`s within a `<form>` default to `type="submit"`, so strive to be specific and always include a `type`. -- You can disable every form element within a form with the `disabled` attribute on the `<form>`. Since Bootstrap applies `display: block` and `width: 100%` to almost all our form controls, forms will by default stack vertically. Additional classes can be used to vary this layout on a per-form basis. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/overview.md b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/overview.md index c60cf1ccc..f38ad9035 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/overview.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/overview.md @@ -4,7 +4,7 @@ title: Forms description: Examples and usage guidelines for form control styles, layout options, and custom components for creating a wide variety of forms. group: forms toc: true -aliases: "/docs/5.1/forms/" +aliases: "/docs/5.2/forms/" sections: - title: Form control description: Style textual inputs and textareas with support for multiple states. @@ -145,10 +145,10 @@ While using visually hidden content (`.visually-hidden`, `aria-label`, and even ## Sass -Many form variables are set at a general level to be re-used and extended by individual form components. You'll see these most often as `$btn-input-*` and `$input-*` variables. +Many form variables are set at a general level to be re-used and extended by individual form components. You'll see these most often as `$input-btn-*` and `$input-*` variables. ### Variables -`$btn-input-*` variables are shared global variables between our [buttons]({{< docsref "/components/buttons" >}}) and our form components. You'll find these frequently reassigned as values to other component-specific variables. +`$input-btn-*` variables are shared global variables between our [buttons]({{< docsref "/components/buttons" >}}) and our form components. You'll find these frequently reassigned as values to other component-specific variables. {{< scss-docs name="input-btn-variables" file="scss/_variables.scss" >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/range.md b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/range.md index d7ac6965c..5c4f02612 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/range.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/range.md @@ -17,7 +17,7 @@ Create custom `<input type="range">` controls with `.form-range`. The track (the ## Disabled -Add the `disabled` boolean attribute on an input to give it a grayed out appearance and remove pointer events. +Add the `disabled` boolean attribute on an input to give it a grayed out appearance, remove pointer events, and prevent focusing. {{< example >}} <label for="disabledRange" class="form-label">Disabled range</label> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/select.md b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/select.md index 7f0c255ef..7f0c255ef 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/select.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/select.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/validation.md b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/validation.md index c4bc1b5db..d6d626634 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/forms/validation.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/forms/validation.md @@ -5,7 +5,7 @@ description: Provide valuable, actionable feedback to your users with HTML5 form group: forms toc: true extra_js: - - src: "/docs/5.1/assets/js/validate-forms.js" + - src: "/docs/5.2/assets/js/validate-forms.js" async: true --- @@ -165,7 +165,7 @@ We recommend using client-side validation, but in case you require server-side v For invalid fields, ensure that the invalid feedback/error message is associated with the relevant form field using `aria-describedby` (noting that this attribute allows more than one `id` to be referenced, in case the field already points to additional form text). -To fix [issues with border radii](https://github.com/twbs/bootstrap/issues/25110), input groups require an additional `.has-validation` class. +To fix [issues with border radius](https://github.com/twbs/bootstrap/issues/25110), input groups require an additional `.has-validation` class. {{< example >}} <form class="row g-3"> @@ -246,7 +246,7 @@ Validation styles are available for the following form controls and components: <form class="was-validated"> <div class="mb-3"> <label for="validationTextarea" class="form-label">Textarea</label> - <textarea class="form-control is-invalid" id="validationTextarea" placeholder="Required example textarea" required></textarea> + <textarea class="form-control" id="validationTextarea" placeholder="Required example textarea" required></textarea> <div class="invalid-feedback"> Please enter a message in the textarea. </div> @@ -378,5 +378,3 @@ Used to iterate over `$form-validation-states` map values to generate our valida ### Customizing Validation states can be customized via Sass with the `$form-validation-states` map. Located in our `_variables.scss` file, this Sass map is how we generate the default `valid`/`invalid` validation states. Included is a nested map for customizing each state's color, icon, tooltip color, and focus shadow. While no other states are supported by browsers, those using custom styles can easily add more complex form feedback. - -Please note that **we do not recommend customizing `$form-validation-states` values without also modifying the `form-validation-state` mixin**. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/accessibility.md b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/accessibility.md index e9f1cb316..e9f1cb316 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/accessibility.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/accessibility.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/best-practices.md b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/best-practices.md index e17fc1290..e17fc1290 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/best-practices.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/best-practices.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/browsers-devices.md b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/browsers-devices.md index bdda154a3..41885feaa 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/browsers-devices.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/browsers-devices.md @@ -26,68 +26,23 @@ We use [Autoprefixer](https://github.com/postcss/autoprefixer) to handle intende Generally speaking, Bootstrap supports the latest versions of each major platform's default browsers. Note that proxy browsers (such as Opera Mini, Opera Mobile's Turbo mode, UC Browser Mini, Amazon Silk) are not supported. -<table class="table"> - <thead> - <tr> - <th scope="col"></th> - <th scope="col">Chrome</th> - <th scope="col">Firefox</th> - <th scope="col">Safari</th> - <th scope="col">Android Browser & WebView</th> - </tr> - </thead> - <tbody> - <tr> - <th scope="row">Android</th> - <td>Supported</td> - <td>Supported</td> - <td class="text-muted">—</td> - <td>v6.0+</td> - </tr> - <tr> - <th scope="row">iOS</th> - <td>Supported</td> - <td>Supported</td> - <td>Supported</td> - <td class="text-muted">—</td> - </tr> - </tbody> -</table> +{{< bs-table "table" >}} +| | Chrome | Firefox | Safari | Android Browser & WebView | +| --- | --- | --- | --- | --- | +| **Android** | Supported | Supported | <span class="text-muted">—</span> | v6.0+ | +| **Windows** | Supported | Supported | Supported | <span class="text-muted">—</span> | +{{< /bs-table >}} ### Desktop browsers Similarly, the latest versions of most desktop browsers are supported. -<table class="table"> - <thead> - <tr> - <th scope="col"></th> - <th scope="col">Chrome</th> - <th scope="col">Firefox</th> - <th scope="col">Microsoft Edge</th> - <th scope="col">Opera</th> - <th scope="col">Safari</th> - </tr> - </thead> - <tbody> - <tr> - <th scope="row">Mac</th> - <td>Supported</td> - <td>Supported</td> - <td>Supported</td> - <td>Supported</td> - <td>Supported</td> - </tr> - <tr> - <th scope="row">Windows</th> - <td>Supported</td> - <td>Supported</td> - <td>Supported</td> - <td>Supported</td> - <td class="text-muted">—</td> - </tr> - </tbody> -</table> +{{< bs-table "table" >}} +| | Chrome | Firefox | Microsoft Edge | Opera | Safari | +| --- | --- | --- | --- | --- | --- | +| **Mac** | Supported | Supported | Supported | Supported | Supported | +| **Windows** | Supported | Supported | Supported | Supported | <span class="text-muted">—</span> | +{{< /bs-table >}} For Firefox, in addition to the latest normal stable release, we also support the latest [Extended Support Release (ESR)](https://www.mozilla.org/en-US/firefox/enterprise/) version of Firefox. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/contents.md b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/contents.md index 4e86d5592..a83b65ee3 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/contents.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/contents.md @@ -68,96 +68,25 @@ This is the most basic form of Bootstrap: precompiled files for quick drop-in us Bootstrap includes a handful of options for including some or all of our compiled CSS. -<table class="table"> - <thead> - <tr> - <th scope="col">CSS files</th> - <th scope="col">Layout</th> - <th scope="col">Content</th> - <th scope="col">Components</th> - <th scope="col">Utilities</th> - </tr> - </thead> - <tbody> - <tr> - <th scope="row"> - <div><code class="fw-normal text-nowrap">bootstrap.css</code></div> - <div><code class="fw-normal text-nowrap">bootstrap.rtl.css</code></div> - <div><code class="fw-normal text-nowrap">bootstrap.min.css</code></div> - <div><code class="fw-normal text-nowrap">bootstrap.rtl.min.css</code></div> - </th> - <td>Included</td> - <td>Included</td> - <td>Included</td> - <td>Included</td> - </tr> - <tr> - <th scope="row"> - <div><code class="fw-normal text-nowrap">bootstrap-grid.css</code></div> - <div><code class="fw-normal text-nowrap">bootstrap-grid.rtl.css</code></div> - <div><code class="fw-normal text-nowrap">bootstrap-grid.min.css</code></div> - <div><code class="fw-normal text-nowrap">bootstrap-grid.rtl.min.css</code></div> - </th> - <td><a class="link-secondary" href="{{< docsref "/layout/grid" >}}">Only grid system</a></td> - <td class="text-muted">—</td> - <td class="text-muted">—</td> - <td><a class="link-secondary" href="{{< docsref "/utilities/flex" >}}">Only flex utilities</a></td> - </tr> - <tr> - <th scope="row"> - <div><code class="fw-normal text-nowrap">bootstrap-utilities.css</code></div> - <div><code class="fw-normal text-nowrap">bootstrap-utilities.rtl.css</code></div> - <div><code class="fw-normal text-nowrap">bootstrap-utilities.min.css</code></div> - <div><code class="fw-normal text-nowrap">bootstrap-utilities.rtl.min.css</code></div> - </th> - <td class="text-muted">—</td> - <td class="text-muted">—</td> - <td class="text-muted">—</td> - <td>Included</td> - </tr> - <tr> - <th scope="row"> - <div><code class="fw-normal text-nowrap">bootstrap-reboot.css</code></div> - <div><code class="fw-normal text-nowrap">bootstrap-reboot.rtl.css</code></div> - <div><code class="fw-normal text-nowrap">bootstrap-reboot.min.css</code></div> - <div><code class="fw-normal text-nowrap">bootstrap-reboot.rtl.min.css</code></div> - </th> - <td class="text-muted">—</td> - <td><a class="link-secondary" href="{{< docsref "/content/reboot" >}}">Only Reboot</a></td> - <td class="text-muted">—</td> - <td class="text-muted">—</td> - </tr> - </tbody> -</table> +{{< bs-table "table" >}} +| CSS files | Layout | Content | Components | Utilities | +| --- | --- | --- | --- | --- | +| `bootstrap.css`<br> `bootstrap.min.css`<br> `bootstrap.rtl.css`<br> `bootstrap.rtl.min.css` | Included | Included | Included | Included | +| `bootstrap-grid.css`<br> `bootstrap-grid.rtl.css`<br> `bootstrap-grid.min.css`<br> `bootstrap-grid.rtl.min.css` | [Only grid system]({{< docsref "/layout/grid" >}}) | — | — | [Only flex utilities]({{< docsref "/utilities/flex" >}}) | +| `bootstrap-utilities.css`<br> `bootstrap-utilities.rtl.css`<br> `bootstrap-utilities.min.css`<br> `bootstrap-utilities.rtl.min.css` | — | — | — | Included | +| `bootstrap-reboot.css`<br> `bootstrap-reboot.rtl.css`<br> `bootstrap-reboot.min.css`<br> `bootstrap-reboot.rtl.min.css` | — | [Only Reboot]({{< docsref "/content/reboot" >}}) | — | — | +{{< /bs-table >}} ## JS files Similarly, we have options for including some or all of our compiled JavaScript. -<table class="table"> - <thead> - <tr> - <th scope="col">JS files</th> - <th scope="col">Popper</th> - </tr> - </thead> - <tbody> - <tr> - <th scope="row"> - <div><code class="fw-normal text-nowrap">bootstrap.bundle.js</code></div> - <div><code class="fw-normal text-nowrap">bootstrap.bundle.min.js</code></div> - </th> - <td>Included</td> - </tr> - <tr> - <th scope="row"> - <div><code class="fw-normal text-nowrap">bootstrap.js</code></div> - <div><code class="fw-normal text-nowrap">bootstrap.min.js</code></div> - </th> - <td class="text-muted">—</td> - </tr> - </tbody> -</table> +{{< bs-table "table" >}} +| JS Files | Popper | +| --- | --- | +| `bootstrap.bundle.js`<br> `bootstrap.bundle.min.js`<br> | Included | +| `bootstrap.js`<br> `bootstrap.min.js`<br> | – | +{{< /bs-table >}} ## Bootstrap source code @@ -171,7 +100,7 @@ bootstrap/ ├── site/ │ └──content/ │ └── docs/ -│ └── 5.1/ +│ └── {{< param docs_version >}}/ │ └── examples/ ├── js/ └── scss/ diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/contribute.md b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/contribute.md index 337bb2a43..6b3de43b6 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/contribute.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/contribute.md @@ -4,7 +4,7 @@ title: Contribute description: Help develop Bootstrap with our documentation build scripts and tests. group: getting-started toc: true -aliases: "/docs/5.1/getting-started/build-tools/" +aliases: "/docs/5.2/getting-started/build-tools/" --- ## Tooling setup @@ -23,48 +23,14 @@ When completed, you'll be able to run the various commands provided from the com Our [package.json]({{< param repo >}}/blob/v{{< param current_version >}}/package.json) includes numerous tasks for developing the project. Run `npm run` to see all the npm scripts in your terminal. **Primary tasks include:** -<table class="table"> - <thead> - <tr> - <th>Task</th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr> - <td> - <code>npm start</code> - </td> - <td> - Compiles CSS and JavaScript, builds the documentation, and starts a local server. - </td> - </tr> - <tr> - <td> - <code>npm run dist</code> - </td> - <td> - Creates the <code>dist/</code> directory with compiled files. Requires <a href="https://sass-lang.com/">Sass</a>, <a href="https://github.com/postcss/autoprefixer">Autoprefixer</a>, and <a href="https://github.com/terser/terser">terser</a>. - </td> - </tr> - <tr> - <td> - <code>npm test</code> - </td> - <td> - Runs tests locally after running <code>npm run dist</code> - </td> - </tr> - <tr> - <td> - <code>npm run docs-serve</code> - </td> - <td> - Builds and runs the documentation locally. - </td> - </tr> - </tbody> -</table> +{{< bs-table >}} +| Task | Description | +| --- | --- | +| `npm start` | Compiles CSS and JavaScript, builds the documentation, and starts a local server. | +| `npm run dist` | Creates the `dist/` directory with compiled files. Uses [Sass](https://sass-lang.com/), [Autoprefixer](https://github.com/postcss/autoprefixer), and [terser](https://github.com/terser/terser). | +| `npm test` | Runs tests locally after running `npm run dist` | +| `npm run docs-serve` | Builds and runs the documentation locally. | +{{< /bs-table >}} {{< callout info >}} {{< partial "callout-info-npm-starter.md" >}} @@ -78,13 +44,13 @@ Dart Sass uses a rounding precision of 10 and for efficiency reasons does not al ## Autoprefixer -Bootstrap uses [Autoprefixer][autoprefixer] (included in our build process) to automatically add vendor prefixes to some CSS properties at build time. Doing so saves us time and code by allowing us to write key parts of our CSS a single time while eliminating the need for vendor mixins like those found in v3. +Bootstrap uses [Autoprefixer](https://github.com/postcss/autoprefixer) (included in our build process) to automatically add vendor prefixes to some CSS properties at build time. Doing so saves us time and code by allowing us to write key parts of our CSS a single time while eliminating the need for vendor mixins like those found in v3. We maintain the list of browsers supported through Autoprefixer in a separate file within our GitHub repository. See [.browserslistrc]({{< param repo >}}/blob/v{{< param current_version >}}/.browserslistrc) for details. ## RTLCSS -Bootstrap uses [RTLCSS](https://rtlcss.com/) to process compiled CSS and convert them to RTL – basically replacing horizontal direction aware properties (eg. `padding-left`) with their opposite. It allows us only write our CSS a single time and make minor tweaks using RTLCSS [control](https://rtlcss.com/learn/usage-guide/control-directives/) and [value](https://rtlcss.com/learn/usage-guide/value-directives/) directives. +Bootstrap uses [RTLCSS](https://rtlcss.com/) to process compiled CSS and convert them to RTL – basically replacing horizontal direction aware properties (e.g. `padding-left`) with their opposite. It allows us only write our CSS a single time and make minor tweaks using RTLCSS [control](https://rtlcss.com/learn/usage-guide/control-directives/) and [value](https://rtlcss.com/learn/usage-guide/value-directives/) directives. ## Local documentation @@ -99,5 +65,3 @@ Learn more about using Hugo by reading its [documentation](https://gohugo.io/doc ## Troubleshooting Should you encounter problems with installing dependencies, uninstall all previous dependency versions (global and local). Then, rerun `npm install`. - -[autoprefixer]: https://github.com/postcss/autoprefixer diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/download.md b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/download.md index 67bc295a9..eeffdc83e 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/download.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/download.md @@ -59,7 +59,7 @@ Pull in Bootstrap's **source files** into nearly any project with some of the mo Install Bootstrap in your Node.js powered apps with [the npm package](https://www.npmjs.com/package/bootstrap): ```sh -npm install bootstrap +npm install bootstrap@{{< param "current_version" >}} ``` `const bootstrap = require('bootstrap')` or `import bootstrap from 'bootstrap'` will load all of Bootstrap's plugins onto a `bootstrap` object. @@ -79,7 +79,7 @@ Bootstrap's `package.json` contains some additional metadata under the following Install Bootstrap in your Node.js powered apps with [the yarn package](https://yarnpkg.com/en/package/bootstrap): ```sh -yarn add bootstrap +yarn add bootstrap@{{< param "current_version" >}} ``` ### RubyGems @@ -108,7 +108,7 @@ composer require twbs/bootstrap:{{< param current_version >}} ### NuGet -If you develop in .NET, you can also install and manage Bootstrap's [CSS](https://www.nuget.org/packages/bootstrap/) or [Sass](https://www.nuget.org/packages/bootstrap.sass/) and JavaScript using [NuGet](https://www.nuget.org/): +If you develop in .NET Framework, you can also install and manage Bootstrap's [CSS](https://www.nuget.org/packages/bootstrap/) or [Sass](https://www.nuget.org/packages/bootstrap.sass/) and JavaScript using [NuGet](https://www.nuget.org/). Newer projects should use [libman](https://docs.microsoft.com/en-us/aspnet/core/client-side/libman/) or another method as NuGet is designed for compiled code, not frontend assets. ```powershell Install-Package bootstrap diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/introduction.md b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/introduction.md new file mode 100644 index 000000000..4eaf5d6f8 --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/introduction.md @@ -0,0 +1,162 @@ +--- +layout: docs +title: Get started with Bootstrap +description: Bootstrap is a powerful, feature-packed frontend toolkit. Build anything—from prototype to production—in minutes. +group: getting-started +aliases: + - "/docs/5.2/getting-started/" + - "/docs/getting-started/" + - "/getting-started/" +toc: true +--- + +## Quick start + +Get started by including Bootstrap's production-ready CSS and JavaScript via CDN without the need for any build steps. See it in practice with this [Bootstrap CodePen demo](https://codepen.io/team/bootstrap/pen/qBamdLj). + +<br> + +1. **Create a new `index.html` file in your project root.** Include the `<meta name="viewport">` tag as well for [proper responsive behavior](https://developer.mozilla.org/en-US/docs/Web/HTML/Viewport_meta_tag) in mobile devices. + + ```html + <!doctype html> + <html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Bootstrap demo</title> + </head> + <body> + <h1>Hello, world!</h1> + </body> + </html> + ``` + +2. **Include Bootstrap's CSS and JS.** Place the `<link>` tag in the `<head>` for our CSS, and the `<script>` tag for our JavaScript bundle (including Popper for positioning dropdowns, poppers, and tooltips) before the closing `</body>`. Learn more about our [CDN links](#cdn-links). + + ```html + <!doctype html> + <html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Bootstrap demo</title> + <link href="{{< param "cdn.css" >}}" rel="stylesheet" integrity="{{< param "cdn.css_hash" >}}" crossorigin="anonymous"> + </head> + <body> + <h1>Hello, world!</h1> + <script src="{{< param "cdn.js_bundle" >}}" integrity="{{< param "cdn.js_bundle_hash" >}}" crossorigin="anonymous"></script> + </body> + </html> + ``` + + You can also include [Popper](https://popper.js.org/) and our JS separately. If you don't plan to use dropdowns, popovers, or tooltips, save some kilobytes by not including Popper. + + ```html + <script src="{{< param "cdn.popper" >}}" integrity="{{< param "cdn.popper_hash" >}}" crossorigin="anonymous"></script> + <script src="{{< param "cdn.js" >}}" integrity="{{< param "cdn.js_hash" >}}" crossorigin="anonymous"></script> + ``` + +3. **Hello, world!** Open the page in your browser of choice to see your Bootstrapped page. Now you can start building with Bootstrap by creating your own [layout]({{< docsref "/layout/grid" >}}), adding dozens of [components]({{< docsref "/components/buttons" >}}), and utilizing [our official examples]({{< docsref "/examples" >}}). + +## CDN links + +As reference, here are our primary CDN links. + +{{< bs-table >}} +| Description | URL | +| --- | --- | +| CSS | `{{< param "cdn.css" >}}` | +| JS | `{{< param "cdn.js_bundle" >}}` | +{{< /bs-table >}} + +You can also use the CDN to fetch any of our [additional builds listed in the Contents page]({{< docsref "/getting-started/contents" >}}). + +## Next steps + +- Read a bit more about some [important global environment settings](#important-globals) that Bootstrap utilizes. + +- Read about what's included in Bootstrap in our [contents section]({{< docsref "/getting-started/contents#precompiled-bootstrap" >}}) and the list of [components that require JavaScript](#js-components) below. + +- Need a little more power? Consider building with Bootstrap by [including the source files via package manager]({{< docsref "/getting-started/download#package-managers" >}}). + +- Looking to use Bootstrap as a module with `<script type="module">`? Please refer to our [using Bootstrap as a module]({{< docsref "/getting-started/javascript#using-bootstrap-as-a-module" >}}) section. + +## JS components + +Curious which components explicitly require our JavaScript and Popper? Click the show components link below. If you're at all unsure about the general page structure, keep reading for an example page template. + +<details> +<summary class="text-primary mb-3">Show components requiring JavaScript</summary> +{{< markdown >}} +- Alerts for dismissing +- Buttons for toggling states and checkbox/radio functionality +- Carousel for all slide behaviors, controls, and indicators +- Collapse for toggling visibility of content +- Dropdowns for displaying and positioning (also requires [Popper](https://popper.js.org/)) +- Modals for displaying, positioning, and scroll behavior +- Navbar for extending our Collapse and Offcanvas plugins to implement responsive behaviors +- Navs with the Tab plugin for toggling content panes +- Offcanvases for displaying, positioning, and scroll behavior +- Scrollspy for scroll behavior and navigation updates +- Toasts for displaying and dismissing +- Tooltips and popovers for displaying and positioning (also requires [Popper](https://popper.js.org/)) +{{< /markdown >}} +</details> + +## Important globals + +Bootstrap employs a handful of important global styles and settings, all of which are almost exclusively geared towards the *normalization* of cross browser styles. Let's dive in. + +### HTML5 doctype + +Bootstrap requires the use of the HTML5 doctype. Without it, you'll see some funky and incomplete styling. + +```html +<!doctype html> +<html lang="en"> + ... +</html> +``` + +### Responsive meta tag + +Bootstrap is developed *mobile first*, a strategy in which we optimize code for mobile devices first and then scale up components as necessary using CSS media queries. To ensure proper rendering and touch zooming for all devices, add the responsive viewport meta tag to your `<head>`. + +```html +<meta name="viewport" content="width=device-width, initial-scale=1"> +``` + +You can see an example of this in action in the [quick start](#quick-start). + +### Box-sizing + +For more straightforward sizing in CSS, we switch the global `box-sizing` value from `content-box` to `border-box`. This ensures `padding` does not affect the final computed width of an element, but it can cause problems with some third-party software like Google Maps and Google Custom Search Engine. + +On the rare occasion you need to override it, use something like the following: + +```css +.selector-for-some-widget { + box-sizing: content-box; +} +``` + +With the above snippet, nested elements—including generated content via `::before` and `::after`—will all inherit the specified `box-sizing` for that `.selector-for-some-widget`. + +Learn more about [box model and sizing at CSS Tricks](https://css-tricks.com/box-sizing/). + +### Reboot + +For improved cross-browser rendering, we use [Reboot]({{< docsref "/content/reboot" >}}) to correct inconsistencies across browsers and devices while providing slightly more opinionated resets to common HTML elements. + +## Community + +Stay up to date on the development of Bootstrap and reach out to the community with these helpful resources. + +- Read and subscribe to [The Official Bootstrap Blog]({{< param blog >}}). +- Join [the official Slack room]({{< param slack >}}). +- Chat with fellow Bootstrappers in IRC. On the `irc.libera.chat` server, in the `#bootstrap` channel. +- Implementation help may be found at Stack Overflow (tagged [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5)). +- Developers should use the keyword `bootstrap` on packages that modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/search?q=keywords:bootstrap) or similar delivery mechanisms for maximum discoverability. + +You can also follow [@getbootstrap on Twitter](https://twitter.com/{{< param twitter >}}) for the latest gossip and awesome music videos. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/javascript.md b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/javascript.md new file mode 100644 index 000000000..fa157e006 --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/javascript.md @@ -0,0 +1,337 @@ +--- +layout: docs +title: JavaScript +description: Bring Bootstrap to life with our optional JavaScript plugins. Learn about each plugin, our data and programmatic API options, and more. +group: getting-started +toc: true +--- + +## Individual or compiled + +Plugins can be included individually (using Bootstrap's individual `js/dist/*.js`), or all at once using `bootstrap.js` or the minified `bootstrap.min.js` (don't include both). + +If you use a bundler (Webpack, Parcel, Vite...), you can use `/js/dist/*.js` files which are UMD ready. + +## Usage with JavaScript frameworks + +While the Bootstrap CSS can be used with any framework, **the Bootstrap JavaScript is not fully compatible with JavaScript frameworks like React, Vue, and Angular** which assume full knowledge of the DOM. Both Bootstrap and the framework may attempt to mutate the same DOM element, resulting in bugs like dropdowns that are stuck in the "open" position. + +A better alternative for those using this type of frameworks is to use a framework-specific package **instead of** the Bootstrap JavaScript. Here are some of the most popular options: + +- React: [React Bootstrap](https://react-bootstrap.github.io/) +- Vue: [BootstrapVue](https://bootstrap-vue.org/) (currently only supports Vue 2 and Bootstrap 4) +- Angular: [ng-bootstrap](https://ng-bootstrap.github.io/) + +## Using Bootstrap as a module + +{{< callout >}} +**Try it yourself!** Download the source code and working demo for using Bootstrap as an ES module from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/sass-js-esm). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/sass-js-esm?file=index.html). +{{< /callout >}} + +We provide a version of Bootstrap built as `ESM` (`bootstrap.esm.js` and `bootstrap.esm.min.js`) which allows you to use Bootstrap as a module in the browser, if your [targeted browsers support it](https://caniuse.com/es6-module). + +```html +<script type="module"> + import { Toast } from 'bootstrap.esm.min.js' + + Array.from(document.querySelectorAll('.toast')) + .forEach(toastNode => new Toast(toastNode)) +</script> +``` + +Compared to JS bundlers, using ESM in the browser requires you to use the full path and filename instead of the module name. [Read more about JS modules in the browser.](https://v8.dev/features/modules#specifiers) That's why we use `'bootstrap.esm.min.js'` instead of `'bootstrap'` above. However, this is further complicated by our Popper dependency, which imports Popper into our JavaScript like so: + +<!-- eslint-skip --> +```js +import * as Popper from "@popperjs/core" +``` + +If you try this as-is, you'll see an error in the console like the following: + +```text +Uncaught TypeError: Failed to resolve module specifier "@popperjs/core". Relative references must start with either "/", "./", or "../". +``` + +To fix this, you can use an `importmap` to resolve the arbitrary module names to complete paths. If your [targeted browsers](https://caniuse.com/?search=importmap) do not support `importmap`, you'll need to use the [es-module-shims](https://github.com/guybedford/es-module-shims) project. Here's how it works for Bootstrap and Popper: + +```html +<!doctype html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link href="{{< param "cdn.css" >}}" rel="stylesheet" integrity="{{< param "cdn.css_hash" >}}" crossorigin="anonymous"> + <title>Hello, modularity!</title> + </head> + <body> + <h1>Hello, modularity!</h1> + <button id="popoverButton" type="button" class="btn btn-primary btn-lg" class="btn btn-lg btn-danger" data-bs-toggle="popover" title="ESM in Browser" data-bs-content="Bang!">Custom popover</button> + + <script async src="https://cdn.jsdelivr.net/npm/es-module-shims@1/dist/es-module-shims.min.js" crossorigin="anonymous"></script> + <script type="importmap"> + { + "imports": { + "@popperjs/core": "{{< param "cdn.popper" >}}", + "bootstrap": "https://cdn.jsdelivr.net/npm/bootstrap@{{< param "current_version" >}}/dist/js/bootstrap.esm.min.js" + } + } + </script> + <script type="module"> + import * as bootstrap from 'bootstrap' + + new bootstrap.Popover(document.getElementById('popoverButton')) + </script> + </body> +</html> +``` + +## Dependencies + +Some plugins and CSS components depend on other plugins. If you include plugins individually, make sure to check for these dependencies in the docs. + +Our dropdowns, popovers, and tooltips also depend on [Popper](https://popper.js.org/). + +## Data attributes + +Nearly all Bootstrap plugins can be enabled and configured through HTML alone with data attributes (our preferred way of using JavaScript functionality). Be sure to **only use one set of data attributes on a single element** (e.g., you cannot trigger a tooltip and modal from the same button.) + +{{< markdown >}} +{{< partial "js-data-attributes.md" >}} +{{< /markdown >}} + +## Selectors + +We use the native `querySelector` and `querySelectorAll` methods to query DOM elements for performance reasons, so you must use [valid selectors](https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier). If you use special selectors like `collapse:Example`, be sure to escape them. + +## Events + +Bootstrap provides custom events for most plugins' unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. `show`) is triggered at the start of an event, and its past participle form (ex. `shown`) is triggered on the completion of an action. + +All infinitive events provide [`preventDefault()`](https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault) functionality. This provides the ability to stop the execution of an action before it starts. Returning false from an event handler will also automatically call `preventDefault()`. + +```js +const myModal = document.querySelector('#myModal') + +myModal.addEventListener('show.bs.modal', event => { + if (!data) { + return event.preventDefault() // stops modal from being shown + } +}) +``` + +## Programmatic API + +All constructors accept an optional options object or nothing (which initiates a plugin with its default behavior): + +```js +const myModalEl = document.querySelector('#myModal') + +const modal = new bootstrap.Modal(myModalEl) // initialized with defaults + +const configObject = { keyboard: false } +const modal1 = new bootstrap.Modal(myModalEl, configObject) // initialized with no keyboard +``` + +If you'd like to get a particular plugin instance, each plugin exposes a `getInstance` method. For example, to retrieve an instance directly from an element: + +```js +bootstrap.Popover.getInstance(myPopoverEl) +``` + +This method will return `null` if an instance is not initiated over the requested element. + +Alternatively, `getOrCreateInstance` can be used to get the instance associated with a DOM element, or create a new one in case it wasn't initialized. + +```js +bootstrap.Popover.getOrCreateInstance(myPopoverEl, configObject) +``` + +In case an instance wasn't initialized, it may accept and use an optional configuration object as second argument. + +### CSS selectors in constructors + +In addition to the `getInstance` and `getOrCreateInstance` methods, all plugin constructors can accept a DOM element or a valid [CSS selector](#selectors) as the first argument. Plugin elements are found with the `querySelector` method since our plugins only support a single element. + +```js +const modal = new bootstrap.Modal('#myModal') +const dropdown = new bootstrap.Dropdown('[data-bs-toggle="dropdown"]') +const offcanvas = bootstrap.Offcanvas.getInstance('#myOffcanvas') +const alert = bootstrap.Alert.getOrCreateInstance('#myAlert') +``` + +### Asynchronous functions and transitions + +All programmatic API methods are **asynchronous** and return to the caller once the transition is started, but **before it ends**. In order to execute an action once the transition is complete, you can listen to the corresponding event. + +```js +const myCollapseEl = document.querySelector('#myCollapse') + +myCollapseEl.addEventListener('shown.bs.collapse', event => { + // Action to execute once the collapsible area is expanded +}) +``` + +In addition, a method call on a **transitioning component will be ignored**. + +```js +const myCarouselEl = document.querySelector('#myCarousel') +const carousel = bootstrap.Carousel.getInstance(myCarouselEl) // Retrieve a Carousel instance + +myCarouselEl.addEventListener('slid.bs.carousel', event => { + carousel.to('2') // Will slide to the slide 2 as soon as the transition to slide 1 is finished +}) + +carousel.to('1') // Will start sliding to the slide 1 and returns to the caller +carousel.to('2') // !! Will be ignored, as the transition to the slide 1 is not finished !! +``` + +#### `dispose` method + +While it may seem correct to use the `dispose` method immediately after `hide()`, it will lead to incorrect results. Here's an example of the problem use: + +```js +const myModal = document.querySelector('#myModal') +myModal.hide() // it is asynchronous + +myModal.addEventListener('shown.bs.hidden', event => { + myModal.dispose() +}) +``` + +### Default settings + +You can change the default settings for a plugin by modifying the plugin's `Constructor.Default` object: + +```js +// changes default for the modal plugin's `keyboard` option to false +bootstrap.Modal.Default.keyboard = false +``` + +## Methods and properties + +Every Bootstrap plugin exposes the following methods and static properties. + +{{< bs-table "table" >}} +| Method | Description | +| --- | --- | +| `dispose` | Destroys an element's modal. (Removes stored data on the DOM element) | +| `getInstance` | *Static* method which allows you to get the modal instance associated with a DOM element. | +| `getOrCreateInstance` | *Static* method which allows you to get the modal instance associated with a DOM element, or create a new one in case it wasn't initialized. | +{{< /bs-table >}} + +{{< bs-table "table" >}} +| Static property | Description | +| --- | --- | +| `NAME` | Returns the plugin name. (Example: `bootstrap.Tooltip.NAME`) | +| `VERSION` | The version of each of Bootstrap's plugins can be accessed via the `VERSION` property of the plugin's constructor (Example: `bootstrap.Tooltip.VERSION`) | +{{< /bs-table >}} + +## Sanitizer + +Tooltips and Popovers use our built-in sanitizer to sanitize options which accept HTML. + +The default `allowList` value is the following: + +```js +const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i +const DefaultAllowlist = { + // Global attributes allowed on any supplied element below. + '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], + a: ['target', 'href', 'title', 'rel'], + area: [], + b: [], + br: [], + col: [], + code: [], + div: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] +} +``` + +If you want to add new values to this default `allowList` you can do the following: + +```js +const myDefaultAllowList = bootstrap.Tooltip.Default.allowList + +// To allow table elements +myDefaultAllowList.table = [] + +// To allow td elements and data-bs-option attributes on td elements +myDefaultAllowList.td = ['data-bs-option'] + +// You can push your custom regex to validate your attributes. +// Be careful about your regular expressions being too lax +const myCustomRegex = /^data-my-app-[\w-]+/ +myDefaultAllowList['*'].push(myCustomRegex) +``` + +If you want to bypass our sanitizer because you prefer to use a dedicated library, for example [DOMPurify](https://www.npmjs.com/package/dompurify), you should do the following: + +```js +const yourTooltipEl = document.querySelector('#yourTooltip') +const tooltip = new bootstrap.Tooltip(yourTooltipEl, { + sanitizeFn(content) { + return DOMPurify.sanitize(content) + } +}) +``` + +## Optionally using jQuery + +**You don't need jQuery in Bootstrap 5**, but it's still possible to use our components with jQuery. If Bootstrap detects `jQuery` in the `window` object, it'll add all of our components in jQuery's plugin system. This allows you to do the following: + +```js +$('[data-bs-toggle="tooltip"]').tooltip() // to enable tooltips, with default configuration + +$('[data-bs-toggle="tooltip"]').tooltip({ boundary: 'clippingParents', customClass: 'myClass' }) // to initialize tooltips with given configuration + +$('#myTooltip').tooltip('show') // to trigger `show` method +``` + +The same goes for our other components. + +### No conflict + +Sometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances, namespace collisions can occasionally occur. If this happens, you may call `.noConflict` on the plugin you wish to revert the value of. + +```js +const bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value +$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality +``` + +Bootstrap does not officially support third-party JavaScript libraries like Prototype or jQuery UI. Despite `.noConflict` and namespaced events, there may be compatibility problems that you need to fix on your own. + +### jQuery events + +Bootstrap will detect jQuery if `jQuery` is present in the `window` object and there is no `data-bs-no-jquery` attribute set on `<body>`. If jQuery is found, Bootstrap will emit events thanks to jQuery's event system. So if you want to listen to Bootstrap's events, you'll have to use the jQuery methods (`.on`, `.one`) instead of `addEventListener`. + +```js +$('#myTab a').on('shown.bs.tab', () => { + // do something... +}) +``` + +## Disabled JavaScript + +Bootstrap's plugins have no special fallback when JavaScript is disabled. If you care about the user experience in this case, use [`<noscript>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript) to explain the situation (and how to re-enable JavaScript) to your users, and/or add your own custom fallbacks. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/parcel.md b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/parcel.md new file mode 100644 index 000000000..674a39837 --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/parcel.md @@ -0,0 +1,158 @@ +--- +layout: docs +title: "Bootstrap & Parcel" +description: The official guide for how to include and bundle Bootstrap's CSS and JavaScript in your project using Parcel. +group: getting-started +toc: true +--- + +<img class="mb-4 img-fluid rounded-3" srcset="/docs/{{< param docs_version >}}/assets/img/guides/bootstrap-parcel.png, /docs/{{< param docs_version >}}/assets/img/guides/bootstrap-parcel@2x.png 2x" src="/docs/{{< param docs_version >}}/assets/img/guides/bootstrap-parcel.png" width="2000" height="1000" alt=""> + +{{< callout >}} +**Want to skip to the end?** Download the source code and working demo for this guide from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/parcel). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/parcel?file=index.html) but not run it because Parcel isn't currently supported there. +{{< /callout >}} + +## Setup + +We're building a Parcel project with Bootstrap from scratch, so there are some prerequisites and up front steps before we can really get started. This guide requires you to have Node.js installed and some familiarity with the terminal. + +1. **Create a project folder and setup npm.** We'll create the `my-project` folder and initialize npm with the `-y` argument to avoid it asking us all the interactive questions. + + ```sh + mkdir my-project && cd my-project + npm init -y + ``` + +2. **Install Parcel.** Unlike our Webpack guide, there's only a single build tool dependency here. Parcel will automatically install language transformers (like Sass) as it detects them. We use `--save-dev` to signal that this dependency is only for development use and not for production. + + ```sh + npm i --save-dev parcel + ``` + +3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Popper since our dropdowns, popovers, and tooltips depend on it for their positioning. If you don't plan on using those components, you can omit Popper here. + + ```sh + npm i --save bootstrap @popperjs/core + ``` + +Now that we have all the necessary dependencies installed, we can get to work creating the project files and importing Bootstrap. + +## Project structure + +We've already created the `my-project` folder and initialized npm. Now we'll also create our `src` folder, stylesheet, and JavaScript file to round out the project structure. Run the following from `my-project`, or manually create the folder and file structure shown below. + +```sh +mkdir {src,src/js,src/scss} +touch src/index.html src/js/main.js src/scss/styles.scss +``` + +When you're done, your complete project should look like this: + +```text +my-project/ +├── src/ +│ ├── js/ +│ │ └── main.js +│ ├── scss/ +│ │ └── styles.scss +│ └── index.html +├── package-lock.json +└── package.json +``` + +At this point, everything is in the right place, but Parcel needs an HTML page and npm script to start our server. + +## Configure Parcel + +With dependencies installed and our project folder ready for us to start coding, we can now configure Parcel and run our project locally. Parcel itself requires no configuration file by design, but we do need an npm script and an HTML file to start our server. + +1. **Fill in the `src/index.html` file.** Parcel needs a page to render, so we use our `index.html` page to set up some basic HTML, including our CSS and JavaScript files. + + ```html + <!doctype html> + <html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Bootstrap w/ Parcel</title> + <link rel="stylesheet" href="scss/styles.scss"> + <script type="module" src="js/main.js"></script> + </head> + <body> + <div class="container py-4 px-3 mx-auto"> + <h1>Hello, Bootstrap and Parcel!</h1> + <button class="btn btn-primary">Primary button</button> + </div> + </body> + </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. + + 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`. + +2. **Add the Parcel npm scripts.** Open the `package.json` and add the following `start` script to the `scripts` object. We'll use this script to start our Parcel development server and render the HTML file we created after it's compiled into the `dist` directory. + + ```json + { + // ... + "scripts": { + "start": "parcel serve src/index.html --public-url / --dist-dir dist", + "test": "echo \"Error: no test specified\" && exit 1" + }, + // ... + } + ``` + +3. **And finally, we can start Parcel.** From the `my-project` folder in your terminal, run that newly added npm script: + + ```sh + npm start + ``` + + <img class="img-fluid" src="/docs/{{< param docs_version >}}/assets/img/guides/parcel-dev-server.png" alt="Parcel dev server running"> + +In the next and final section to this guide, we'll import all of Bootstrap's CSS and JavaScript. + +## Import Bootstrap + +Importing Bootstrap into Parcel requires two imports, one into our `styles.scss` and one into our `main.js`. + +1. **Import Bootstrap's CSS.** Add the following to `src/scss/styles.scss` to import all of Bootstrap's source Sass. + + ```scss + // Import all of Bootstrap's CSS + @import "~bootstrap/scss/bootstrap"; + ``` + + *You can also import our stylesheets individually if you want. [Read our Sass import docs]({{< docsref "/customize/sass#importing" >}}) for details.* + +2. **Import Bootstrap's JS.** Add the following to `src/js/main.js` to import all of Bootstrap's JS. Popper will be imported automatically through Bootstrap. + + <!-- eslint-skip --> + ```js + // Import all of Bootstrap's JS + import * as bootstrap from 'bootstrap' + ``` + + You can also import JavaScript plugins individually as needed to keep bundle sizes down: + + <!-- eslint-skip --> + ```js + import Alert from 'bootstrap/js/dist/alert' + + // or, specify which plugins you need: + import { Tooltip, Toast, Popover } from 'bootstrap' + ``` + + *[Read our JavaScript docs]({{< docsref "/getting-started/javascript/" >}}) for more information on how to use Bootstrap's plugins.* + +3. **And you're done! 🎉** With Bootstrap's source Sass and JS fully loaded, your local development server should now look like this. + + <img class="img-fluid" src="/docs/{{< param docs_version >}}/assets/img/guides/parcel-dev-server-bootstrap.png" alt="Parcel dev server running with Bootstrap"> + + Now you can start adding any Bootstrap components you want to use. Be sure to [check out the complete Parcel example project](https://github.com/twbs/examples/tree/main/parcel) for how to include additional custom Sass and optimize your build by importing only the parts of Bootstrap's CSS and JS that you need. + +{{< markdown >}} +{{< partial "guide-footer.md" >}} +{{< /markdown >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/rfs.md b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/rfs.md index 5aa6840a4..5aa6840a4 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/rfs.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/rfs.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/rtl.md b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/rtl.md index 549104c6f..19d33ffb4 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/getting-started/rtl.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/rtl.md @@ -46,10 +46,10 @@ You can see the above requirements reflected in this modified RTL starter templa <!-- Bootstrap CSS --> <link rel="stylesheet" href="{{< param "cdn.css_rtl" >}}" integrity="{{< param "cdn.css_rtl_hash" >}}" crossorigin="anonymous"> - <title>مرحبا بالعالم!</title> + <title>مرحبًا بالعالم!</title> </head> <body> - <h1>مرحبا بالعالم!</h1> + <h1>مرحبًا بالعالم!</h1> <!-- Optional JavaScript; choose one of the two! --> @@ -111,7 +111,7 @@ dt { In the case you're using a custom font, be aware that not all fonts support the non-Latin alphabet. To switch from Pan-European to Arabic family, you may need to use `/*rtl:insert: {value}*/` in your font stack to modify the names of font families. -For example, to switch from `Helvetica Neue Webfont` for LTR to `Helvetica Neue Arabic` for RTL, your Sass code look like this: +For example, to switch from `Helvetica Neue` font for LTR to `Helvetica Neue Arabic` for RTL, your Sass code could look like this: ```scss $font-family-sans-serif: @@ -174,7 +174,7 @@ While this approach is understandable, please pay attention to the following: ## The breadcrumb case -The [breadcrumb separator]({{< docsref "/components/breadcrumb" >}}/#changing-the-separator) is the only case requiring its own brand new variable— namely `$breadcrumb-divider-flipped` —defaulting to `$breadcrumb-divider`. +The [breadcrumb separator]({{< docsref "/components/breadcrumb" >}}/#changing-the-separator) is the only case requiring its own brand-new variable— namely `$breadcrumb-divider-flipped` —defaulting to `$breadcrumb-divider`. ## Additional resources diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/vite.md b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/vite.md new file mode 100644 index 000000000..ca71bbe31 --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/vite.md @@ -0,0 +1,197 @@ +--- +layout: docs +title: "Bootstrap & Vite" +description: The official guide for how to include and bundle Bootstrap's CSS and JavaScript in your project using Vite. +group: getting-started +toc: true +--- + +<img class="mb-4 img-fluid rounded-3" srcset="/docs/{{< param docs_version >}}/assets/img/guides/bootstrap-vite.png, /docs/{{< param docs_version >}}/assets/img/guides/bootstrap-vite@2x.png 2x" src="/docs/{{< param docs_version >}}/assets/img/guides/bootstrap-vite.png" width="2000" height="1000" alt=""> + +{{< callout >}} +**Want to skip to the end?** Download the source code and working demo for this guide from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/vite). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/vite?file=index.html) for live editing. +{{< /callout >}} + +## Setup + +We're building a Vite project with Bootstrap from scratch, so there are some prerequisites and up front steps before we can really get started. This guide requires you to have Node.js installed and some familiarity with the terminal. + +1. **Create a project folder and setup npm.** We'll create the `my-project` folder and initialize npm with the `-y` argument to avoid it asking us all the interactive questions. + + ```sh + mkdir my-project && cd my-project + npm init -y + ``` + +2. **Install Vite.** Unlike our Webpack guide, there’s only a single build tool dependency here. We use `--save-dev` to signal that this dependency is only for development use and not for production. + + ```sh + npm i --save-dev vite + ``` + +3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Popper since our dropdowns, popovers, and tooltips depend on it for their positioning. If you don't plan on using those components, you can omit Popper here. + + ```sh + npm i --save bootstrap @popperjs/core + ``` +4. **Install additional dependency.** In addition to Vite and Bootstrap, we need another dependency (Sass) to properly import and bundle Bootstrap's CSS. + + ```sh + npm i --save-dev sass + ``` + +Now that we have all the necessary dependencies installed and setup, we can get to work creating the project files and importing Bootstrap. + +## Project structure + +We've already created the `my-project` folder and initialized npm. Now we'll also create our `src` folder, stylesheet, and JavaScript file to round out the project structure. Run the following from `my-project`, or manually create the folder and file structure shown below. + +```sh +mkdir {src,src/js,src/scss} +touch src/index.html src/js/main.js src/scss/styles.scss vite.config.js +``` + +When you're done, your complete project should look like this: + +```text +my-project/ +├── src/ +│ ├── js/ +│ │ └── main.js +│ └── scss/ +│ | └── styles.scss +| └── index.html +├── package-lock.json +├── package.json +└── vite.config.js +``` + +At this point, everything is in the right place, but Vite won't work because we haven't filled in our `vite.config.js` yet. + +## Configure Vite + +With dependencies installed and our project folder ready for us to start coding, we can now configure Vite and run our project locally. + +1. **Open `vite.config.js` in your editor.** Since it's blank, we'll need to add some boilerplate config to it so we can start our server. This part of the config tells Vite were to look for our project's JavaScript and how the development server should behave (pulling from the `src` folder with hot reload). + + <!-- eslint-skip --> + ```js + const path = require('path') + + export default { + root: path.resolve(__dirname, 'src'), + server: { + port: 8080, + hot: true + } + } + ``` + +2. **Next we fill in `src/index.html`.** This is the HTML page Vite will load in the browser to utilize the bundled CSS and JS we'll add to it in later steps. + + ```html + <!doctype html> + <html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Bootstrap w/ Vite</title> + </head> + <body> + <div class="container py-4 px-3 mx-auto"> + <h1>Hello, Bootstrap and Vite!</h1> + <button class="btn btn-primary">Primary button</button> + </div> + <script type="module" src="./js/main.js"></script> + </body> + </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 Vite. + +3. **Now we need an npm script to run Vite.** Open `package.json` and add the `start` script shown below (you should already have the test script). We'll use this script to start our local Vite dev server. + + ```json + { + // ... + "scripts": { + "start": "vite", + "test": "echo \"Error: no test specified\" && exit 1" + }, + // ... + } + ``` + +4. **And finally, we can start Vite.** From the `my-project` folder in your terminal, run that newly added npm script: + + ```sh + npm start + ``` + + <img class="img-fluid" src="/docs/{{< param docs_version >}}/assets/img/guides/vite-dev-server.png" alt="Vite dev server running"> + +In the next and final section to this guide, we’ll import all of Bootstrap’s CSS and JavaScript. + +## Import Bootstrap + +1. **Set up Bootstrap's Sass import in `vite.config.js`.** Your configuration file is now complete and should match the snippet below. The only new part here is the `resolve` section—we use this to add an alias to our source files inside `node_modules` to keep imports as simple as possible. + + <!-- eslint-skip --> + ```js + const path = require('path') + + export default { + root: path.resolve(__dirname, 'src'), + resolve: { + alias: { + '~bootstrap': path.resolve(__dirname, 'node_modules/bootstrap'), + } + }, + server: { + port: 8080, + hot: true + } + } + ``` + +2. **Now, let's import Bootstrap's CSS.** Add the following to `src/scss/styles.scss` to import all of Bootstrap's source Sass. + + ```scss + // Import all of Bootstrap's CSS + @import "~bootstrap/scss/bootstrap"; + ``` + + *You can also import our stylesheets individually if you want. [Read our Sass import docs]({{< docsref "/customize/sass#importing" >}}) for details.* + +3. **Next we load the CSS and import Bootstrap's JavaScript.** Add the following to `src/js/main.js` to load the CSS and import all of Bootstrap's JS. Popper will be imported automatically through Bootstrap. + + <!-- eslint-skip --> + ```js + // Import our custom CSS + import '../scss/styles.scss' + + // Import all of Bootstrap's JS + import * as bootstrap from 'bootstrap' + ``` + + You can also import JavaScript plugins individually as needed to keep bundle sizes down: + + <!-- eslint-skip --> + ```js + import Alert from 'bootstrap/js/dist/alert'; + + // or, specify which plugins you need: + import { Tooltip, Toast, Popover } from 'bootstrap'; + ``` + + *[Read our JavaScript docs]({{< docsref "/getting-started/javascript/" >}}) for more information on how to use Bootstrap's plugins.* + +4. **And you're done! 🎉** With Bootstrap's source Sass and JS fully loaded, your local development server should now look like this. + + <img class="img-fluid" src="/docs/{{< param docs_version >}}/assets/img/guides/vite-dev-server-bootstrap.png" alt="Vite dev server running with Bootstrap"> + + Now you can start adding any Bootstrap components you want to use. Be sure to [check out the complete Vite example project](https://github.com/twbs/examples/tree/main/vite) for how to include additional custom Sass and optimize your build by importing only the parts of Bootstrap's CSS and JS that you need. + +{{< markdown >}} +{{< partial "guide-footer.md" >}} +{{< /markdown >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/webpack.md b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/webpack.md new file mode 100644 index 000000000..e314ecf6a --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/getting-started/webpack.md @@ -0,0 +1,234 @@ +--- +layout: docs +title: "Bootstrap & Webpack" +description: The official guide for how to include and bundle Bootstrap's CSS and JavaScript in your project using Webpack. +group: getting-started +toc: true +--- + +<img class="mb-4 img-fluid rounded-3" srcset="/docs/{{< param docs_version >}}/assets/img/guides/bootstrap-webpack.png, /docs/{{< param docs_version >}}/assets/img/guides/bootstrap-webpack@2x.png 2x" src="/docs/{{< param docs_version >}}/assets/img/guides/bootstrap-webpack.png" width="2000" height="1000" alt=""> + +{{< callout >}} +**Want to skip to the end?** Download the source code and working demo for this guide from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/webpack). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/webpack?file=index.html) for live editing. +{{< /callout >}} + +## Setup + +We're building a Webpack project with Bootstrap from scratch, so there are some prerequisites and up front steps before we can really get started. This guide requires you to have Node.js installed and some familiarity with the terminal. + +1. **Create a project folder and setup npm.** We'll create the `my-project` folder and initialize npm with the `-y` argument to avoid it asking us all the interactive questions. + + ```sh + mkdir my-project && cd my-project + npm init -y + ``` + +2. **Install Webpack.** Next we need to install our Webpack development dependencies: `webpack` for the core of Webpack, `webpack-cli` so we can run Webpack commands from the terminal, and `webpack-dev-server` so we can run a local development server. We use `--save-dev` to signal that these dependencies are only for development use and not for production. + + ```sh + npm i --save-dev webpack webpack-cli webpack-dev-server + ``` + +3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Popper since our dropdowns, popovers, and tooltips depend on it for their positioning. If you don't plan on using those components, you can omit Popper here. + + ```sh + npm i --save bootstrap @popperjs/core + ``` + +4. **Install additional dependencies.** In addition to Webpack and Bootstrap, we need a few more dependencies to properly import and bundle Bootstrap's CSS and JS with Webpack. These include Sass, some loaders, and Autoprefixer. + + ```sh + npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader + ``` + +Now that we have all the necessary dependencies installed, we can get to work creating the project files and importing Bootstrap. + +## Project structure + +We've already created the `my-project` folder and initialized npm. Now we'll also create our `src` and `dist` folders to round out the project structure. Run the following from `my-project`, or manually create the folder and file structure shown below. + +```sh +mkdir {dist,src,src/js,src/scss} +touch dist/index.html src/js/main.js src/scss/styles.scss webpack.config.js +``` + +When you're done, your complete project should look like this: + +```text +my-project/ +├── dist/ +│ └── index.html +├── src/ +│ ├── js/ +│ │ └── main.js +│ └── scss/ +│ └── styles.scss +├── package-lock.json +├── package.json +└── webpack.config.js +``` + +At this point, everything is in the right place, but Webpack won't work because we haven't filled in our `webpack.config.js` yet. + +## Configure Webpack + +With dependencies installed and our project folder ready for us to start coding, we can now configure Webpack and run our project locally. + +1. **Open `webpack.config.js` in your editor.** Since it's blank, we'll need to add some boilerplate config to it so we can start our server. This part of the config tells Webpack were to look for our project's JavaScript, where to output the compiled code to (`dist`), and how the development server should behave (pulling from the `dist` folder with hot reload). + + ```js + const path = require('path') + + module.exports = { + entry: './src/js/main.js', + output: { + filename: 'main.js', + path: path.resolve(__dirname, 'dist') + }, + devServer: { + static: path.resolve(__dirname, 'dist'), + port: 8080, + hot: true + } + } + ``` + +2. **Next we fill in our `dist/index.html`.** This is the HTML page Webpack will load in the browser to utilize the bundled CSS and JS we'll add to it in later steps. Before we can do that, we have to give it something to render and include the `output` JS from the previous step. + + ```html + <!doctype html> + <html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Bootstrap w/ Webpack</title> + </head> + <body> + <div class="container py-4 px-3 mx-auto"> + <h1>Hello, Bootstrap and Webpack!</h1> + <button class="btn btn-primary">Primary button</button> + </div> + <script src="./main.js"></script> + </body> + </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. + +3. **Now we need an npm script to run Webpack.** Open `package.json` and add the `start` script shown below (you should already have the test script). We'll use this script to start our local Webpack dev server. + + ```json + { + // ... + "scripts": { + "start": "webpack serve --mode development", + "test": "echo \"Error: no test specified\" && exit 1" + }, + // ... + } + ``` + +4. **And finally, we can start Webpack.** From the `my-project` folder in your terminal, run that newly added npm script: + + ```sh + npm start + ``` + + <img class="img-fluid" src="/docs/{{< param docs_version >}}/assets/img/guides/webpack-dev-server.png" alt="Webpack dev server running"> + +In the next and final section to this guide, we'll set up the Webpack loaders and import all of Bootstrap's CSS and JavaScript. + +## Import Bootstrap + +Importing Bootstrap into Webpack requires the loaders we installed in the first section. We've installed them with npm, but now Webpack needs to be configured to use them. + +1. **Set up the loaders in `webpack.config.js`.** Your configuration file is now complete and should match the snippet below. The only new part here is the `module` section. + + ```js + const path = require('path') + + module.exports = { + entry: './src/js/main.js', + output: { + filename: 'main.js', + path: path.resolve(__dirname, 'dist') + }, + devServer: { + static: path.resolve(__dirname, 'dist'), + port: 8080, + hot: true + }, + module: { + rules: [ + { + test: /\.(scss)$/, + use: [ + { + loader: 'style-loader' + }, + { + loader: 'css-loader' + }, + { + loader: 'postcss-loader', + options: { + postcssOptions: { + plugins: () => [ + require('autoprefixer') + ] + } + } + }, + { + loader: 'sass-loader' + } + ] + } + ] + } + } + ``` + + Here's a recap of why we need all these loaders. `style-loader` injects the CSS into a `<style>` element in the `<head>` of the HTML page, `css-loader` helps with using `@import` and `url()`, `postcss-loader` is required for Autoprefixer, and `sass-loader` allows us to use Sass. + +2. **Now, let's import Bootstrap's CSS.** Add the following to `src/scss/styles.scss` to import all of Bootstrap's source Sass. + + ```scss + // Import all of Bootstrap's CSS + @import "~bootstrap/scss/bootstrap"; + ``` + + *You can also import our stylesheets individually if you want. [Read our Sass import docs]({{< docsref "/customize/sass#importing" >}}) for details.* + +3. **Next we load the CSS and import Bootstrap's JavaScript.** Add the following to `src/js/main.js` to load the CSS and import all of Bootstrap's JS. Popper will be imported automatically through Bootstrap. + + <!-- eslint-skip --> + ```js + // Import our custom CSS + import '../scss/styles.scss' + + // Import all of Bootstrap's JS + import * as bootstrap from 'bootstrap' + ``` + + You can also import JavaScript plugins individually as needed to keep bundle sizes down: + + <!-- eslint-skip --> + ```js + import Alert from 'bootstrap/js/dist/alert' + + // or, specify which plugins you need: + import { Tooltip, Toast, Popover } from 'bootstrap' + ``` + + *[Read our JavaScript docs]({{< docsref "/getting-started/javascript/" >}}) for more information on how to use Bootstrap's plugins.* + +4. **And you're done! 🎉** With Bootstrap's source Sass and JS fully loaded, your local development server should now look like this. + + <img class="img-fluid" src="/docs/{{< param docs_version >}}/assets/img/guides/webpack-dev-server-bootstrap.png" alt="Webpack dev server running with Bootstrap"> + + Now you can start adding any Bootstrap components you want to use. Be sure to [check out the complete Webpack example project](https://github.com/twbs/examples/tree/main/webpack) for how to include additional custom Sass and optimize your build by importing only the parts of Bootstrap's CSS and JS that you need. + +{{< markdown >}} +{{< partial "guide-footer.md" >}} +{{< /markdown >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/clearfix.md b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/clearfix.md index f1329d5b4..c888610b7 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/clearfix.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/clearfix.md @@ -3,7 +3,7 @@ layout: docs title: Clearfix description: Quickly and easily clear floated content within a container by adding a clearfix utility. group: helpers -aliases: "/docs/5.1/helpers/" +aliases: "/docs/5.2/helpers/" --- Easily clear `float`s by adding `.clearfix` **to the parent element**. Can also be used as a mixin. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/color-background.md b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/color-background.md new file mode 100644 index 000000000..c4174845c --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/color-background.md @@ -0,0 +1,52 @@ +--- +layout: docs +title: Color & background +description: Set a background color with contrasting foreground color. +group: helpers +toc: true +added: "5.2" +--- + +## Overview + +{{< added-in "5.2.0" >}} + +Color and background helpers combine the power of our [`.text-*` utilities]({{< docsref "/utilities/colors" >}}) and [`.bg-*` utilities]({{< docsref "/utilities/background" >}}) in one class. Using our Sass `color-contrast()` function, we automatically determine a contrasting `color` for a particular `background-color`. + +{{< callout warning >}} +**Heads up!** There's currently no support for a CSS-native `color-contrast` function, so we use our own via Sass. This means that customizing our theme colors via CSS variables may cause color contrast issues with these utilities. +{{< /callout >}} + +{{< example >}} +{{< text-bg.inline >}} +{{- range (index $.Site.Data "theme-colors") }} +<div class="text-bg-{{ .name }} p-3">{{ .name | title }} with contrasting color</div> +{{- end -}} +{{< /text-bg.inline >}} +{{< /example >}} + +## With components + +Use them in place of combined `.text-*` and `.bg-*` classes, like on [badges]({{< docsref "/components/badge#background-colors" >}}): + +{{< example >}} +<span class="badge text-bg-primary">Primary</span> +<span class="badge text-bg-info">Info</span> +{{< /example >}} + +Or on [cards]({{< docsref "/components/card#background-and-color" >}}): + +{{< example >}} +<div class="card text-bg-primary mb-3" style="max-width: 18rem;"> + <div class="card-header">Header</div> + <div class="card-body"> + <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p> + </div> +</div> +<div class="card text-bg-info mb-3" style="max-width: 18rem;"> + <div class="card-header">Header</div> + <div class="card-body"> + <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p> + </div> +</div> +{{< /example >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/colored-links.md b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/colored-links.md index e940196ff..e940196ff 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/colored-links.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/colored-links.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/position.md b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/position.md index d54c1c795..b4e1f71f9 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/position.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/position.md @@ -24,7 +24,7 @@ Position an element at the bottom of the viewport, from edge to edge. Be sure yo ## Sticky top -Position an element at the top of the viewport, from edge to edge, but only after you scroll past it. The `.sticky-top` utility uses CSS's `position: sticky`, which isn't fully supported in all browsers. +Position an element at the top of the viewport, from edge to edge, but only after you scroll past it. ```html <div class="sticky-top">...</div> @@ -39,4 +39,25 @@ Responsive variations also exist for `.sticky-top` utility. <div class="sticky-md-top">Stick to the top on viewports sized MD (medium) or wider</div> <div class="sticky-lg-top">Stick to the top on viewports sized LG (large) or wider</div> <div class="sticky-xl-top">Stick to the top on viewports sized XL (extra-large) or wider</div> +<div class="sticky-xxl-top">Stick to the top on viewports sized XXL (extra-extra-large) or wider</div> +``` + +## Sticky bottom + +Position an element at the bottom of the viewport, from edge to edge, but only after you scroll past it. + +```html +<div class="sticky-bottom">...</div> +``` + +## Responsive sticky bottom + +Responsive variations also exist for `.sticky-bottom` utility. + +```html +<div class="sticky-sm-bottom">Stick to the bottom on viewports sized SM (small) or wider</div> +<div class="sticky-md-bottom">Stick to the bottom on viewports sized MD (medium) or wider</div> +<div class="sticky-lg-bottom">Stick to the bottom on viewports sized LG (large) or wider</div> +<div class="sticky-xl-bottom">Stick to the bottom on viewports sized XL (extra-large) or wider</div> +<div class="sticky-xxl-bottom">Stick to the bottom on viewports sized XXL (extra-extra-large) or wider</div> ``` diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/ratio.md b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/ratio.md index 771bc07cb..771bc07cb 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/ratio.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/ratio.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/stacks.md b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/stacks.md index 20ca86aa0..e1960c573 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/stacks.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/stacks.md @@ -4,6 +4,7 @@ title: Stacks description: Shorthand helpers that build on top of our flexbox utilities to make component layout faster and easier than ever. group: helpers toc: true +added: "5.1" --- Stacks offer a shortcut for applying a number of flexbox properties to quickly and easily create layouts in Bootstrap. All credit for the concept and implementation goes to the open source [Pylon project](https://almonk.github.io/pylon/). diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/stretched-link.md b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/stretched-link.md index 93bffeb31..93bffeb31 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/stretched-link.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/stretched-link.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/text-truncation.md b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/text-truncation.md index 799f2059b..799f2059b 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/text-truncation.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/text-truncation.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/vertical-rule.md b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/vertical-rule.md index 8d0d6141f..b734f61d4 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/vertical-rule.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/vertical-rule.md @@ -4,6 +4,7 @@ title: Vertical rule description: Use the custom vertical rule helper to create vertical dividers like the `<hr>` element. group: helpers toc: true +added: "5.1" --- ## How it works diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/visually-hidden.md b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/visually-hidden.md index 245546994..112406543 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/helpers/visually-hidden.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/helpers/visually-hidden.md @@ -3,7 +3,7 @@ layout: docs title: Visually hidden description: Use these helpers to visually hide elements but keep them accessible to assistive technologies. group: helpers -aliases: "/docs/5.1/helpers/screen-readers/" +aliases: "/docs/5.2/helpers/screen-readers/" --- Visually hide an element while still allowing it to be exposed to assistive technologies (such as screen readers) with `.visually-hidden`. Use `.visually-hidden-focusable` to visually hide an element by default, but to display it when it's focused (e.g. by a keyboard-only user). `.visually-hidden-focusable` can also be applied to a container–thanks to `:focus-within`, the container will be displayed when any child element of the container receives focus. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/layout/breakpoints.md b/vendor/twbs/bootstrap/site/content/docs/5.2/layout/breakpoints.md index a11dfb050..df56924b3 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/layout/breakpoints.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/layout/breakpoints.md @@ -3,7 +3,7 @@ layout: docs title: Breakpoints description: Breakpoints are customizable widths that determine how your responsive layout behaves across device or viewport sizes in Bootstrap. group: layout -aliases: "/docs/5.1/layout/" +aliases: "/docs/5.2/layout/" toc: true --- @@ -19,47 +19,17 @@ toc: true Bootstrap includes six default breakpoints, sometimes referred to as _grid tiers_, for building responsively. These breakpoints can be customized if you're using our source Sass files. -<table class="table"> - <thead> - <tr> - <th>Breakpoint</th> - <th>Class infix</th> - <th>Dimensions</th> - </tr> - </thead> - <tbody> - <tr> - <td>X-Small</td> - <td><em>None</em></td> - <td><576px</td> - </tr> - <tr> - <td>Small</td> - <td><code>sm</code></td> - <td>≥576px</td> - </tr> - <tr> - <td>Medium</td> - <td><code>md</code></td> - <td>≥768px</td> - </tr> - <tr> - <td>Large</td> - <td><code>lg</code></td> - <td>≥992px</td> - </tr> - <tr> - <td>Extra large</td> - <td><code>xl</code></td> - <td>≥1200px</td> - </tr> - <tr> - <td>Extra extra large</td> - <td><code>xxl</code></td> - <td>≥1400px</td> - </tr> - </tbody> -</table> +{{< bs-table "table" >}} +| Breakpoint | Class infix | Dimensions | +| --- | --- | --- | +| Extra small | <em>None</em> |<576px | +| Small | `sm` | ≥576px | +| Medium | `md` | ≥768px | +| Large | `lg` | ≥992px | +| Extra large | `xl` | ≥1200px | +| Extra extra large | `xxl` | ≥1400px | +{{< /bs-table >}} + Each breakpoint was chosen to comfortably hold containers whose widths are multiples of 12. Breakpoints are also representative of a subset of common device sizes and viewport dimensions—they don't specifically target every use case or device. Instead, the ranges provide a strong and consistent foundation to build on for nearly any device. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/layout/columns.md b/vendor/twbs/bootstrap/site/content/docs/5.2/layout/columns.md index 5c859065a..e2dbd3f17 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/layout/columns.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/layout/columns.md @@ -25,7 +25,7 @@ Use flexbox alignment utilities to vertically and horizontally align columns. ### Vertical alignment {{< example class="bd-example-row bd-example-row-flex-cols" >}} -<div class="container"> +<div class="container text-center"> <div class="row align-items-start"> <div class="col"> One of three columns @@ -63,7 +63,7 @@ Use flexbox alignment utilities to vertically and horizontally align columns. {{< /example >}} {{< example class="bd-example-row bd-example-row-flex-cols" >}} -<div class="container"> +<div class="container text-center"> <div class="row"> <div class="col align-self-start"> One of three columns @@ -81,7 +81,7 @@ Use flexbox alignment utilities to vertically and horizontally align columns. ### Horizontal alignment {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row justify-content-start"> <div class="col-4"> One of two columns @@ -152,7 +152,7 @@ If more than 12 columns are placed within a single row, each group of extra colu Breaking columns to a new line in flexbox requires a small hack: add an element with `width: 100%` wherever you want to wrap your columns to a new line. Normally this is accomplished with multiple `.row`s, but not every implementation method can account for this. {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row"> <div class="col-6 col-sm-3">.col-6 .col-sm-3</div> <div class="col-6 col-sm-3">.col-6 .col-sm-3</div> @@ -169,7 +169,7 @@ Breaking columns to a new line in flexbox requires a small hack: add an element You may also apply this break at specific breakpoints with our [responsive display utilities]({{< docsref "/utilities/display" >}}). {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row"> <div class="col-6 col-sm-4">.col-6 .col-sm-4</div> <div class="col-6 col-sm-4">.col-6 .col-sm-4</div> @@ -190,7 +190,7 @@ You may also apply this break at specific breakpoints with our [responsive displ Use `.order-` classes for controlling the **visual order** of your content. These classes are responsive, so you can set the `order` by breakpoint (e.g., `.order-1.order-md-2`). Includes support for `1` through `5` across all six grid tiers. {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row"> <div class="col"> First in DOM, no order applied @@ -208,7 +208,7 @@ Use `.order-` classes for controlling the **visual order** of your content. Thes There are also responsive `.order-first` and `.order-last` classes that change the `order` of an element by applying `order: -1` and `order: 6`, respectively. These classes can also be intermixed with the numbered `.order-*` classes as needed. {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row"> <div class="col order-last"> First in DOM, ordered last @@ -232,7 +232,7 @@ You can offset grid columns in two ways: our responsive `.offset-` grid classes Move columns to the right using `.offset-md-*` classes. These classes increase the left margin of a column by `*` columns. For example, `.offset-md-4` moves `.col-md-4` over four columns. {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row"> <div class="col-md-4">.col-md-4</div> <div class="col-md-4 offset-md-4">.col-md-4 .offset-md-4</div> @@ -250,7 +250,7 @@ Move columns to the right using `.offset-md-*` classes. These classes increase t In addition to column clearing at responsive breakpoints, you may need to reset offsets. See this in action in [the grid example]({{< docsref "/examples/grid" >}}). {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row"> <div class="col-sm-5 col-md-6">.col-sm-5 .col-md-6</div> <div class="col-sm-5 offset-sm-2 col-md-6 offset-md-0">.col-sm-5 .offset-sm-2 .col-md-6 .offset-md-0</div> @@ -267,7 +267,7 @@ In addition to column clearing at responsive breakpoints, you may need to reset With the move to flexbox in v4, you can use margin utilities like `.me-auto` to force sibling columns away from one another. {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row"> <div class="col-md-4">.col-md-4</div> <div class="col-md-4 ms-auto">.col-md-4 .ms-auto</div> @@ -285,7 +285,7 @@ With the move to flexbox in v4, you can use margin utilities like `.me-auto` to ## Standalone column classes -The `.col-*` classes can also be used outside a `.row` to give an element a specific width. Whenever column classes are used as non direct children of a row, the paddings are omitted. +The `.col-*` classes can also be used outside a `.row` to give an element a specific width. Whenever column classes are used as non-direct children of a row, the paddings are omitted. {{< example >}} <div class="col-3 bg-light p-3 border"> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/layout/containers.md b/vendor/twbs/bootstrap/site/content/docs/5.2/layout/containers.md index 456225b94..6801aca6b 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/layout/containers.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/layout/containers.md @@ -13,109 +13,24 @@ Containers are the most basic layout element in Bootstrap and are **required whe Bootstrap comes with three different containers: - `.container`, which sets a `max-width` at each responsive breakpoint -- `.container-fluid`, which is `width: 100%` at all breakpoints - `.container-{breakpoint}`, which is `width: 100%` until the specified breakpoint +- `.container-fluid`, which is `width: 100%` at all breakpoints The table below illustrates how each container's `max-width` compares to the original `.container` and `.container-fluid` across each breakpoint. See them in action and compare them in our [Grid example]({{< docsref "/examples/grid#containers" >}}). -<table class="table"> - <thead> - <tr> - <td class="border-dark"></td> - <th scope="col"> - Extra small<br> - <span class="fw-normal"><576px</span> - </th> - <th scope="col"> - Small<br> - <span class="fw-normal">≥576px</span> - </th> - <th scope="col"> - Medium<br> - <span class="fw-normal">≥768px</span> - </th> - <th scope="col"> - Large<br> - <span class="fw-normal">≥992px</span> - </th> - <th scope="col"> - X-Large<br> - <span class="fw-normal">≥1200px</span> - </th> - <th scope="col"> - XX-Large<br> - <span class="fw-normal">≥1400px</span> - </th> - </tr> - </thead> - <tbody> - <tr> - <th scope="row" class="fw-normal"><code>.container</code></th> - <td class="text-muted">100%</td> - <td>540px</td> - <td>720px</td> - <td>960px</td> - <td>1140px</td> - <td>1320px</td> - </tr> - <tr> - <th scope="row" class="fw-normal"><code>.container-sm</code></th> - <td class="text-muted">100%</td> - <td>540px</td> - <td>720px</td> - <td>960px</td> - <td>1140px</td> - <td>1320px</td> - </tr> - <tr> - <th scope="row" class="fw-normal"><code>.container-md</code></th> - <td class="text-muted">100%</td> - <td class="text-muted">100%</td> - <td>720px</td> - <td>960px</td> - <td>1140px</td> - <td>1320px</td> - </tr> - <tr> - <th scope="row" class="fw-normal"><code>.container-lg</code></th> - <td class="text-muted">100%</td> - <td class="text-muted">100%</td> - <td class="text-muted">100%</td> - <td>960px</td> - <td>1140px</td> - <td>1320px</td> - </tr> - <tr> - <th scope="row" class="fw-normal"><code>.container-xl</code></th> - <td class="text-muted">100%</td> - <td class="text-muted">100%</td> - <td class="text-muted">100%</td> - <td class="text-muted">100%</td> - <td>1140px</td> - <td>1320px</td> - </tr> - <tr> - <th scope="row" class="fw-normal"><code>.container-xxl</code></th> - <td class="text-muted">100%</td> - <td class="text-muted">100%</td> - <td class="text-muted">100%</td> - <td class="text-muted">100%</td> - <td class="text-muted">100%</td> - <td>1320px</td> - </tr> - <tr> - <th scope="row" class="fw-normal"><code>.container-fluid</code></th> - <td class="text-muted">100%</td> - <td class="text-muted">100%</td> - <td class="text-muted">100%</td> - <td class="text-muted">100%</td> - <td class="text-muted">100%</td> - <td class="text-muted">100%</td> - </tr> - </tbody> -</table> +{{< bs-table "table" >}} +| | Extra small<div class="fw-normal"><576px</div> | Small<div class="fw-normal">≥576px</div> | Medium<div class="fw-normal">≥768px</div> | Large<div class="fw-normal">≥992px</div> | X-Large<div class="fw-normal">≥1200px</div> | XX-Large<div class="fw-normal">≥1400px</div> | +| --- | --- | --- | --- | --- | --- | --- | +| `.container` | <span class="text-muted">100%</span> | 540px | 720px | 960px | 1140px | 1320px | +| `.container-sm` | <span class="text-muted">100%</span> | 540px | 720px | 960px | 1140px | 1320px | +| `.container-md` | <span class="text-muted">100%</span> | <span class="text-muted">100%</span> | 720px | 960px | 1140px | 1320px | +| `.container-lg` | <span class="text-muted">100%</span> | <span class="text-muted">100%</span> | <span class="text-muted">100%</span> | 960px | 1140px | 1320px | +| `.container-xl` | <span class="text-muted">100%</span> | <span class="text-muted">100%</span> | <span class="text-muted">100%</span> | <span class="text-muted">100%</span> | 1140px | 1320px | +| `.container-xxl` | <span class="text-muted">100%</span> | <span class="text-muted">100%</span> | <span class="text-muted">100%</span> | <span class="text-muted">100%</span> | <span class="text-muted">100%</span> | 1320px | +| `.container-fluid` | <span class="text-muted">100%</span> | <span class="text-muted">100%</span> | <span class="text-muted">100%</span> | <span class="text-muted">100%</span> | <span class="text-muted">100%</span> | <span class="text-muted">100%</span> | +{{< /bs-table >}} ## Default container diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/layout/css-grid.md b/vendor/twbs/bootstrap/site/content/docs/5.2/layout/css-grid.md index c3a1831c1..397733c8a 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/layout/css-grid.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/layout/css-grid.md @@ -4,6 +4,7 @@ title: CSS Grid description: Learn how to enable, use, and customize our alternate layout system built on CSS Grid with examples and code snippets. group: layout toc: true +added: "5.1" --- Bootstrap's default grid system represents the culmination of over a decade of CSS layout techniques, tried and tested by millions of people. But, it was also created without many of the modern CSS features and techniques we're seeing in browsers like the new CSS Grid. @@ -47,7 +48,7 @@ Compared to the default grid system: Three equal-width columns across all viewports and devices can be created by using the `.g-col-4` classes. Add [responsive classes](#responsive) to change the layout by viewport size. {{< example class="bd-example-cssgrid" >}} -<div class="grid"> +<div class="grid text-center"> <div class="g-col-4">.g-col-4</div> <div class="g-col-4">.g-col-4</div> <div class="g-col-4">.g-col-4</div> @@ -59,7 +60,7 @@ Three equal-width columns across all viewports and devices can be created by usi Use responsive classes to adjust your layout across viewports. Here we start with two columns on the narrowest viewports, and then grow to three columns on medium viewports and above. {{< example class="bd-example-cssgrid" >}} -<div class="grid"> +<div class="grid text-center"> <div class="g-col-6 g-col-md-4">.g-col-6 .g-col-md-4</div> <div class="g-col-6 g-col-md-4">.g-col-6 .g-col-md-4</div> <div class="g-col-6 g-col-md-4">.g-col-6 .g-col-md-4</div> @@ -69,7 +70,7 @@ Use responsive classes to adjust your layout across viewports. Here we start wit Compare that to this two column layout at all viewports. {{< example class="bd-example-cssgrid" >}} -<div class="grid"> +<div class="grid text-center"> <div class="g-col-6">.g-col-6</div> <div class="g-col-6">.g-col-6</div> </div> @@ -80,7 +81,7 @@ Compare that to this two column layout at all viewports. Grid items automatically wrap to the next line when there's no more room horizontally. Note that the `gap` applies to horizontal and vertical gaps between grid items. {{< example class="bd-example-cssgrid" >}} -<div class="grid"> +<div class="grid text-center"> <div class="g-col-6">.g-col-6</div> <div class="g-col-6">.g-col-6</div> @@ -94,7 +95,7 @@ Grid items automatically wrap to the next line when there's no more room horizon Start classes aim to replace our default grid's offset classes, but they're not entirely the same. CSS Grid creates a grid template through styles that tell browsers to "start at this column" and "end at this column." Those properties are `grid-column-start` and `grid-column-end`. Start classes are shorthand for the former. Pair them with the column classes to size and align your columns however you need. Start classes begin at `1` as `0` is an invalid value for these properties. {{< example class="bd-example-cssgrid" >}} -<div class="grid"> +<div class="grid text-center"> <div class="g-col-3 g-start-2">.g-col-3 .g-start-2</div> <div class="g-col-4 g-start-6">.g-col-4 .g-start-6</div> </div> @@ -105,7 +106,7 @@ Start classes aim to replace our default grid's offset classes, but they're not When there are no classes on the grid items (the immediate children of a `.grid`), each grid item will automatically be sized to one column. {{< example class="bd-example-cssgrid" >}} -<div class="grid"> +<div class="grid text-center"> <div>1</div> <div>1</div> <div>1</div> @@ -124,7 +125,7 @@ When there are no classes on the grid items (the immediate children of a `.grid` This behavior can be mixed with grid column classes. {{< example class="bd-example-cssgrid" >}} -<div class="grid"> +<div class="grid text-center"> <div class="g-col-6">.g-col-6</div> <div>1</div> <div>1</div> @@ -147,7 +148,7 @@ Similar to our default grid system, our CSS Grid allows for easy nesting of `.gr In practice this allows for more complex and custom layouts when compared to our default grid system. {{< example class="bd-example-cssgrid" >}} -<div class="grid" style="--bs-columns: 3;"> +<div class="grid text-center" style="--bs-columns: 3;"> <div> First auto-column <div class="grid"> @@ -186,7 +187,7 @@ These CSS variables have no default value; instead, they apply fallback values t Immediate children elements of `.grid` are grid items, so they'll be sized without explicitly adding a `.g-col` class. {{< example class="bd-example-cssgrid" >}} -<div class="grid" style="--bs-columns: 3;"> +<div class="grid text-center" style="--bs-columns: 3;"> <div>Auto-column</div> <div>Auto-column</div> <div>Auto-column</div> @@ -198,14 +199,14 @@ Immediate children elements of `.grid` are grid items, so they'll be sized witho Adjust the number of columns and the gap. {{< example class="bd-example-cssgrid" >}} -<div class="grid" style="--bs-columns: 4; --bs-gap: 5rem;"> +<div class="grid text-center" style="--bs-columns: 4; --bs-gap: 5rem;"> <div class="g-col-2">.g-col-2</div> <div class="g-col-2">.g-col-2</div> </div> {{< /example >}} {{< example class="bd-example-cssgrid" >}} -<div class="grid" style="--bs-columns: 10; --bs-gap: 1rem;"> +<div class="grid text-center" style="--bs-columns: 10; --bs-gap: 1rem;"> <div class="g-col-6">.g-col-6</div> <div class="g-col-4">.g-col-4</div> </div> @@ -216,7 +217,7 @@ Adjust the number of columns and the gap. Adding more rows and changing the placement of columns: {{< example class="bd-example-cssgrid" >}} -<div class="grid" style="--bs-rows: 3; --bs-columns: 3;"> +<div class="grid text-center" style="--bs-rows: 3; --bs-columns: 3;"> <div>Auto-column</div> <div class="g-start-2" style="grid-row: 2">Auto-column</div> <div class="g-start-3" style="grid-row: 3">Auto-column</div> @@ -228,7 +229,7 @@ Adding more rows and changing the placement of columns: Change the vertical gaps only by modifying the `row-gap`. Note that we use `gap` on `.grid`s, but `row-gap` and `column-gap` can be modified as needed. {{< example class="bd-example-cssgrid" >}} -<div class="grid" style="row-gap: 0;"> +<div class="grid text-center" style="row-gap: 0;"> <div class="g-col-6">.g-col-6</div> <div class="g-col-6">.g-col-6</div> @@ -240,7 +241,7 @@ Change the vertical gaps only by modifying the `row-gap`. Note that we use `gap` Because of that, you can have different vertical and horizontal `gap`s, which can take a single value (all sides) or a pair of values (vertical and horizontal). This can be applied with an inline style for `gap`, or with our `--bs-gap` CSS variable. {{< example class="bd-example-cssgrid" >}} -<div class="grid" style="--bs-gap: .25rem 1rem;"> +<div class="grid text-center" style="--bs-gap: .25rem 1rem;"> <div class="g-col-6">.g-col-6</div> <div class="g-col-6">.g-col-6</div> @@ -259,7 +260,7 @@ One limitation of the CSS Grid is that our default classes are still generated b For example, you can increase the column count and change the gap size, and then size your "columns" with a mix of inline styles and predefined CSS Grid column classes (e.g., `.g-col-4`). {{< example class="bd-example-cssgrid" >}} -<div class="grid" style="--bs-columns: 18; --bs-gap: .5rem;"> +<div class="grid text-center" style="--bs-columns: 18; --bs-gap: .5rem;"> <div style="grid-column: span 14;">14 columns</div> <div class="g-col-4">.g-col-4</div> </div> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/layout/grid.md b/vendor/twbs/bootstrap/site/content/docs/5.2/layout/grid.md index 05fc1bd65..44465e907 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/layout/grid.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/layout/grid.md @@ -15,7 +15,7 @@ Bootstrap's grid system uses a series of containers, rows, and columns to layout {{< /callout >}} {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row"> <div class="col"> Column @@ -52,7 +52,7 @@ Be aware of the limitations and [bugs around flexbox](https://github.com/philipw ## Grid options -Bootstrap's grid system can adapt across all six default breakpoints, and any breakpoints you customize. The six default grid tiers are as follow: +Bootstrap's grid system can adapt across all six default breakpoints, and any breakpoints you customize. The six default grid tiers are as follows: - Extra small (xs) - Small (sm) @@ -63,77 +63,79 @@ Bootstrap's grid system can adapt across all six default breakpoints, and any br As noted above, each of these breakpoints have their own container, unique class prefix, and modifiers. Here's how the grid changes across these breakpoints: -<table class="table mb-4"> - <thead> - <tr> - <th scope="col"></th> - <th scope="col"> - xs<br> - <span class="fw-normal"><576px</span> - </th> - <th scope="col"> - sm<br> - <span class="fw-normal">≥576px</span> - </th> - <th scope="col"> - md<br> - <span class="fw-normal">≥768px</span> - </th> - <th scope="col"> - lg<br> - <span class="fw-normal">≥992px</span> - </th> - <th scope="col"> - xl<br> - <span class="fw-normal">≥1200px</span> - </th> - <th scope="col"> - xxl<br> - <span class="fw-normal">≥1400px</span> - </th> - </tr> - </thead> - <tbody> - <tr> - <th class="text-nowrap" scope="row">Container <code class="fw-normal">max-width</code></th> - <td>None (auto)</td> - <td>540px</td> - <td>720px</td> - <td>960px</td> - <td>1140px</td> - <td>1320px</td> - </tr> - <tr> - <th class="text-nowrap" scope="row">Class prefix</th> - <td><code>.col-</code></td> - <td><code>.col-sm-</code></td> - <td><code>.col-md-</code></td> - <td><code>.col-lg-</code></td> - <td><code>.col-xl-</code></td> - <td><code>.col-xxl-</code></td> - </tr> - <tr> - <th class="text-nowrap" scope="row"># of columns</th> - <td colspan="6">12</td> - </tr> - <tr> - <th class="text-nowrap" scope="row">Gutter width</th> - <td colspan="6">1.5rem (.75rem on left and right)</td> - </tr> - <tr> - <th class="text-nowrap" scope="row">Custom gutters</th> - <td colspan="6"><a href="{{< docsref "/layout/gutters" >}}">Yes</a></td> - </tr> - <tr> - <th class="text-nowrap" scope="row">Nestable</th> - <td colspan="6"><a href="#nesting">Yes</a></td> - </tr> - <tr> - <th class="text-nowrap" scope="row">Column ordering</th> - <td colspan="6"><a href="{{< docsref "/layout/columns#reordering" >}}">Yes</a></td> - </tr> - </tbody> -</table> +<div class="table-responsive"> + <table class="table mb-4"> + <thead> + <tr> + <th scope="col"></th> + <th scope="col"> + xs<br> + <span class="fw-normal"><576px</span> + </th> + <th scope="col"> + sm<br> + <span class="fw-normal">≥576px</span> + </th> + <th scope="col"> + md<br> + <span class="fw-normal">≥768px</span> + </th> + <th scope="col"> + lg<br> + <span class="fw-normal">≥992px</span> + </th> + <th scope="col"> + xl<br> + <span class="fw-normal">≥1200px</span> + </th> + <th scope="col"> + xxl<br> + <span class="fw-normal">≥1400px</span> + </th> + </tr> + </thead> + <tbody> + <tr> + <th class="text-nowrap" scope="row">Container <code class="fw-normal">max-width</code></th> + <td>None (auto)</td> + <td>540px</td> + <td>720px</td> + <td>960px</td> + <td>1140px</td> + <td>1320px</td> + </tr> + <tr> + <th class="text-nowrap" scope="row">Class prefix</th> + <td><code>.col-</code></td> + <td><code>.col-sm-</code></td> + <td><code>.col-md-</code></td> + <td><code>.col-lg-</code></td> + <td><code>.col-xl-</code></td> + <td><code>.col-xxl-</code></td> + </tr> + <tr> + <th class="text-nowrap" scope="row"># of columns</th> + <td colspan="6">12</td> + </tr> + <tr> + <th class="text-nowrap" scope="row">Gutter width</th> + <td colspan="6">1.5rem (.75rem on left and right)</td> + </tr> + <tr> + <th class="text-nowrap" scope="row">Custom gutters</th> + <td colspan="6"><a href="{{< docsref "/layout/gutters" >}}">Yes</a></td> + </tr> + <tr> + <th class="text-nowrap" scope="row">Nestable</th> + <td colspan="6"><a href="#nesting">Yes</a></td> + </tr> + <tr> + <th class="text-nowrap" scope="row">Column ordering</th> + <td colspan="6"><a href="{{< docsref "/layout/columns#reordering" >}}">Yes</a></td> + </tr> + </tbody> + </table> +</div> ## Auto-layout columns @@ -144,7 +146,7 @@ Utilize breakpoint-specific column classes for easy column sizing without an exp For example, here are two grid layouts that apply to every device and viewport, from `xs` to `xxl`. Add any number of unit-less classes for each breakpoint you need and every column will be the same width. {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row"> <div class="col"> 1 of 2 @@ -172,7 +174,7 @@ For example, here are two grid layouts that apply to every device and viewport, Auto-layout for flexbox grid columns also means you can set the width of one column and have the sibling columns automatically resize around it. You may use predefined grid classes (as shown below), grid mixins, or inline widths. Note that the other columns will resize no matter the width of the center column. {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row"> <div class="col"> 1 of 3 @@ -203,7 +205,7 @@ Auto-layout for flexbox grid columns also means you can set the width of one col Use `col-{breakpoint}-auto` classes to size columns based on the natural width of their content. {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row justify-content-md-center"> <div class="col col-lg-2"> 1 of 3 @@ -238,7 +240,7 @@ Bootstrap's grid includes six tiers of predefined classes for building complex r For grids that are the same from the smallest of devices to the largest, use the `.col` and `.col-*` classes. Specify a numbered class when you need a particularly sized column; otherwise, feel free to stick to `.col`. {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row"> <div class="col">col</div> <div class="col">col</div> @@ -257,7 +259,7 @@ For grids that are the same from the smallest of devices to the largest, use the Using a single set of `.col-sm-*` classes, you can create a basic grid system that starts out stacked and becomes horizontal at the small breakpoint (`sm`). {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row"> <div class="col-sm-8">col-sm-8</div> <div class="col-sm-4">col-sm-4</div> @@ -275,7 +277,7 @@ Using a single set of `.col-sm-*` classes, you can create a basic grid system th Don't want your columns to simply stack in some grid tiers? Use a combination of different classes for each tier as needed. See the example below for a better idea of how it all works. {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <!-- Stack the columns on mobile by making one full-width and the other half-width --> <div class="row"> <div class="col-md-8">.col-md-8</div> @@ -304,7 +306,7 @@ Use the responsive `.row-cols-*` classes to quickly set the number of columns th Use these row columns classes to quickly create basic grid layouts or to control your card layouts. {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row row-cols-2"> <div class="col">Column</div> <div class="col">Column</div> @@ -315,7 +317,7 @@ Use these row columns classes to quickly create basic grid layouts or to control {{< /example >}} {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row row-cols-3"> <div class="col">Column</div> <div class="col">Column</div> @@ -326,7 +328,7 @@ Use these row columns classes to quickly create basic grid layouts or to control {{< /example >}} {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row row-cols-auto"> <div class="col">Column</div> <div class="col">Column</div> @@ -337,7 +339,7 @@ Use these row columns classes to quickly create basic grid layouts or to control {{< /example >}} {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row row-cols-4"> <div class="col">Column</div> <div class="col">Column</div> @@ -348,7 +350,7 @@ Use these row columns classes to quickly create basic grid layouts or to control {{< /example >}} {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row row-cols-4"> <div class="col">Column</div> <div class="col">Column</div> @@ -359,7 +361,7 @@ Use these row columns classes to quickly create basic grid layouts or to control {{< /example >}} {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row row-cols-1 row-cols-sm-2 row-cols-md-4"> <div class="col">Column</div> <div class="col">Column</div> @@ -388,7 +390,7 @@ You can also use the accompanying Sass mixin, `row-cols()`: To nest your content with the default grid, add a new `.row` and set of `.col-sm-*` columns within an existing `.col-sm-*` column. Nested rows should include a set of columns that add up to 12 or fewer (it is not required that you use all 12 available columns). {{< example class="bd-example-row" >}} -<div class="container"> +<div class="container text-center"> <div class="row"> <div class="col-sm-3"> Level 1: .col-sm-3 @@ -523,4 +525,4 @@ $container-max-widths: ( ); ``` -When making any changes to the Sass variables or maps, you'll need to save your changes and recompile. Doing so will output a brand new set of predefined grid classes for column widths, offsets, and ordering. Responsive visibility utilities will also be updated to use the custom breakpoints. Make sure to set grid values in `px` (not `rem`, `em`, or `%`). +When making any changes to the Sass variables or maps, you'll need to save your changes and recompile. Doing so will output a brand-new set of predefined grid classes for column widths, offsets, and ordering. Responsive visibility utilities will also be updated to use the custom breakpoints. Make sure to set grid values in `px` (not `rem`, `em`, or `%`). diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/layout/gutters.md b/vendor/twbs/bootstrap/site/content/docs/5.2/layout/gutters.md index 87d2731a4..1cb68303f 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/layout/gutters.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/layout/gutters.md @@ -19,7 +19,7 @@ toc: true `.gx-*` classes can be used to control the horizontal gutter widths. The `.container` or `.container-fluid` parent may need to be adjusted if larger gutters are used too to avoid unwanted overflow, using a matching padding utility. For example, in the following example we've increased the padding with `.px-4`: {{< example >}} -<div class="container px-4"> +<div class="container px-4 text-center"> <div class="row gx-5"> <div class="col"> <div class="p-3 border bg-light">Custom column padding</div> @@ -34,7 +34,7 @@ toc: true An alternative solution is to add a wrapper around the `.row` with the `.overflow-hidden` class: {{< example >}} -<div class="container overflow-hidden"> +<div class="container overflow-hidden text-center"> <div class="row gx-5"> <div class="col"> <div class="p-3 border bg-light">Custom column padding</div> @@ -51,7 +51,7 @@ An alternative solution is to add a wrapper around the `.row` with the `.overflo `.gy-*` classes can be used to control the vertical gutter widths. Like the horizontal gutters, the vertical gutters can cause some overflow below the `.row` at the end of a page. If this occurs, you add a wrapper around `.row` with the `.overflow-hidden` class: {{< example >}} -<div class="container overflow-hidden"> +<div class="container overflow-hidden text-center"> <div class="row gy-5"> <div class="col-6"> <div class="p-3 border bg-light">Custom column padding</div> @@ -74,7 +74,7 @@ An alternative solution is to add a wrapper around the `.row` with the `.overflo `.g-*` classes can be used to control the horizontal gutter widths, for the following example we use a smaller gutter width, so there won't be a need to add the `.overflow-hidden` wrapper class. {{< example >}} -<div class="container"> +<div class="container text-center"> <div class="row g-2"> <div class="col-6"> <div class="p-3 border bg-light">Custom column padding</div> @@ -97,7 +97,7 @@ An alternative solution is to add a wrapper around the `.row` with the `.overflo Gutter classes can also be added to [row columns]({{< docsref "/layout/grid#row-columns" >}}). In the following example, we use responsive row columns and responsive gutter classes. {{< example >}} -<div class="container"> +<div class="container text-center"> <div class="row row-cols-2 row-cols-lg-5 g-2 g-lg-3"> <div class="col"> <div class="p-3 border bg-light">Row column</div> @@ -137,12 +137,12 @@ Gutter classes can also be added to [row columns]({{< docsref "/layout/grid#row- The gutters between columns in our predefined grid classes can be removed with `.g-0`. This removes the negative `margin`s from `.row` and the horizontal `padding` from all immediate children columns. -**Need an edge-to-edge design?** Drop the parent `.container` or `.container-fluid`. +**Need an edge-to-edge design?** Drop the parent `.container` or `.container-fluid` and add `.mx-0` to the `.row` to prevent overflow. In practice, here's how it looks. Note you can continue to use this with all other predefined grid classes (including column widths, responsive tiers, reorders, and more). {{< example class="bd-example-row" >}} -<div class="row g-0"> +<div class="row g-0 text-center"> <div class="col-sm-6 col-md-8">.col-sm-6 .col-md-8</div> <div class="col-6 col-md-4">.col-6 .col-md-4</div> </div> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/layout/utilities.md b/vendor/twbs/bootstrap/site/content/docs/5.2/layout/utilities.md index 009d2416d..009d2416d 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/layout/utilities.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/layout/utilities.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/layout/z-index.md b/vendor/twbs/bootstrap/site/content/docs/5.2/layout/z-index.md index 1870d05d2..1870d05d2 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/layout/z-index.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/layout/z-index.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/migration.md b/vendor/twbs/bootstrap/site/content/docs/5.2/migration.md index 8ebb13b81..dbeb8f60c 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/migration.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/migration.md @@ -7,6 +7,121 @@ aliases: "/migration/" toc: true --- +## v5.2.0 + +<hr class="mb-4"> + +### Refreshed design + +Bootstrap v5.2.0 features a subtle design update for a handful of components and properties across the project, **most notably through refined `border-radius` values on buttons and form controls**. Our documentation also has been updated with a new homepage, simpler docs layout that no longer collapses sections of the sidebar, and more prominent examples of [Bootstrap Icons](https://icons.getbootstrap.com). + +### More CSS variables + +**We've updated all our components to use CSS variables.** While Sass still underpins everything, each component has been updated to include CSS variables on the component base classes (e.g., `.btn`), allowing for more real-time customization of Bootstrap. In subsequent releases, we'll continue to expand our use of CSS variables into our layout, forms, helpers, and utilities. Read more about CSS variables in each component on their respective documentation pages. + +Our CSS variable usage will be somewhat incomplete until Bootstrap 6. While we'd love to fully implement these across the board, they do run the risk of causing breaking changes. For example, setting `$alert-border-width: var(--bs-border-width)` in our source code breaks potential Sass in your own code if you were doing `$alert-border-width * 2` for some reason. + +As such, wherever possible, we will continue to push towards more CSS variables, but please recognize our implementation may be slightly limited in v5. + +### New `_maps.scss` + +**Bootstrap v5.2.0 introduced a new Sass file with `_maps.scss`.** It pulls out several Sass maps from `_variables.scss` to fix an issue where updates to an original map were not applied to secondary maps that extend them. For example, updates to `$theme-colors` were not being applied to other theme maps that relied on `$theme-colors`, breaking key customization workflows. In short, Sass has a limitation where once a default variable or map has been _used_, it cannot be updated. _There's a similar shortcoming with CSS variables when they're used to compose other CSS variables._ + +This is why variable customizations in Bootstrap have to come after `@import "functions"`, but before `@import "variables"` and the rest of our import stack. The same applies to Sass maps—you must override the defaults before they get used. The following maps have been moved to the new `_maps.scss`: + +- `$theme-colors-rgb` +- `$utilities-colors` +- `$utilities-text` +- `$utilities-text-colors` +- `$utilities-bg` +- `$utilities-bg-colors` +- `$negative-spacers` +- `$gutters` + +Your custom Bootstrap CSS builds should now look something like this with a separate maps import. + +```diff + // Functions come first + @import "functions"; + + // Optional variable overrides here ++ $custom-color: #df711b; ++ $custom-theme-colors: ( ++ "custom": $custom-color ++ ); + + // Variables come next + @import "variables"; + ++ // Optional Sass map overrides here ++ $theme-colors: map-merge($theme-colors, $custom-theme-colors); ++ ++ // Followed by our default maps ++ @import "maps"; ++ + // Rest of our imports + @import "mixins"; + @import "utilities"; + @import "root"; + @import "reboot"; + // etc +``` + +### New utilities + +- Expanded [`font-weight` utilities]({{< docsref "/utilities/text#font-weight-and-italics" >}}) to include `.fw-semibold` for semibold fonts. +- Expanded [`border-radius` utilities]({{< docsref "/utilities/borders#sizes" >}}) to include two new sizes, `.rounded-4` and `.rounded-5`, for more options. + +### Additional changes + +- **Introduced new `$enable-container-classes` option. —** Now when opting into the experimental CSS Grid layout, `.container-*` classes will still be compiled, unless this option is set to `false`. Containers also now keep their gutter values. + +- **Offcanvas component now has [responsive variations]({{< docsref "/components/offcanvas#responsive" >}}).** The original `.offcanvas` class remains unchanged—it hides content across all viewports. To make it responsive, change that `.offcanvas` class to any `.offcanvas-{sm|md|lg|xl|xxl}` class. + +- **Thicker table dividers are now opt-in. —** We've removed the thicker and more difficult to override border between table groups and moved it to an optional class you can apply, `.table-group-divider`. [See the table docs for an example.]({{< docsref "/content/tables#table-group-dividers" >}}) + +- **[Scrollspy has been rewritten](https://github.com/twbs/bootstrap/pull/33421) to use the Intersection Observer API**, which means you no longer need relative parent wrappers, deprecates `offset` config, and more. Look for your Scrollspy implementations to be more accurate and consistent in their nav highlighting. + +- **Popovers and tooltips now use CSS variables.** Some CSS variables have been updated from their Sass counterparts to reduce the number of variables. As a result, three variables have been deprecated in this release: `$popover-arrow-color`, `$popover-arrow-outer-color`, and `$tooltip-arrow-color`. + +- **Added new `.text-bg-{color}` helpers.** Instead of setting individual `.text-*` and `.bg-*` utilities, you can now use [the `.text-bg-*` helpers]({{< docsref "helpers/color-background" >}}) to set a `background-color` with contrasting foreground `color`. + +- Added `.form-check-reverse` modifier to flip the order of labels and associated checkboxes/radios. + +- Added [striped columns]({{< docsref "/content/tables#striped-columns" >}}) support to tables via the new `.table-striped-columns` class. + +For a complete list of changes, [see the v5.2.0 project on GitHub](https://github.com/twbs/bootstrap/projects/32). + +## v5.1.0 + +<hr class="mb-4"> + +- **Added experimental support for [CSS Grid layout]({{< docsref "/layout/css-grid" >}}). —** This is a work in progress, and is not yet ready for production use, but you can opt into the new feature via Sass. To enable it, disable the default grid, by setting `$enable-grid-classes: false` and enable the CSS Grid by setting `$enable-cssgrid: true`. + +- **Updated navbars to support offcanvas. —** Add [offcanvas drawers in any navbar]({{< docsref "/components/navbar#offcanvas" >}}) with the responsive `.navbar-expand-*` classes and some offcanvas markup. + +- **Added new [placeholder component]({{< docsref "/components/placeholders/" >}}). —** Our newest component, a way to provide temporary blocks in lieu of real content to help indicate that something is still loading in your site or app. + +- **Collapse plugin now supports [horizontal collapsing]({{< docsref "/components/collapse#horizontal" >}}). —** Add `.collapse-horizontal` to your `.collapse` to collapse the `width` instead of the `height`. Avoid browser repainting by setting a `min-height` or `height`. + +- **Added new stack and vertical rule helpers. —** Quickly apply multiple flexbox properties to quickly create custom layouts with [stacks]({{< docsref "/helpers/stacks/" >}}). Choose from horizontal (`.hstack`) and vertical (`.vstack`) stacks. Add vertical dividers similar to `<hr>` elements with the [new `.vr` helpers]({{< docsref "/helpers/vertical-rule/" >}}). + +- **Added new global `:root` CSS variables. —** Added several new CSS variables to the `:root` level for controlling `<body>` styles. More are in the works, including across our utilities and components, but for now read up [CSS variables in the Customize section]({{< docsref "/customize/css-variables/" >}}). + +- **Overhauled color and background utilities to use CSS variables, and added new [text opacity]({{< docsref "/utilities/text#opacity" >}}) and [background opacity]({{< docsref "/utilities/background#opacity" >}}) utilities. —** `.text-*` and `.bg-*` utilities are now built with CSS variables and `rgba()` color values, allowing you to easily customize any utility with new opacity utilities. + +- **Added new snippet examples based to show how to customize our components. —** Pull ready to use customized components and other common design patterns with our new [Snippets examples]({{< docsref "/examples#snippets" >}}). Includes [footers]({{< docsref "/examples/footers/" >}}), [dropdowns]({{< docsref "/examples/dropdowns/" >}}), [list groups]({{< docsref "/examples/list-groups/" >}}), and [modals]({{< docsref "/examples/modals/" >}}). + +- **Removed unused positioning styles from popovers and tooltips** as these are handled solely by Popper. `$tooltip-margin` has been deprecated and set to `null` in the process. + +Want more information? [Read the v5.1.0 blog post.](https://blog.getbootstrap.com/2021/08/04/bootstrap-5-1-0/) + +<hr class="my-5"> + +{{< callout info >}} +**Hey there!** Changes to our first major release of Bootstrap 5, v5.0.0, are documented below. They don't reflect the additional changes shown above. +{{< /callout >}} + ## Dependencies - Dropped jQuery. @@ -28,10 +143,10 @@ toc: true ## Documentation changes - Redesigned homepage, docs layout, and footer. -- Added [new Parcel guide](https://getbootstrap.com/docs/5.1/getting-started/parcel/). -- Added [new Customize section](https://getbootstrap.com/docs/5.1/customize/overview/), replacing [v4's Theming page](https://getbootstrap.com/docs/4.6/getting-started/theming/), with new details on Sass, global configuration options, color schemes, CSS variables, and more. -- Reorganized all form documentation into [new Forms section](https://getbootstrap.com/docs/5.1/forms/overview/), breaking apart the content into more focused pages. -- Similarly, updated [the Layout section](https://getbootstrap.com/docs/5.1/layout/breakpoints/), to flesh out grid content more clearly. +- Added [new Parcel guide]({{< docsref "/getting-started/parcel" >}}). +- Added [new Customize section]({{< docsref "/customize/overview" >}}), replacing [v4's Theming page](https://getbootstrap.com/docs/4.6/getting-started/theming/), with new details on Sass, global configuration options, color schemes, CSS variables, and more. +- Reorganized all form documentation into [new Forms section]({{< docsref "/forms/overview" >}}), breaking apart the content into more focused pages. +- Similarly, updated [the Layout section]({{< docsref "/layout/breakpoints" >}}), to flesh out grid content more clearly. - Renamed "Navs" component page to "Navs & Tabs". - Renamed "Checks" page to "Checks & radios". - Redesigned the navbar and added a new subnav to make it easier to get around our sites and docs versions. @@ -41,7 +156,7 @@ toc: true - We've ditched the default Sass map merges to make it easier to remove redundant values. Keep in mind you now have to define all values in the Sass maps like `$theme-colors`. Check out how to deal with [Sass maps]({{< docsref "/customize/sass#maps-and-loops" >}}). -- <span class="badge bg-danger">Breaking</span> Renamed `color-yiq()` function and related variables to `color-contrast()` as it's no longer related to YIQ colorspace. [See #30168.](https://github.com/twbs/bootstrap/pull/30168/) +- <span class="badge bg-danger">Breaking</span> Renamed `color-yiq()` function and related variables to `color-contrast()` as it's no longer related to YIQ color space. [See #30168.](https://github.com/twbs/bootstrap/pull/30168/) - `$yiq-contrasted-threshold` is renamed to `$min-contrast-ratio`. - `$yiq-text-dark` and `$yiq-text-light` are respectively renamed to `$color-contrast-dark` and `$color-contrast-light`. @@ -90,7 +205,7 @@ toc: true - **New breakpoint!** Added new `xxl` breakpoint for `1400px` and up. No changes to all other breakpoints. - **Improved gutters.** Gutters are now set in rems, and are narrower than v4 (`1.5rem`, or about `24px`, down from `30px`). This aligns our grid system's gutters with our spacing utilities. - - Added new [gutter class](https://getbootstrap.com/docs/5.1/layout/gutters/) (`.g-*`, `.gx-*`, and `.gy-*`) to control horizontal/vertical gutters, horizontal gutters, and vertical gutters. + - Added new [gutter class]({{< docsref "/layout/gutters" >}}) (`.g-*`, `.gx-*`, and `.gy-*`) to control horizontal/vertical gutters, horizontal gutters, and vertical gutters. - <span class="badge bg-danger">Breaking</span> Renamed `.no-gutters` to `.g-0` to match new gutter utilities. - Columns no longer have `position: relative` applied, so you may have to add `.position-relative` to some elements to restore that behavior. @@ -131,7 +246,7 @@ toc: true - <span class="badge bg-danger">Breaking</span> Dropped `.text-justify` class. [See #29793](https://github.com/twbs/bootstrap/pull/29793) -- <span class="badge bg-danger">Breaking</span> `<hr>` elements now use `height` instead of `border` to better support the `size` attribute. This also enables use of padding utilities to create thicker dividers (e.g., `<hr class="py-1">`). +- <span class="badge bg-danger">Breaking</span> ~~`<hr>` elements now use `height` instead of `border` to better support the `size` attribute. This also enables use of padding utilities to create thicker dividers (e.g., `<hr class="py-1">`).~~ - Reset default horizontal `padding-left` on `<ul>` and `<ol>` elements from browser default `40px` to `2rem`. @@ -146,8 +261,9 @@ toc: true - **Added new floating forms!** We've promoted the Floating labels example to fully supported form components. [See the new Floating labels page.]({{< docsref "/forms/floating-labels" >}}) - <span class="badge bg-danger">Breaking</span> **Consolidated native and custom form elements.** Checkboxes, radios, selects, and other inputs that had native and custom classes in v4 have been consolidated. Now nearly all our form elements are entirely custom, most without the need for custom HTML. - - `.custom-check` is now `.form-check`. - - `.custom-check.custom-switch` is now `.form-check.form-switch`. + - `.custom-control.custom-checkbox` is now `.form-check`. + - `.custom-control.custom-custom-radio` is now `.form-check`. + - `.custom-control.custom-switch` is now `.form-check.form-switch`. - `.custom-select` is now `.form-select`. - `.custom-file` and `.form-file` have been replaced by custom styles on top of `.form-control`. - `.custom-range` is now `.form-range`. @@ -163,6 +279,8 @@ toc: true - <span class="badge bg-danger">Breaking</span> `.form-text` no longer sets `display`, allowing you to create inline or block help text as you wish just by changing the HTML element. +- Form controls no longer used fixed `height` when possible, instead deferring to `min-height` to improve customization and compatibility with other components. + - Validation icons are no longer applied to `<select>`s with `multiple`. - Rearranged source Sass files under `scss/forms/`, including input group styles. @@ -201,9 +319,9 @@ toc: true ### Buttons -- <span class="badge bg-danger">Breaking</span> **[Toggle buttons](https://getbootstrap.com/docs/5.1/forms/checks-radios/#toggle-buttons), with checkboxes or radios, no longer require JavaScript and have new markup.** We no longer require a wrapping element, add `.btn-check` to the `<input>`, and pair it with any `.btn` classes on the `<label>`. [See #30650](https://github.com/twbs/bootstrap/pull/30650). _The docs for this has moved from our Buttons page to the new Forms section._ +- <span class="badge bg-danger">Breaking</span> **[Toggle buttons]({{< docsref "/forms/checks-radios#toggle-buttons" >}}), with checkboxes or radios, no longer require JavaScript and have new markup.** We no longer require a wrapping element, add `.btn-check` to the `<input>`, and pair it with any `.btn` classes on the `<label>`. [See #30650](https://github.com/twbs/bootstrap/pull/30650). _The docs for this has moved from our Buttons page to the new Forms section._ -- <span class="badge bg-danger">Breaking</span> **Dropped `.btn-block` for utilities.** Instead of using `.btn-block` on the `.btn`, wrap your buttons with `.d-grid` and a `.gap-*` utility to space them as needed. Switch to responsive classes for even more control over them. [Read the docs for some examples.](https://getbootstrap.com/docs/5.1/components/buttons/#block-buttons) +- <span class="badge bg-danger">Breaking</span> **Dropped `.btn-block` for utilities.** Instead of using `.btn-block` on the `.btn`, wrap your buttons with `.d-grid` and a `.gap-*` utility to space them as needed. Switch to responsive classes for even more control over them. [Read the docs for some examples.]({{< docsref "/components/buttons#block-buttons" >}}) - Updated our `button-variant()` and `button-outline-variant()` mixins to support additional parameters. @@ -247,7 +365,7 @@ toc: true - <span class="badge bg-danger">Breaking</span> All the events for the dropdown are now triggered on the dropdown toggle button and then bubbled up to the parent element. -- Dropdown menus now have a `data-bs-popper="static"` attribute set when the positioning of the dropdown is static and `data-bs-popper="none"` when dropdown is in the navbar. This is added by our JavaScript and helps us use custom position styles without interfering with Popper's positioning. +- Dropdown menus now have a `data-bs-popper="static"` attribute set when the positioning of the dropdown is static, or dropdown is in the navbar. This is added by our JavaScript and helps us use custom position styles without interfering with Popper's positioning. - <span class="badge bg-danger">Breaking</span> Dropped `flip` option for dropdown plugin in favor of native Popper configuration. You can now disable the flipping behavior by passing an empty array for [`fallbackPlacements`](https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements) option in [flip](https://popper.js.org/docs/v2/modifiers/flip/) modifier. @@ -257,7 +375,7 @@ toc: true ### Jumbotron -- <span class="badge bg-danger">Breaking</span> Dropped the jumbotron component as it can be replicated with utilities. [See our new Jumbotron example for a demo.](https://getbootstrap.com/docs/5.1/examples/jumbotron/) +- <span class="badge bg-danger">Breaking</span> Dropped the jumbotron component as it can be replicated with utilities. [See our new Jumbotron example for a demo.]({{< docsref "/examples/jumbotron" >}}) ### List group @@ -270,6 +388,7 @@ toc: true ### Navbars - <span class="badge bg-danger">Breaking</span> Navbars now require a container within (to drastically simplify spacing requirements and CSS required). +- <span class="badge bg-danger">Breaking</span> The `.active` class can no longer be applied to `.nav-item`s, it must be applied directly on `.nav-link`s. ### Offcanvas @@ -374,8 +493,8 @@ toc: true - **All plugins can now accept a CSS selector as the first argument.** You can either pass a DOM element or any valid CSS selector to create a new instance of the plugin: ```js - var modal = new bootstrap.Modal('#myModal') - var dropdown = new bootstrap.Dropdown('[data-bs-toggle="dropdown"]') + const modal = new bootstrap.Modal('#myModal') + const dropdown = new bootstrap.Dropdown('[data-bs-toggle="dropdown"]') ``` - `popperConfig` can be passed as a function that accepts the Bootstrap's default Popper config as an argument, so that you can merge this default configuration in your way. **Applies to dropdowns, popovers, and tooltips.** diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/api.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/api.md index 66b6bc0f8..81017ee8e 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/api.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/api.md @@ -3,7 +3,7 @@ layout: docs title: Utility API description: The utility API is a Sass-based tool to generate utility classes. group: utilities -aliases: "/docs/5.1/utilities/" +aliases: "/docs/5.2/utilities/" toc: true --- @@ -11,13 +11,14 @@ Bootstrap utilities are generated with our utility API and can be used to modify The `$utilities` map contains all our utilities and is later merged with your custom `$utilities` map, if present. The utility map contains a keyed list of utility groups which accept the following options: -{{< bs-table "table text-start" >}} +{{< bs-table "table table-utilities" >}} | Option | Type | Default value | Description | | --- | --- | --- | --- | | [`property`](#property) | **Required** | – | Name of the property, this can be a string or an array of strings (e.g., horizontal paddings or margins). | -| [`values`](#values) | **Required** | – | List of values, or a map if you don't want the class name to be the same as the value. If `null` is used as map key, it isn't compiled. | -| [`class`](#class) | Optional | null | Name of the generated class. If not provided and `property` is an array of strings, `class` will default to the first element of the `property` array. | +| [`values`](#values) | **Required** | – | List of values, or a map if you don't want the class name to be the same as the value. If `null` is used as map key, `class` is not prepended to the class name. | +| [`class`](#class) | Optional | null | Name of the generated class. If not provided and `property` is an array of strings, `class` will default to the first element of the `property` array. If not provided and `property` is a string, the `values` keys are used for the `class` names. | | [`css-var`](#css-variable-utilities) | Optional | `false` | Boolean to generate CSS variables instead of CSS rules. | +| [`css-variable-name`](#css-variable-utilities) | Optional | null | Custom un-prefixed name for the CSS variable inside the ruleset. | | [`local-vars`](#local-css-variables) | Optional | null | Map of local CSS variables to generate in addition to the CSS rules. | | [`state`](#states) | Optional | null | List of pseudo-class variants (e.g., `:hover` or `:focus`) to generate. | | [`responsive`](#responsive) | Optional | `false` | Boolean indicating if responsive classes should be generated. | @@ -134,14 +135,39 @@ Output: .o-100 { opacity: 1 !important; } ``` +If `class: null`, generates classes for each of the `values` keys: + +```scss +$utilities: ( + "visibility": ( + property: visibility, + class: null, + values: ( + visible: visible, + invisible: hidden, + ) + ) +); +``` + +Output: + +```css +.visible { visibility: visible !important; } +.invisible { visibility: hidden !important; } +``` + ### CSS variable utilities -Set the `css-var` boolean option to `true` and the API will generate local CSS variables for the given selector instead of the usual `property: value` rules. Consider our `.text-opacity-*` utilities: +Set the `css-var` boolean option to `true` and the API will generate local CSS variables for the given selector instead of the usual `property: value` rules. Add an optional `css-variable-name` to set a different CSS variable name than the class name. + +Consider our `.text-opacity-*` utilities. If we add the `css-variable-name` option, we'll get a custom output. ```scss $utilities: ( "text-opacity": ( css-var: true, + css-variable-name: text-alpha, class: text-opacity, values: ( 25: .25, @@ -156,10 +182,10 @@ $utilities: ( Output: ```css -.text-opacity-25 { --bs-text-opacity: .25; } -.text-opacity-50 { --bs-text-opacity: .5; } -.text-opacity-75 { --bs-text-opacity: .75; } -.text-opacity-100 { --bs-text-opacity: 1; } +.text-opacity-25 { --bs-text-alpha: .25; } +.text-opacity-50 { --bs-text-alpha: .5; } +.text-opacity-75 { --bs-text-alpha: .75; } +.text-opacity-100 { --bs-text-alpha: 1; } ``` ### Local CSS variables @@ -363,6 +389,8 @@ New utilities can be added to the default `$utilities` map with a `map-merge`. M ```scss @import "bootstrap/scss/functions"; @import "bootstrap/scss/variables"; +@import "bootstrap/scss/maps"; +@import "bootstrap/scss/mixins"; @import "bootstrap/scss/utilities"; $utilities: map-merge( @@ -376,6 +404,8 @@ $utilities: map-merge( ) ) ); + +@import "bootstrap/scss/utilities/api"; ``` ### Modify utilities @@ -385,6 +415,8 @@ Modify existing utilities in the default `$utilities` map with `map-get` and `ma ```scss @import "bootstrap/scss/functions"; @import "bootstrap/scss/variables"; +@import "bootstrap/scss/maps"; +@import "bootstrap/scss/mixins"; @import "bootstrap/scss/utilities"; $utilities: map-merge( @@ -401,6 +433,8 @@ $utilities: map-merge( ), ) ); + +@import "bootstrap/scss/utilities/api"; ``` #### Enable responsive @@ -410,6 +444,8 @@ You can enable responsive classes for an existing set of utilities that are not ```scss @import "bootstrap/scss/functions"; @import "bootstrap/scss/variables"; +@import "bootstrap/scss/maps"; +@import "bootstrap/scss/mixins"; @import "bootstrap/scss/utilities"; $utilities: map-merge( @@ -420,6 +456,8 @@ $utilities: map-merge( ), ) ); + +@import "bootstrap/scss/utilities/api"; ``` This will now generate responsive variations of `.border` and `.border-0` for each breakpoint. Your generated CSS will look like this: @@ -461,6 +499,8 @@ Missing v4 utilities, or used to another naming convention? The utilities API ca ```scss @import "bootstrap/scss/functions"; @import "bootstrap/scss/variables"; +@import "bootstrap/scss/maps"; +@import "bootstrap/scss/mixins"; @import "bootstrap/scss/utilities"; $utilities: map-merge( @@ -471,15 +511,34 @@ $utilities: map-merge( ), ) ); + +@import "bootstrap/scss/utilities/api"; ``` ### Remove utilities -Remove any of the default utilities by setting the group key to `null`. For example, to remove all our `width` utilities, create a `$utilities` `map-merge` and add `"width": null` within. +Remove any of the default utilities with the [`map-remove()` Sass function](https://sass-lang.com/documentation/modules/map#remove). + +```scss +@import "bootstrap/scss/functions"; +@import "bootstrap/scss/variables"; +@import "bootstrap/scss/maps"; +@import "bootstrap/scss/mixins"; +@import "bootstrap/scss/utilities"; + +// Remove multiple utilities with a comma-separated list +$utilities: map-remove($utilities, "width", "float"); + +@import "bootstrap/scss/utilities/api"; +``` + +You can also use the [`map-merge()` Sass function](https://sass-lang.com/documentation/modules/map#merge) and set the group key to `null` to remove the utility. ```scss @import "bootstrap/scss/functions"; @import "bootstrap/scss/variables"; +@import "bootstrap/scss/maps"; +@import "bootstrap/scss/mixins"; @import "bootstrap/scss/utilities"; $utilities: map-merge( @@ -488,6 +547,44 @@ $utilities: map-merge( "width": null ) ); + +@import "bootstrap/scss/utilities/api"; +``` + +### Add, remove, modify + +You can add, remove, and modify many utilities all at once with the [`map-merge()` Sass function](https://sass-lang.com/documentation/modules/map#merge). Here's how you can combine the previous examples into one larger map. + +```scss +@import "bootstrap/scss/functions"; +@import "bootstrap/scss/variables"; +@import "bootstrap/scss/maps"; +@import "bootstrap/scss/mixins"; +@import "bootstrap/scss/utilities"; + +$utilities: map-merge( + $utilities, + ( + // Remove the `width` utility + "width": null, + + // Make an existing utility responsive + "border": map-merge( + map-get($utilities, "border"), + ( responsive: true ), + ), + + // Add new utilities + "cursor": ( + property: cursor, + class: cursor, + responsive: true, + values: auto pointer grab, + ) + ) +); + +@import "bootstrap/scss/utilities/api"; ``` #### Remove utility in RTL diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/background.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/background.md index 61c27365b..fe0bf573b 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/background.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/background.md @@ -37,7 +37,7 @@ Do you need a gradient in your custom CSS? Just add `background-image: var(--bs- ## Opacity -<small class="d-inline-flex px-2 py-1 font-monospace text-muted border rounded-3">Added in v5.1.0</small> +{{< added-in "5.1.0" >}} As of v5.1.0, `background-color` utilities are generated with Sass using CSS variables. This allows for real-time color changes without compilation and dynamic alpha transparency changes. @@ -103,11 +103,11 @@ Grayscale colors are also available as a Sass map. **This map is not used to gen RGB colors are generated from a separate Sass map: -{{< scss-docs name="theme-colors-rgb" file="scss/_variables.scss" >}} +{{< scss-docs name="theme-colors-rgb" file="scss/_maps.scss" >}} And background color opacities build on that with their own map that's consumed by the utilities API: -{{< scss-docs name="utilities-bg-colors" file="scss/_variables.scss" >}} +{{< scss-docs name="utilities-bg-colors" file="scss/_maps.scss" >}} ### Mixins diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/borders.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/borders.md index 6ba1174c9..64913bbc9 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/borders.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/borders.md @@ -12,6 +12,8 @@ Use border utilities to add or remove an element's borders. Choose from all bord ### Additive +Add borders to custom elements: + {{< example class="bd-example-border-utils" >}} <span class="border"></span> <span class="border-top"></span> @@ -22,15 +24,17 @@ Use border utilities to add or remove an element's borders. Choose from all bord ### Subtractive -{{< example class="bd-example-border-utils bd-example-border-utils-0" >}} -<span class="border-0"></span> -<span class="border-top-0"></span> -<span class="border-end-0"></span> -<span class="border-bottom-0"></span> -<span class="border-start-0"></span> +Or remove borders: + +{{< example class="bd-example-border-utils" >}} +<span class="border border-0"></span> +<span class="border border-top-0"></span> +<span class="border border-end-0"></span> +<span class="border border-bottom-0"></span> +<span class="border border-start-0"></span> {{< /example >}} -## Border color +## Color Change the border color using utilities built on our theme colors. @@ -43,7 +47,62 @@ Change the border color using utilities built on our theme colors. <span class="border border-white"></span> {{< /example >}} -## Border-width +Or modify the default `border-color` of a component: + +{{< example >}} +<div class="mb-4"> + <label for="exampleFormControlInput1" class="form-label">Email address</label> + <input type="email" class="form-control border-success" id="exampleFormControlInput1" placeholder="name@example.com"> +</div> + +<div class="h4 pb-2 mb-4 text-danger border-bottom border-danger"> + Dangerous heading +</div> + +<div class="p-3 bg-info bg-opacity-10 border border-info border-start-0 rounded-end"> + Changing border color and width +</div> +{{< /example >}} + +## Opacity + +{{< added-in "5.2.0" >}} + +Bootstrap `border-{color}` utilities are generated with Sass using CSS variables. This allows for real-time color changes without compilation and dynamic alpha transparency changes. + +### How it works + +Consider our default `.border-success` utility. + +```css +.border-success { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important; +} +``` + +We use an RGB version of our `--bs-success` (with the value of `25, 135, 84`) CSS variable and attached a second CSS variable, `--bs-border-opacity`, for the alpha transparency (with a default value `1` thanks to a local CSS variable). That means anytime you use `.border-success` now, your computed `color` value is `rgba(25, 135, 84, 1)`. The local CSS variable inside each `.border-*` class avoids inheritance issues so nested instances of the utilities don't automatically have a modified alpha transparency. + +### Example + +To change that opacity, override `--bs-border-opacity` via custom styles or inline styles. + +{{< example >}} +<div class="border border-success p-2 mb-2">This is default success border</div> +<div class="border border-success p-2" style="--bs-border-opacity: .5;">This is 50% opacity success border</div> +{{< /example >}} + +Or, choose from any of the `.border-opacity` utilities: + +{{< example >}} +<div class="border border-success p-2 mb-2">This is default success border</div> +<div class="border border-success p-2 mb-2 border-opacity-75">This is 75% opacity success border</div> +<div class="border border-success p-2 mb-2 border-opacity-50">This is 50% opacity success border</div> +<div class="border border-success p-2 mb-2 border-opacity-25">This is 25% opacity success border</div> +<div class="border border-success p-2 border-opacity-10">This is 10% opacity success border</div> +{{< /example >}} + +## Width {{< example class="bd-example-border-utils" >}} <span class="border border-1"></span> @@ -53,7 +112,7 @@ Change the border color using utilities built on our theme colors. <span class="border border-5"></span> {{< /example >}} -## Border-radius +## Radius Add classes to an element to easily round its corners. @@ -69,24 +128,30 @@ Add classes to an element to easily round its corners. ### Sizes -Use the scaling classes for larger or smaller rounded corners. Sizes range from `0` to `3`, and can be configured by modifying the utilities API. +Use the scaling classes for larger or smaller rounded corners. Sizes range from `0` to `5`, and can be configured by modifying the utilities API. {{< example class="bd-example-rounded-utils" >}} {{< placeholder width="75" height="75" class="rounded-0" title="Example non-rounded image" >}} {{< placeholder width="75" height="75" class="rounded-1" title="Example small rounded image" >}} {{< placeholder width="75" height="75" class="rounded-2" title="Example default rounded image" >}} {{< placeholder width="75" height="75" class="rounded-3" title="Example large rounded image" >}} +{{< placeholder width="75" height="75" class="rounded-4" title="Example larger rounded image" >}} +{{< placeholder width="75" height="75" class="rounded-5" title="Example extra large rounded image" >}} {{< /example >}} -## Sass +## CSS ### Variables +{{< scss-docs name="root-border-var" file="scss/_root.scss" >}} + +### Sass variables + {{< scss-docs name="border-variables" file="scss/_variables.scss" >}} {{< scss-docs name="border-radius-variables" file="scss/_variables.scss" >}} -### Mixins +### Sass mixins {{< scss-docs name="border-radius-mixins" file="scss/mixins/_border-radius.scss" >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/colors.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/colors.md index 60462070b..eb917f91c 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/colors.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/colors.md @@ -33,7 +33,7 @@ Colorize text with color utilities. If you want to colorize links, you can use t ## Opacity -<small class="d-inline-flex px-2 py-1 font-monospace text-muted border rounded-3">Added in v5.1.0</small> +{{< added-in "5.1.0" >}} As of v5.1.0, text color utilities are generated with Sass using CSS variables. This allows for real-time color changes without compilation and dynamic alpha transparency changes. @@ -100,11 +100,11 @@ Grayscale colors are also available as a Sass map. **This map is not used to gen RGB colors are generated from a separate Sass map: -{{< scss-docs name="theme-colors-rgb" file="scss/_variables.scss" >}} +{{< scss-docs name="theme-colors-rgb" file="scss/_maps.scss" >}} And color opacities build on that with their own map that's consumed by the utilities API: -{{< scss-docs name="utilities-text-colors" file="scss/_variables.scss" >}} +{{< scss-docs name="utilities-text-colors" file="scss/_maps.scss" >}} ### Utilities API diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/display.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/display.md index 9e5a5dfb2..5ed825acb 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/display.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/display.md @@ -32,20 +32,20 @@ Where *value* is one of: - `flex` - `inline-flex` -The display values can be altered by changing the `$displays` variable and recompiling the SCSS. +The display values can be altered by changing the `display` values defined in `$utilities` and recompiling the SCSS. The media queries affect screen widths with the given breakpoint *or larger*. For example, `.d-lg-none` sets `display: none;` on `lg`, `xl`, and `xxl` screens. ## Examples {{< example >}} -<div class="d-inline p-2 bg-primary text-white">d-inline</div> -<div class="d-inline p-2 bg-dark text-white">d-inline</div> +<div class="d-inline p-2 text-bg-primary">d-inline</div> +<div class="d-inline p-2 text-bg-dark">d-inline</div> {{< /example >}} {{< example >}} -<span class="d-block p-2 bg-primary text-white">d-block</span> -<span class="d-block p-2 bg-dark text-white">d-block</span> +<span class="d-block p-2 text-bg-primary">d-block</span> +<span class="d-block p-2 text-bg-dark">d-block</span> {{< /example >}} ## Hiding elements @@ -56,72 +56,24 @@ To hide elements simply use the `.d-none` class or one of the `.d-{sm,md,lg,xl,x To show an element only on a given interval of screen sizes you can combine one `.d-*-none` class with a `.d-*-*` class, for example `.d-none .d-md-block .d-xl-none .d-xxl-none` will hide the element for all screen sizes except on medium and large devices. -<table class="table"> - <thead> - <tr> - <th>Screen size</th> - <th>Class</th> - </tr> - </thead> - <tbody> - <tr> - <td>Hidden on all</td> - <td><code>.d-none</code></td> - </tr> - <tr> - <td>Hidden only on xs</td> - <td><code>.d-none .d-sm-block</code></td> - </tr> - <tr> - <td>Hidden only on sm</td> - <td><code>.d-sm-none .d-md-block</code></td> - </tr> - <tr> - <td>Hidden only on md</td> - <td><code>.d-md-none .d-lg-block</code></td> - </tr> - <tr> - <td>Hidden only on lg</td> - <td><code>.d-lg-none .d-xl-block</code></td> - </tr> - <tr> - <td>Hidden only on xl</td> - <td><code>.d-xl-none .d-xxl-block</code></td> - </tr> - <tr> - <td>Hidden only on xxl</td> - <td><code>.d-xxl-none</code></td> - </tr> - <tr> - <td>Visible on all</td> - <td><code>.d-block</code></td> - </tr> - <tr> - <td>Visible only on xs</td> - <td><code>.d-block .d-sm-none</code></td> - </tr> - <tr> - <td>Visible only on sm</td> - <td><code>.d-none .d-sm-block .d-md-none</code></td> - </tr> - <tr> - <td>Visible only on md</td> - <td><code>.d-none .d-md-block .d-lg-none</code></td> - </tr> - <tr> - <td>Visible only on lg</td> - <td><code>.d-none .d-lg-block .d-xl-none</code></td> - </tr> - <tr> - <td>Visible only on xl</td> - <td><code>.d-none .d-xl-block .d-xxl-none</code></td> - </tr> - <tr> - <td>Visible only on xxl</td> - <td><code>.d-none .d-xxl-block</code></td> - </tr> - </tbody> -</table> +{{< bs-table >}} +| Screen size | Class | +| --- | --- | +| Hidden on all | `.d-none` | +| Hidden only on xs | `.d-none .d-sm-block` | +| Hidden only on sm | `.d-sm-none .d-md-block` | +| Hidden only on md | `.d-md-none .d-lg-block` | +| Hidden only on lg | `.d-lg-none .d-xl-block` | +| Hidden only on xl | `.d-xl-none` | +| Hidden only on xxl | `.d-xxl-none .d-xxl-block` | +| Visible on all | `.d-block` | +| Visible only on xs | `.d-block .d-sm-none` | +| Visible only on sm | `.d-none .d-sm-block .d-md-none` | +| Visible only on md | `.d-none .d-md-block .d-lg-none` | +| Visible only on lg | `.d-none .d-lg-block .d-xl-none` | +| Visible only on xl | `.d-none .d-xl-block .d-xxl-none` | +| Visible only on xxl | `.d-none .d-xxl-block` | +{{< /bs-table >}} {{< example >}} <div class="d-lg-none">hide on lg and wider screens</div> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/flex.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/flex.md new file mode 100644 index 000000000..567befe0e --- /dev/null +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/flex.md @@ -0,0 +1,666 @@ +--- +layout: docs +title: Flex +description: Quickly manage the layout, alignment, and sizing of grid columns, navigation, components, and more with a full suite of responsive flexbox utilities. For more complex implementations, custom CSS may be necessary. +group: utilities +toc: true +--- + +## Enable flex behaviors + +Apply `display` utilities to create a flexbox container and transform **direct children elements** into flex items. Flex containers and items are able to be modified further with additional flex properties. + +{{< example class="bd-example-flex" >}} +<div class="d-flex p-2">I'm a flexbox container!</div> +{{< /example >}} + +{{< example class="bd-example-flex" >}} +<div class="d-inline-flex p-2">I'm an inline flexbox container!</div> +{{< /example >}} + +Responsive variations also exist for `.d-flex` and `.d-inline-flex`. + +{{< markdown >}} +{{< flex.inline >}} +{{- range $.Site.Data.breakpoints }} +- `.d{{ .abbr }}-flex` +- `.d{{ .abbr }}-inline-flex` +{{- end -}} +{{< /flex.inline >}} +{{< /markdown >}} + +## Direction + +Set the direction of flex items in a flex container with direction utilities. In most cases you can omit the horizontal class here as the browser default is `row`. However, you may encounter situations where you needed to explicitly set this value (like responsive layouts). + +Use `.flex-row` to set a horizontal direction (the browser default), or `.flex-row-reverse` to start the horizontal direction from the opposite side. + +{{< example class="bd-example-flex" >}} +<div class="d-flex flex-row mb-3"> + <div class="p-2">Flex item 1</div> + <div class="p-2">Flex item 2</div> + <div class="p-2">Flex item 3</div> +</div> +<div class="d-flex flex-row-reverse"> + <div class="p-2">Flex item 1</div> + <div class="p-2">Flex item 2</div> + <div class="p-2">Flex item 3</div> +</div> +{{< /example >}} + +Use `.flex-column` to set a vertical direction, or `.flex-column-reverse` to start the vertical direction from the opposite side. + +{{< example class="bd-example-flex" >}} +<div class="d-flex flex-column mb-3"> + <div class="p-2">Flex item 1</div> + <div class="p-2">Flex item 2</div> + <div class="p-2">Flex item 3</div> +</div> +<div class="d-flex flex-column-reverse"> + <div class="p-2">Flex item 1</div> + <div class="p-2">Flex item 2</div> + <div class="p-2">Flex item 3</div> +</div> +{{< /example >}} + +Responsive variations also exist for `flex-direction`. + +{{< markdown >}} +{{< flex.inline >}} +{{- range $.Site.Data.breakpoints }} +- `.flex{{ .abbr }}-row` +- `.flex{{ .abbr }}-row-reverse` +- `.flex{{ .abbr }}-column` +- `.flex{{ .abbr }}-column-reverse` +{{- end -}} +{{< /flex.inline >}} +{{< /markdown >}} + +## Justify content + +Use `justify-content` utilities on flexbox containers to change the alignment of flex items on the main axis (the x-axis to start, y-axis if `flex-direction: column`). Choose from `start` (browser default), `end`, `center`, `between`, `around`, or `evenly`. + +<div class="bd-example bd-example-flex"> + <div class="d-flex justify-content-start mb-3"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> + <div class="d-flex justify-content-end mb-3"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> + <div class="d-flex justify-content-center mb-3"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> + <div class="d-flex justify-content-between mb-3"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> + <div class="d-flex justify-content-around mb-3"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> + <div class="d-flex justify-content-evenly"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> +</div> + +```html +<div class="d-flex justify-content-start">...</div> +<div class="d-flex justify-content-end">...</div> +<div class="d-flex justify-content-center">...</div> +<div class="d-flex justify-content-between">...</div> +<div class="d-flex justify-content-around">...</div> +<div class="d-flex justify-content-evenly">...</div> +``` + +Responsive variations also exist for `justify-content`. + +{{< markdown >}} +{{< flex.inline >}} +{{- range $.Site.Data.breakpoints }} +- `.justify-content{{ .abbr }}-start` +- `.justify-content{{ .abbr }}-end` +- `.justify-content{{ .abbr }}-center` +- `.justify-content{{ .abbr }}-between` +- `.justify-content{{ .abbr }}-around` +- `.justify-content{{ .abbr }}-evenly` +{{- end -}} +{{< /flex.inline >}} +{{< /markdown >}} + +## Align items + +Use `align-items` utilities on flexbox containers to change the alignment of flex items on the cross axis (the y-axis to start, x-axis if `flex-direction: column`). Choose from `start`, `end`, `center`, `baseline`, or `stretch` (browser default). + +<div class="bd-example bd-example-flex"> + <div class="d-flex align-items-start mb-3" style="height: 100px"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> + <div class="d-flex align-items-end mb-3" style="height: 100px"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> + <div class="d-flex align-items-center mb-3" style="height: 100px"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> + <div class="d-flex align-items-baseline mb-3" style="height: 100px"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> + <div class="d-flex align-items-stretch" style="height: 100px"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> +</div> + +```html +<div class="d-flex align-items-start">...</div> +<div class="d-flex align-items-end">...</div> +<div class="d-flex align-items-center">...</div> +<div class="d-flex align-items-baseline">...</div> +<div class="d-flex align-items-stretch">...</div> +``` + +Responsive variations also exist for `align-items`. + +{{< markdown >}} +{{< flex.inline >}} +{{- range $.Site.Data.breakpoints }} +- `.align-items{{ .abbr }}-start` +- `.align-items{{ .abbr }}-end` +- `.align-items{{ .abbr }}-center` +- `.align-items{{ .abbr }}-baseline` +- `.align-items{{ .abbr }}-stretch` +{{- end -}} +{{< /flex.inline >}} +{{< /markdown >}} + +## Align self + +Use `align-self` utilities on flexbox items to individually change their alignment on the cross axis (the y-axis to start, x-axis if `flex-direction: column`). Choose from the same options as `align-items`: `start`, `end`, `center`, `baseline`, or `stretch` (browser default). + +<div class="bd-example bd-example-flex"> + <div class="d-flex mb-3" style="height: 100px"> + <div class="p-2">Flex item</div> + <div class="align-self-start p-2">Aligned flex item</div> + <div class="p-2">Flex item</div> + </div> + <div class="d-flex mb-3" style="height: 100px"> + <div class="p-2">Flex item</div> + <div class="align-self-end p-2">Aligned flex item</div> + <div class="p-2">Flex item</div> + </div> + <div class="d-flex mb-3" style="height: 100px"> + <div class="p-2">Flex item</div> + <div class="align-self-center p-2">Aligned flex item</div> + <div class="p-2">Flex item</div> + </div> + <div class="d-flex mb-3" style="height: 100px"> + <div class="p-2">Flex item</div> + <div class="align-self-baseline p-2">Aligned flex item</div> + <div class="p-2">Flex item</div> + </div> + <div class="d-flex" style="height: 100px"> + <div class="p-2">Flex item</div> + <div class="align-self-stretch p-2">Aligned flex item</div> + <div class="p-2">Flex item</div> + </div> +</div> + +```html +<div class="align-self-start">Aligned flex item</div> +<div class="align-self-end">Aligned flex item</div> +<div class="align-self-center">Aligned flex item</div> +<div class="align-self-baseline">Aligned flex item</div> +<div class="align-self-stretch">Aligned flex item</div> +``` + +Responsive variations also exist for `align-self`. + +{{< markdown >}} +{{< flex.inline >}} +{{- range $.Site.Data.breakpoints }} +- `.align-self{{ .abbr }}-start` +- `.align-self{{ .abbr }}-end` +- `.align-self{{ .abbr }}-center` +- `.align-self{{ .abbr }}-baseline` +- `.align-self{{ .abbr }}-stretch` +{{- end -}} +{{< /flex.inline >}} +{{< /markdown >}} + +## Fill + +Use the `.flex-fill` class on a series of sibling elements to force them into widths equal to their content (or equal widths if their content does not surpass their border-boxes) while taking up all available horizontal space. + +{{< example class="bd-example-flex" >}} +<div class="d-flex"> + <div class="p-2 flex-fill">Flex item with a lot of content</div> + <div class="p-2 flex-fill">Flex item</div> + <div class="p-2 flex-fill">Flex item</div> +</div> +{{< /example >}} + +Responsive variations also exist for `flex-fill`. + +{{< markdown >}} +{{< flex.inline >}} +{{- range $.Site.Data.breakpoints }} +- `.flex{{ .abbr }}-fill` +{{- end -}} +{{< /flex.inline >}} +{{< /markdown >}} + +## Grow and shrink + +Use `.flex-grow-*` utilities to toggle a flex item's ability to grow to fill available space. In the example below, the `.flex-grow-1` elements uses all available space it can, while allowing the remaining two flex items their necessary space. + +{{< example class="bd-example-flex" >}} +<div class="d-flex"> + <div class="p-2 flex-grow-1">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Third flex item</div> +</div> +{{< /example >}} + +Use `.flex-shrink-*` utilities to toggle a flex item's ability to shrink if necessary. In the example below, the second flex item with `.flex-shrink-1` is forced to wrap its contents to a new line, "shrinking" to allow more space for the previous flex item with `.w-100`. + +{{< example class="bd-example-flex" >}} +<div class="d-flex"> + <div class="p-2 w-100">Flex item</div> + <div class="p-2 flex-shrink-1">Flex item</div> +</div> +{{< /example >}} + +Responsive variations also exist for `flex-grow` and `flex-shrink`. + +{{< markdown >}} +{{< flex.inline >}} +{{- range $.Site.Data.breakpoints }} +- `.flex{{ .abbr }}-{grow|shrink}-0` +- `.flex{{ .abbr }}-{grow|shrink}-1` +{{- end -}} +{{< /flex.inline >}} +{{< /markdown >}} + +## Auto margins + +Flexbox can do some pretty awesome things when you mix flex alignments with auto margins. Shown below are three examples of controlling flex items via auto margins: default (no auto margin), pushing two items to the right (`.me-auto`), and pushing two items to the left (`.ms-auto`). + +{{< example class="bd-example-flex" >}} +<div class="d-flex mb-3"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> +</div> + +<div class="d-flex mb-3"> + <div class="me-auto p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> +</div> + +<div class="d-flex mb-3"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="ms-auto p-2">Flex item</div> +</div> +{{< /example >}} + +### With align-items + +Vertically move one flex item to the top or bottom of a container by mixing `align-items`, `flex-direction: column`, and `margin-top: auto` or `margin-bottom: auto`. + +{{< example class="bd-example-flex" >}} +<div class="d-flex align-items-start flex-column mb-3" style="height: 200px;"> + <div class="mb-auto p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> +</div> + +<div class="d-flex align-items-end flex-column mb-3" style="height: 200px;"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="mt-auto p-2">Flex item</div> +</div> +{{< /example >}} + +## Wrap + +Change how flex items wrap in a flex container. Choose from no wrapping at all (the browser default) with `.flex-nowrap`, wrapping with `.flex-wrap`, or reverse wrapping with `.flex-wrap-reverse`. + +<div class="bd-example bd-example-flex"> + <div class="d-flex flex-nowrap" style="width: 8rem;"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> +</div> + +```html +<div class="d-flex flex-nowrap"> + ... +</div> +``` + +<div class="bd-example bd-example-flex"> + <div class="d-flex flex-wrap"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> +</div> + +```html +<div class="d-flex flex-wrap"> + ... +</div> +``` + +<div class="bd-example bd-example-flex"> + <div class="d-flex flex-wrap-reverse"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> +</div> + +```html +<div class="d-flex flex-wrap-reverse"> + ... +</div> +``` + + +Responsive variations also exist for `flex-wrap`. + +{{< markdown >}} +{{< flex.inline >}} +{{- range $.Site.Data.breakpoints }} +- `.flex{{ .abbr }}-nowrap` +- `.flex{{ .abbr }}-wrap` +- `.flex{{ .abbr }}-wrap-reverse` +{{- end -}} +{{< /flex.inline >}} +{{< /markdown >}} + +## Order + +Change the _visual_ order of specific flex items with a handful of `order` utilities. We only provide options for making an item first or last, as well as a reset to use the DOM order. As `order` takes any integer value from 0 to 5, add custom CSS for any additional values needed. + +{{< example class="bd-example-flex" >}} +<div class="d-flex flex-nowrap"> + <div class="order-3 p-2">First flex item</div> + <div class="order-2 p-2">Second flex item</div> + <div class="order-1 p-2">Third flex item</div> +</div> +{{< /example >}} + +Responsive variations also exist for `order`. + +{{< markdown >}} +{{< flex.inline >}} +{{- range $bp := $.Site.Data.breakpoints -}} +{{- range (seq 0 5) }} +- `.order{{ $bp.abbr }}-{{ . }}` +{{- end -}} +{{- end -}} +{{< /flex.inline >}} +{{< /markdown >}} + +Additionally there are also responsive `.order-first` and `.order-last` classes that change the `order` of an element by applying `order: -1` and `order: 6`, respectively. + +{{< markdown >}} +{{< flex.inline >}} +{{- range $bp := $.Site.Data.breakpoints -}} +{{- range (slice "first" "last") }} +- `.order{{ $bp.abbr }}-{{ . }}` +{{- end -}} +{{- end -}} +{{< /flex.inline >}} +{{< /markdown >}} + +## Align content + +Use `align-content` utilities on flexbox containers to align flex items *together* on the cross axis. Choose from `start` (browser default), `end`, `center`, `between`, `around`, or `stretch`. To demonstrate these utilities, we've enforced `flex-wrap: wrap` and increased the number of flex items. + +**Heads up!** This property has no effect on single rows of flex items. + +<div class="bd-example bd-example-flex"> + <div class="d-flex align-content-start flex-wrap mb-3" style="height: 200px"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> +</div> + +```html +<div class="d-flex align-content-start flex-wrap"> + ... +</div> +``` + +<div class="bd-example bd-example-flex"> + <div class="d-flex align-content-end flex-wrap mb-3" style="height: 200px"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> +</div> + +```html +<div class="d-flex align-content-end flex-wrap">...</div> +``` + +<div class="bd-example bd-example-flex"> + <div class="d-flex align-content-center flex-wrap mb-3" style="height: 200px"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> +</div> + +```html +<div class="d-flex align-content-center flex-wrap">...</div> +``` + +<div class="bd-example bd-example-flex"> + <div class="d-flex align-content-between flex-wrap mb-3" style="height: 200px"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> +</div> + +```html +<div class="d-flex align-content-between flex-wrap">...</div> +``` + +<div class="bd-example bd-example-flex"> + <div class="d-flex align-content-around flex-wrap mb-3" style="height: 200px"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> +</div> + +```html +<div class="d-flex align-content-around flex-wrap">...</div> +``` + +<div class="bd-example bd-example-flex"> + <div class="d-flex align-content-stretch flex-wrap mb-3" style="height: 200px"> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + <div class="p-2">Flex item</div> + </div> +</div> + +```html +<div class="d-flex align-content-stretch flex-wrap">...</div> +``` + +Responsive variations also exist for `align-content`. + +{{< markdown >}} +{{< flex.inline >}} +{{- range $.Site.Data.breakpoints }} +- `.align-content{{ .abbr }}-start` +- `.align-content{{ .abbr }}-end` +- `.align-content{{ .abbr }}-center` +- `.align-content{{ .abbr }}-between` +- `.align-content{{ .abbr }}-around` +- `.align-content{{ .abbr }}-stretch` +{{- end -}} +{{< /flex.inline >}} +{{< /markdown >}} + +## Media object + +Looking to replicate the [media object component](https://getbootstrap.com/docs/4.6/components/media-object/) from Bootstrap 4? Recreate it in no time with a few flex utilities that allow even more flexibility and customization than before. + +{{< example >}} +<div class="d-flex"> + <div class="flex-shrink-0"> + {{< placeholder width="100" height="100" color="#999" background="#e5e5e5" text="Image" >}} + </div> + <div class="flex-grow-1 ms-3"> + This is some content from a media component. You can replace this with any content and adjust it as needed. + </div> +</div> +{{< /example >}} + +And say you want to vertically center the content next to the image: + +{{< example >}} +<div class="d-flex align-items-center"> + <div class="flex-shrink-0"> + {{< placeholder width="100" height="100" color="#999" background="#e5e5e5" text="Image" >}} + </div> + <div class="flex-grow-1 ms-3"> + This is some content from a media component. You can replace this with any content and adjust it as needed. + </div> +</div> +{{< /example >}} + +## Sass + +### Utilities API + +Flexbox utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}}) + +{{< scss-docs name="utils-flex" file="scss/_utilities.scss" >}} diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/float.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/float.md index a18c21471..a18c21471 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/float.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/float.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/interactions.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/interactions.md index 35ea2b995..35ea2b995 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/interactions.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/interactions.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/opacity.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/opacity.md index a2fdc3807..5cc4c225f 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/opacity.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/opacity.md @@ -3,6 +3,7 @@ layout: docs title: Opacity description: Control the opacity of elements. group: utilities +added: "5.1" --- The `opacity` property sets the opacity level for an element. The opacity level describes the transparency level, where `1` is not transparent at all, `.5` is 50% visible, and `0` is completely transparent. diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/overflow.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/overflow.md index a36374cd5..a36374cd5 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/overflow.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/overflow.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/position.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/position.md index 46e62dd36..5a6e849cc 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/position.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/position.md @@ -94,7 +94,7 @@ Here are some real life examples of these classes: </button> <button type="button" class="btn btn-dark position-relative"> - Marker <svg width="1em" height="1em" viewBox="0 0 16 16" class="position-absolute top-100 start-50 translate-middle mt-1 bi bi-caret-down-fill" fill="#212529" xmlns="http://www.w3.org/2000/svg"><path d="M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z"/></svg> + Marker <svg width="1em" height="1em" viewBox="0 0 16 16" class="position-absolute top-100 start-50 translate-middle mt-1" fill="#212529" xmlns="http://www.w3.org/2000/svg"><path d="M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z"/></svg> </button> <button type="button" class="btn btn-primary position-relative"> @@ -107,7 +107,7 @@ You can use these classes with existing components to create new ones. Remember {{< example class="bd-example-position-examples" >}} <div class="position-relative m-4"> <div class="progress" style="height: 1px;"> - <div class="progress-bar" role="progressbar" style="width: 50%;" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div> + <div class="progress-bar" role="progressbar" aria-label="Progress" style="width: 50%;" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div> </div> <button type="button" class="position-absolute top-0 start-0 translate-middle btn btn-sm btn-primary rounded-pill" style="width: 2rem; height:2rem;">1</button> <button type="button" class="position-absolute top-0 start-50 translate-middle btn btn-sm btn-primary rounded-pill" style="width: 2rem; height:2rem;">2</button> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/shadows.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/shadows.md index bb5ef44ab..bb5ef44ab 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/shadows.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/shadows.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/sizing.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/sizing.md index 962575ffe..962575ffe 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/sizing.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/sizing.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/spacing.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/spacing.md index 70fbe7694..1e5f6d32f 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/spacing.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/spacing.md @@ -10,7 +10,9 @@ toc: true Assign responsive-friendly `margin` or `padding` values to an element or a subset of its sides with shorthand classes. Includes support for individual properties, all properties, and vertical and horizontal properties. Classes are built from a default Sass map ranging from `.25rem` to `3rem`. -Using the CSS Grid layout module? Consider using [the gap utility](#gap). +{{< callout >}} +**Using the CSS Grid layout module?** Consider using [the gap utility](#gap) instead. +{{< /callout >}} ### Notation diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/text.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/text.md index be8e0e1c0..060194f1b 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/text.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/text.md @@ -38,7 +38,7 @@ Wrap text with a `.text-wrap` class. Prevent text from wrapping with a `.text-nowrap` class. {{< example >}} -<div class="text-nowrap bd-highlight" style="width: 8rem;"> +<div class="text-nowrap bg-light border" style="width: 8rem;"> This text should overflow the parent. </div> {{< /example >}} @@ -89,6 +89,7 @@ Quickly change the `font-weight` or `font-style` of text with these utilities. ` {{< example >}} <p class="fw-bold">Bold text.</p> <p class="fw-bolder">Bolder weight text (relative to the parent element).</p> +<p class="fw-semibold">Semibold weight text.</p> <p class="fw-normal">Normal weight text.</p> <p class="fw-light">Light weight text.</p> <p class="fw-lighter">Lighter weight text (relative to the parent element).</p> diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/vertical-align.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/vertical-align.md index 9fe0eeb93..9fe0eeb93 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/vertical-align.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/vertical-align.md diff --git a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/visibility.md b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/visibility.md index 61eb30241..61eb30241 100644 --- a/vendor/twbs/bootstrap/site/content/docs/5.1/utilities/visibility.md +++ b/vendor/twbs/bootstrap/site/content/docs/5.2/utilities/visibility.md diff --git a/vendor/twbs/bootstrap/site/content/docs/_index.html b/vendor/twbs/bootstrap/site/content/docs/_index.html index 198e6af8c..fe65dc364 100644 --- a/vendor/twbs/bootstrap/site/content/docs/_index.html +++ b/vendor/twbs/bootstrap/site/content/docs/_index.html @@ -1,5 +1,5 @@ --- layout: redirect sitemap_exclude: true -redirect: "/docs/5.1/getting-started/introduction/" +redirect: "/docs/5.2/getting-started/introduction/" --- diff --git a/vendor/twbs/bootstrap/site/data/docs-versions.yml b/vendor/twbs/bootstrap/site/data/docs-versions.yml index 1c49d2050..4b3f4836f 100644 --- a/vendor/twbs/bootstrap/site/data/docs-versions.yml +++ b/vendor/twbs/bootstrap/site/data/docs-versions.yml @@ -48,7 +48,8 @@ - group: v5.x baseurl: "https://getbootstrap.com/docs" - description: "Current major release. Last update was v5.1.3." + description: "Current major release. Last update was v5.2.0." versions: - v: "5.0" - v: "5.1" + - v: "5.2" diff --git a/vendor/twbs/bootstrap/site/data/examples.yml b/vendor/twbs/bootstrap/site/data/examples.yml index 6d6419d21..38644ef4a 100644 --- a/vendor/twbs/bootstrap/site/data/examples.yml +++ b/vendor/twbs/bootstrap/site/data/examples.yml @@ -63,6 +63,8 @@ examples: - name: Navbars description: "Demonstration of all responsive and container options for the navbar." + - name: Navbars offcanvas + description: "Same as the Navbars example, but with our offcanvas component." - name: Navbar static description: "Single navbar example of a static top navbar along with some additional content." - name: Navbar fixed diff --git a/vendor/twbs/bootstrap/site/data/icons.yml b/vendor/twbs/bootstrap/site/data/icons.yml index 02727fc2f..6dafbe83f 100644 --- a/vendor/twbs/bootstrap/site/data/icons.yml +++ b/vendor/twbs/bootstrap/site/data/icons.yml @@ -4,7 +4,7 @@ preferred: - name: Feather website: https://feathericons.com/ - name: Octicons - website: https://octicons.github.com/ + website: https://primer.style/octicons/ more: - name: Bytesize @@ -12,9 +12,9 @@ more: - name: CoreUI Icons website: https://icons.coreui.io/ - name: Google Material icons - website: https://material.io/resources/icons/ + website: https://fonts.google.com/icons - name: Ionicons - website: https://ionicons.com/ + website: https://ionic.io/ionicons - name: Dripicons website: http://demo.amitjakhu.com/dripicons/ - name: Ikons @@ -23,5 +23,5 @@ more: website: https://icons8.com/ - name: icofont website: https://icofont.com/ - - name: Octicons - website: https://primer.style/octicons/ + - name: Tabler Icons + website: https://tabler-icons.io/ diff --git a/vendor/twbs/bootstrap/site/data/plugins.yml b/vendor/twbs/bootstrap/site/data/plugins.yml new file mode 100644 index 000000000..98ba5f2be --- /dev/null +++ b/vendor/twbs/bootstrap/site/data/plugins.yml @@ -0,0 +1,47 @@ +- name: Alert + description: Show and hide alert messages to your users. + link: components/alerts/#javascript-behavior + +- name: Button + description: Programmatically control the active state for buttons. + link: components/buttons/#button-plugin + +- name: Carousel + description: Add slideshows to any page, including support for crossfade. + link: components/carousel/ + +- name: Collapse + description: Expand and collapse areas of content, or create accordions. + link: components/collapse/ + +- name: Dropdown + description: Create menus of links, actions, forms, and more. + link: components/dropdowns/ + +- name: Modal + description: Add flexible and responsive dialogs to your project. + link: components/modal/ + +- name: Offcanvas + description: Build and toggle hidden sidebars into any page. + link: components/offcanvas/ + +- name: Popover + description: Create custom overlays. Built on Popper. + link: components/popovers/ + +- name: Scrollspy + description: Automatically update active nav links based on page scroll. + link: components/scrollspy/ + +- name: Tab + description: Allow Bootstrap nav components to toggle contents. + link: components/navs-tabs/ + +- name: Toast + description: Show and hide notifications to your visitors. + link: components/toasts/ + +- name: Tooltip + description: Replace browser tooltips with custom ones. Built on Popper. + link: components/tooltips/ diff --git a/vendor/twbs/bootstrap/site/data/sidebar.yml b/vendor/twbs/bootstrap/site/data/sidebar.yml index df95692af..2b7fddfd4 100644 --- a/vendor/twbs/bootstrap/site/data/sidebar.yml +++ b/vendor/twbs/bootstrap/site/data/sidebar.yml @@ -2,6 +2,8 @@ # The logic for the sidebar generation is in "site/layouts/partials/docs-sidebar.html". - title: Getting started + icon: book-half + icon_color: indigo pages: - title: Introduction - title: Download @@ -10,12 +12,15 @@ - title: JavaScript - title: Webpack - title: Parcel + - title: Vite - title: Accessibility - title: RFS - title: RTL - title: Contribute - title: Customize + icon: palette2 + icon_color: pink pages: - title: Overview - title: Sass @@ -26,6 +31,8 @@ - title: Optimize - title: Layout + icon: grid-fill + icon_color: teal pages: - title: Breakpoints - title: Containers @@ -37,6 +44,8 @@ - title: CSS Grid - title: Content + icon: file-earmark-richtext + icon_color: gray pages: - title: Reboot - title: Typography @@ -45,6 +54,8 @@ - title: Figures - title: Forms + icon: ui-radios + icon_color: blue pages: - title: Overview - title: Form control @@ -57,6 +68,8 @@ - title: Validation - title: Components + icon: menu-button-wide-fill + icon_color: cyan pages: - title: Accordion - title: Alerts @@ -71,8 +84,8 @@ - title: Dropdowns - title: List group - title: Modal - - title: Navs & tabs - title: Navbar + - title: Navs & tabs - title: Offcanvas - title: Pagination - title: Placeholders @@ -84,18 +97,23 @@ - title: Tooltips - title: Helpers + icon: magic + icon_color: orange pages: - title: Clearfix + - title: Color & background - title: Colored links - - title: Ratio - title: Position + - title: Ratio - title: Stacks - - title: Visually hidden - title: Stretched link - title: Text truncation - title: Vertical rule + - title: Visually hidden - title: Utilities + icon: braces-asterisk + icon_color: red pages: - title: API - title: Background @@ -116,11 +134,15 @@ - title: Visibility - title: Extend + icon: tools + icon_color: blue pages: - title: Approach - title: Icons - title: About + icon: globe2 + icon_color: indigo pages: - title: Overview - title: Team diff --git a/vendor/twbs/bootstrap/site/data/translations.yml b/vendor/twbs/bootstrap/site/data/translations.yml index 6c71985d6..803bb5cbf 100644 --- a/vendor/twbs/bootstrap/site/data/translations.yml +++ b/vendor/twbs/bootstrap/site/data/translations.yml @@ -1,8 +1,3 @@ -- name: العربية - code: ar - description: Bootstrap 5 باللغة العربية - url: https://bootstrap.mahdi.style/ - - name: 中文(繁體) code: zh-tw description: Bootstrap 4 繁體中文手冊 @@ -20,7 +15,7 @@ - name: Japanese code: ja - description: Bootstrap 4 日本語リファレンス + description: Bootstrap 5 日本語リファレンス url: https://getbootstrap.jp/ - name: Russian @@ -42,3 +37,8 @@ code: zh-CN description: Bootstrap 5 中文文档 url: https://v5.bootcss.com/ + +- name: Spanish + code: es + description: Bootstrap 5 Español + url: https://bootstrap.esdocu.com/ diff --git a/vendor/twbs/bootstrap/site/layouts/_default/_markup/render-heading.html b/vendor/twbs/bootstrap/site/layouts/_default/_markup/render-heading.html new file mode 100644 index 000000000..cfb3d8fe7 --- /dev/null +++ b/vendor/twbs/bootstrap/site/layouts/_default/_markup/render-heading.html @@ -0,0 +1,5 @@ +<h{{ .Level }} id="{{ .Anchor | safeURL }}">{{ .Text | safeHTML }} +{{- if and (ge .Level .Page.Site.Params.anchors.min) (le .Level .Page.Site.Params.anchors.max) }}{{" " -}} +<a class="anchor-link" href="#{{ .Anchor | safeURL }}" aria-label="Link to this section: {{ .Text | safeHTML }}"></a> +{{- end -}} +</h{{ .Level }}> diff --git a/vendor/twbs/bootstrap/site/layouts/_default/baseof.html b/vendor/twbs/bootstrap/site/layouts/_default/baseof.html index 713ab2864..fdf19b31f 100644 --- a/vendor/twbs/bootstrap/site/layouts/_default/baseof.html +++ b/vendor/twbs/bootstrap/site/layouts/_default/baseof.html @@ -5,6 +5,7 @@ </head> {{ block "body_override" . }}<body>{{ end }} {{ partial "skippy" . }} + {{ partial "icons" . }} {{ partial "docs-navbar" . }} diff --git a/vendor/twbs/bootstrap/site/layouts/_default/docs.html b/vendor/twbs/bootstrap/site/layouts/_default/docs.html index dd063c5dc..d7fcf23c8 100644 --- a/vendor/twbs/bootstrap/site/layouts/_default/docs.html +++ b/vendor/twbs/bootstrap/site/layouts/_default/docs.html @@ -1,29 +1,45 @@ {{ define "main" }} - {{ partial "docs-subnav" . }} - - <div class="container-xxl my-md-4 bd-layout"> + <div class="container-xxl bd-gutter mt-3 my-md-4 bd-layout"> <aside class="bd-sidebar"> - {{ partial "docs-sidebar" . }} + <div class="offcanvas-lg offcanvas-start" tabindex="-1" id="bdSidebar" aria-labelledby="bdSidebarOffcanvasLabel"> + <div class="offcanvas-header border-bottom"> + <h5 class="offcanvas-title" id="bdSidebarOffcanvasLabel">Browse docs</h5> + <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close" data-bs-target="#bdSidebar"></button> + </div> + + <div class="offcanvas-body"> + {{ partial "docs-sidebar" . }} + </div> + </div> </aside> <main class="bd-main order-1"> - <div class="bd-intro ps-lg-4"> + <div class="bd-intro pt-2 ps-lg-2"> <div class="d-md-flex flex-md-row-reverse align-items-center justify-content-between"> - <a class="btn btn-sm btn-bd-light mb-2 mb-md-0" href="{{ .Site.Params.repo }}/blob/main/site/content/{{ .Page.File.Path | replaceRE `\\` "/" }}" title="View and edit this file on GitHub" target="_blank" rel="noopener">View on GitHub</a> - <h1 class="bd-title" id="content">{{ .Title | markdownify }}</h1> + <a class="btn btn-sm btn-bd-light mb-3 mb-md-0 rounded-2" href="{{ .Site.Params.repo }}/blob/main/site/content/{{ .Page.File.Path | replaceRE `\\` "/" }}" title="View and edit this file on GitHub" target="_blank" rel="noopener"> + View on GitHub + </a> + <h1 class="bd-title mb-0" id="content">{{ .Title | markdownify }}</h1> </div> <p class="bd-lead">{{ .Page.Params.Description | markdownify }}</p> {{ partial "ads" . }} </div> {{ if (eq .Page.Params.toc true) }} - <div class="bd-toc mt-4 mb-5 my-md-0 ps-xl-3 mb-lg-5 text-muted"> - <strong class="d-block h6 my-2 pb-2 border-bottom">On this page</strong> - {{ .TableOfContents }} + <div class="bd-toc mt-3 mb-5 my-lg-0 ps-xl-3 mb-lg-5 text-muted"> + <button class="btn btn-link link-dark p-md-0 mb-2 mb-md-0 text-decoration-none bd-toc-toggle d-md-none" type="button" data-bs-toggle="collapse" data-bs-target="#tocContents" aria-expanded="false" aria-controls="tocContents"> + On this page + <svg class="bi d-md-none ms-2" aria-hidden="true"><use xlink:href="#chevron-expand"></use></svg> + </button> + <strong class="d-none d-md-block h6 my-2">On this page</strong> + <hr class="d-none d-md-block my-2"> + <div class="collapse bd-toc-collapse" id="tocContents"> + {{ .TableOfContents }} + </div> </div> {{ end }} - <div class="bd-content ps-lg-4"> + <div class="bd-content ps-lg-2"> {{ if .Page.Params.sections }} <div class="row g-3"> {{ range .Page.Params.sections }} @@ -46,4 +62,5 @@ {{ range .Page.Params.extra_js -}} <script{{ with .async }} async{{ end }} src="{{ .src }}"></script> {{- end -}} + <div class="position-fixed"><input type="text" tabindex="-1"></div> {{ end }} diff --git a/vendor/twbs/bootstrap/site/layouts/_default/examples.html b/vendor/twbs/bootstrap/site/layouts/_default/examples.html index 948c3756f..f70f859a6 100644 --- a/vendor/twbs/bootstrap/site/layouts/_default/examples.html +++ b/vendor/twbs/bootstrap/site/layouts/_default/examples.html @@ -31,6 +31,43 @@ font-size: 3.5rem; } } + + .b-example-divider { + height: 3rem; + background-color: rgba(0, 0, 0, .1); + border: solid rgba(0, 0, 0, .15); + border-width: 1px 0; + box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); + } + + .b-example-vr { + flex-shrink: 0; + width: 1.5rem; + height: 100vh; + } + + .bi { + vertical-align: -.125em; + fill: currentColor; + } + + .nav-scroller { + position: relative; + z-index: 2; + height: 2.75rem; + overflow-y: hidden; + } + + .nav-scroller .nav { + display: flex; + flex-wrap: nowrap; + padding-bottom: 1rem; + margin-top: -1px; + overflow-x: auto; + text-align: center; + white-space: nowrap; + -webkit-overflow-scrolling: touch; + } </style> {{ range .Page.Params.extra_css }} diff --git a/vendor/twbs/bootstrap/site/layouts/_default/single.html b/vendor/twbs/bootstrap/site/layouts/_default/single.html index 8ba99c718..52ae87c8e 100644 --- a/vendor/twbs/bootstrap/site/layouts/_default/single.html +++ b/vendor/twbs/bootstrap/site/layouts/_default/single.html @@ -1,14 +1,19 @@ {{ define "main" }} <header class="py-5 border-bottom"> - <div class="container pt-md-1 pb-md-4"> + <div class="container-xxl bd-gutter pt-md-1 pb-md-4"> <div class="row"> <div class="col-xl-8"> <h1 class="bd-title mt-0">{{ .Title | markdownify }}</h1> <p class="bd-lead">{{ .Page.Params.Description | markdownify }}</p> {{ if eq .Title "Examples" }} - <div class="d-flex flex-column flex-sm-row"> - <a href="{{ .Site.Params.download.dist_examples }}" class="btn btn-lg btn-bd-primary" onclick="ga('send', 'event', 'Examples', 'Hero', 'Download Examples');">Download examples</a> - <a href="{{ .Site.Params.download.source }}" class="btn btn-lg btn-outline-secondary mt-3 mt-sm-0 ms-sm-3" onclick="ga('send', 'event', 'Examples', 'Hero', 'Download');">Download source code</a> + <div class="d-flex flex-column flex-md-row gap-3"> + <a href="{{ .Site.Params.download.dist_examples }}" class="btn btn-lg bd-btn-lg btn-bd-primary d-flex align-items-center justify-content-center fw-semibold" onclick="ga('send', 'event', 'Examples', 'Hero', 'Download Examples');"> + <svg class="bi me-2" aria-hidden="true"><use xlink:href="#box-seam"></use></svg> + Download examples + </a> + <a href="{{ .Site.Params.download.source }}" class="btn btn-lg bd-btn-lg btn-outline-secondary" onclick="ga('send', 'event', 'Examples', 'Hero', 'Download');"> + Download source code + </a> </div> {{ end }} </div> @@ -20,17 +25,17 @@ </header> <main class="bd-content order-1 py-5" id="content"> - <div class="container"> + <div class="container-xxl bd-gutter"> {{ .Content }} {{ if eq .Title "Examples" }} <hr class="my-5"> <div class="container"> <div class="text-center"> - <div class="masthead-followup-icon d-inline-block mb-2 text-white bg-danger"> + <div class="masthead-followup-icon d-inline-block mb-2 text-bg-danger"> {{ partial "icons/droplet-fill.svg" (dict "width" "32" "height" "32") }} </div> - <h2 class="display-6 fw-normal">Go further with Bootstrap Themes</h2> + <h2 class="display-6 fw-normal">Go further with Bootstrap Themes</h2> <p class="col-md-10 col-lg-8 mx-auto lead"> Need something more than these examples? Take Bootstrap to the next level with premium themes from the <a href="{{ .Site.Params.themes }}">official Bootstrap Themes marketplace</a>. They’re built as their own extended frameworks, rich with new components and plugins, documentation, and powerful build tools. </p> diff --git a/vendor/twbs/bootstrap/site/layouts/partials/analytics.html b/vendor/twbs/bootstrap/site/layouts/partials/analytics.html index ded6e7244..98e5142f8 100644 --- a/vendor/twbs/bootstrap/site/layouts/partials/analytics.html +++ b/vendor/twbs/bootstrap/site/layouts/partials/analytics.html @@ -1,3 +1,5 @@ +<script defer src="https://cdn.usefathom.com/script.js" data-site="ITUSEYJG"></script> + <script> window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga('create', 'UA-146052-10', 'getbootstrap.com'); diff --git a/vendor/twbs/bootstrap/site/layouts/partials/callout-warning-data-bs-title-vs-title.md b/vendor/twbs/bootstrap/site/layouts/partials/callout-warning-data-bs-title-vs-title.md new file mode 100644 index 000000000..e932f22ad --- /dev/null +++ b/vendor/twbs/bootstrap/site/layouts/partials/callout-warning-data-bs-title-vs-title.md @@ -0,0 +1 @@ +Feel free to use either `title` or `data-bs-title` in your HTML. When `title` is used, Popper will replace it automatically with `data-bs-title` when the element is rendered. diff --git a/vendor/twbs/bootstrap/site/layouts/partials/docs-navbar.html b/vendor/twbs/bootstrap/site/layouts/partials/docs-navbar.html index e120c9c74..e4f6eaaa7 100644 --- a/vendor/twbs/bootstrap/site/layouts/partials/docs-navbar.html +++ b/vendor/twbs/bootstrap/site/layouts/partials/docs-navbar.html @@ -1,65 +1,88 @@ -<header class="navbar navbar-expand-md navbar-dark bd-navbar"> - <nav class="container-xxl flex-wrap flex-md-nowrap" aria-label="Main navigation"> - <a class="navbar-brand p-0 me-2" href="/" aria-label="Bootstrap"> +<header class="navbar navbar-expand-lg navbar-dark bd-navbar sticky-top"> + <nav class="container-xxl bd-gutter flex-wrap flex-lg-nowrap" aria-label="Main navigation"> + {{- if eq .Layout "docs" }} + <button class="navbar-toggler p-2" type="button" data-bs-toggle="offcanvas" data-bs-target="#bdSidebar" aria-controls="bdSidebar" aria-label="Toggle docs navigation"> + {{ partial "icons/hamburger.svg" (dict "class" "bi" "width" "24" "height" "24") }} + <span class="d-none fs-6 pe-1">Browse</span> + </button> + {{- else }} + <div class="d-lg-none" style="width: 2.25rem;"></div> + {{- end }} + + <a class="navbar-brand p-0 me-0 me-lg-2" href="/" aria-label="Bootstrap"> {{ partial "icons/bootstrap-white-fill.svg" (dict "class" "d-block my-1" "width" "40" "height" "32") }} </a> - <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#bdNavbar" aria-controls="bdNavbar" aria-expanded="false" aria-label="Toggle navigation"> - {{ partial "icons/hamburger.svg" (dict "class" "bi" "width" "32" "height" "32") }} + <button class="navbar-toggler d-flex d-lg-none order-3 p-2" type="button" data-bs-toggle="offcanvas" data-bs-target="#bdNavbar" aria-controls="bdNavbar" aria-label="Toggle navigation"> + <svg class="bi" aria-hidden="true"><use xlink:href="#three-dots"></use></svg> </button> - <div class="collapse navbar-collapse" id="bdNavbar"> - <ul class="navbar-nav flex-row flex-wrap bd-navbar-nav pt-2 py-md-0"> - <li class="nav-item col-6 col-md-auto"> - <a class="nav-link p-2{{ if .IsHome }} active" aria-current="page{{ end }}" href="/" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Bootstrap');">Home</a> - </li> - <li class="nav-item col-6 col-md-auto"> - <a class="nav-link p-2{{ if eq .Page.Layout "docs" }} active" aria-current="true{{ end }}" href="/docs/{{ .Site.Params.docs_version }}/getting-started/introduction/" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Docs');">Docs</a> - </li> - <li class="nav-item col-6 col-md-auto"> - <a class="nav-link p-2{{ if eq .Page.Title "Examples" }} active" aria-current="true{{ end }}" href="/docs/{{ .Site.Params.docs_version }}/examples/" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Examples');">Examples</a> - </li> - <li class="nav-item col-6 col-md-auto"> - <a class="nav-link p-2" href="{{ .Site.Params.icons }}" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Icons');" target="_blank" rel="noopener">Icons</a> - </li> - <li class="nav-item col-6 col-md-auto"> - <a class="nav-link p-2" href="{{ .Site.Params.themes }}" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Themes');" target="_blank" rel="noopener">Themes</a> - </li> - <li class="nav-item col-6 col-md-auto"> - <a class="nav-link p-2" href="{{ .Site.Params.blog }}" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Blog');" target="_blank" rel="noopener">Blog</a> - </li> - </ul> + <div class="offcanvas-lg offcanvas-end flex-grow-1" tabindex="-1" id="bdNavbar" aria-labelledby="bdNavbarOffcanvasLabel" data-bs-scroll="true"> + <div class="offcanvas-header px-4 pb-0"> + <h5 class="offcanvas-title text-white" id="bdNavbarOffcanvasLabel">Bootstrap</h5> + <button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvas" aria-label="Close" data-bs-target="#bdNavbar"></button> + </div> + + <div class="offcanvas-body p-4 pt-0 p-lg-0"> + <hr class="d-lg-none text-white-50"> + <ul class="navbar-nav flex-row flex-wrap bd-navbar-nav"> + <li class="nav-item col-6 col-lg-auto"> + <a class="nav-link py-2 px-0 px-lg-2{{ if eq .Page.Layout "docs" }} active" aria-current="true{{ end }}" href="/docs/{{ .Site.Params.docs_version }}/getting-started/introduction/" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Docs');">Docs</a> + </li> + <li class="nav-item col-6 col-lg-auto"> + <a class="nav-link py-2 px-0 px-lg-2{{ if eq .Page.Title "Examples" }} active" aria-current="true{{ end }}" href="/docs/{{ .Site.Params.docs_version }}/examples/" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Examples');">Examples</a> + </li> + <li class="nav-item col-6 col-lg-auto"> + <a class="nav-link py-2 px-0 px-lg-2" href="{{ .Site.Params.icons }}" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Icons');" target="_blank" rel="noopener">Icons</a> + </li> + <li class="nav-item col-6 col-lg-auto"> + <a class="nav-link py-2 px-0 px-lg-2" href="{{ .Site.Params.themes }}" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Themes');" target="_blank" rel="noopener">Themes</a> + </li> + <li class="nav-item col-6 col-lg-auto"> + <a class="nav-link py-2 px-0 px-lg-2" href="{{ .Site.Params.blog }}" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Blog');" target="_blank" rel="noopener">Blog</a> + </li> + </ul> + + <hr class="d-lg-none text-white-50"> - <hr class="d-md-none text-white-50"> + {{ if eq .Layout "docs" }} + <div class="bd-search" id="docsearch" data-bd-docs-version="{{ .Site.Params.docs_version }}"></div> - <ul class="navbar-nav flex-row flex-wrap ms-md-auto"> - <li class="nav-item col-6 col-md-auto"> - <a class="nav-link p-2" href="{{ .Site.Params.github_org }}" target="_blank" rel="noopener"> - {{ partial "icons/github.svg" (dict "class" "navbar-nav-svg d-inline-block align-text-top" "width" "36" "height" "36") }} - <small class="d-md-none ms-2">GitHub</small> - </a> - </li> - <li class="nav-item col-6 col-md-auto"> - <a class="nav-link p-2" href="https://twitter.com/{{ .Site.Params.twitter }}" target="_blank" rel="noopener"> - {{ partial "icons/twitter.svg" (dict "class" "navbar-nav-svg d-inline-block align-text-top" "width" "36" "height" "36") }} - <small class="d-md-none ms-2">Twitter</small> - </a> - </li> - <li class="nav-item col-6 col-md-auto"> - <a class="nav-link p-2" href="{{ .Site.Params.slack }}" target="_blank" rel="noopener"> - {{ partial "icons/slack.svg" (dict "class" "navbar-nav-svg d-inline-block align-text-top" "width" "36" "height" "36") }} - <small class="d-md-none ms-2">Slack</small> - </a> - </li> - <li class="nav-item col-6 col-md-auto"> - <a class="nav-link p-2" href="{{ .Site.Params.opencollective }}" target="_blank" rel="noopener"> - {{ partial "icons/opencollective.svg" (dict "class" "navbar-nav-svg d-inline-block align-text-top" "width" "36" "height" "36") }} - <small class="d-md-none ms-2">Open Collective</small> - </a> - </li> - </ul> + <hr class="d-lg-none text-white-50"> + {{ end }} - <a class="btn btn-bd-download d-lg-inline-block my-2 my-md-0 ms-md-3" href="/docs/{{ .Site.Params.docs_version }}/getting-started/download/">Download</a> + <ul class="navbar-nav flex-row flex-wrap ms-md-auto"> + <li class="nav-item col-6 col-lg-auto"> + <a class="nav-link py-2 px-0 px-lg-2" href="{{ .Site.Params.github_org }}" target="_blank" rel="noopener"> + {{ partial "icons/github.svg" (dict "class" "navbar-nav-svg" "width" "16" "height" "16") }} + <small class="d-lg-none ms-2">GitHub</small> + </a> + </li> + <li class="nav-item col-6 col-lg-auto"> + <a class="nav-link py-2 px-0 px-lg-2" href="https://twitter.com/{{ .Site.Params.twitter }}" target="_blank" rel="noopener"> + {{ partial "icons/twitter.svg" (dict "class" "navbar-nav-svg" "width" "16" "height" "16") }} + <small class="d-lg-none ms-2">Twitter</small> + </a> + </li> + <li class="nav-item col-6 col-lg-auto"> + <a class="nav-link py-2 px-0 px-lg-2" href="{{ .Site.Params.slack }}" target="_blank" rel="noopener"> + {{ partial "icons/slack.svg" (dict "class" "navbar-nav-svg" "width" "16" "height" "16") }} + <small class="d-lg-none ms-2">Slack</small> + </a> + </li> + <li class="nav-item col-6 col-lg-auto"> + <a class="nav-link py-2 px-0 px-lg-2" href="{{ .Site.Params.opencollective }}" target="_blank" rel="noopener"> + {{ partial "icons/opencollective.svg" (dict "class" "navbar-nav-svg" "width" "16" "height" "16") }} + <small class="d-lg-none ms-2">Open Collective</small> + </a> + </li> + <li class="nav-item py-1 col-12 col-lg-auto"> + <div class="vr d-none d-lg-flex h-100 mx-lg-2 text-white"></div> + <hr class="d-lg-none text-white-50"> + </li> + {{ partial "docs-versions" . }} + </ul> + </div> </div> </nav> </header> diff --git a/vendor/twbs/bootstrap/site/layouts/partials/docs-sidebar.html b/vendor/twbs/bootstrap/site/layouts/partials/docs-sidebar.html index eec268ceb..e7b557687 100644 --- a/vendor/twbs/bootstrap/site/layouts/partials/docs-sidebar.html +++ b/vendor/twbs/bootstrap/site/layouts/partials/docs-sidebar.html @@ -1,8 +1,8 @@ -<nav class="collapse bd-links" id="bd-docs-nav" aria-label="Docs navigation"> +<nav class="bd-links w-100" id="bd-docs-nav" aria-label="Docs navigation"> {{- $url := split .Permalink "/" -}} {{- $page_slug := index $url (sub (len $url) 2) -}} - <ul class="list-unstyled mb-0 py-3 pt-md-1"> + <ul class="bd-links-nav list-unstyled mb-0 pb-3 pb-md-2 pe-lg-2"> {{- range $group := .Site.Data.sidebar -}} {{- $link := $group.title -}} {{- $link_slug := $link | urlize -}} @@ -16,26 +16,27 @@ {{- $is_active_group := eq $.Page.Params.group $group_slug -}} {{- if $group.pages }} - <li class="mb-1"> - <button class="btn d-inline-flex align-items-center rounded{{ if not $is_active_group }} collapsed{{ end }}" data-bs-toggle="collapse" data-bs-target="#{{ $group_slug }}-collapse" aria-expanded="{{ $is_active_group }}"{{ if $is_active_group }} aria-current="true"{{ end }}> + <li class="bd-links-group py-2"> + <strong class="bd-links-heading d-flex w-100 align-items-center fw-semibold"> + {{- if $group.icon }} + <svg class="bi me-2"{{- if $group.icon_color }} style="color: var(--bs-{{ $group.icon_color }});"{{- end }} aria-hidden="true"><use xlink:href="#{{ $group.icon }}"></use></svg> + {{- end }} {{ $group.title }} - </button> + </strong> - <div class="collapse{{ if $is_active_group }} show{{ end }}" id="{{ $group_slug }}-collapse"> - <ul class="list-unstyled fw-normal pb-1 small"> - {{- range $doc := $group.pages -}} - {{- $doc_slug := $doc.title | urlize -}} - {{- $is_active := and $is_active_group (eq $page_slug $doc_slug) -}} - {{- $href := printf "/docs/%s/%s/%s/" $.Site.Params.docs_version $group_slug $doc_slug }} - <li><a href="{{ $href }}" class="d-inline-flex align-items-center rounded{{ if $is_active }} active{{ end }}"{{ if $is_active }} aria-current="page"{{ end }}>{{ $doc.title }}</a></li> - {{- end }} - </ul> - </div> + <ul class="list-unstyled fw-normal pb-2 small"> + {{- range $doc := $group.pages -}} + {{- $doc_slug := $doc.title | urlize -}} + {{- $is_active := and $is_active_group (eq $page_slug $doc_slug) -}} + {{- $href := printf "/docs/%s/%s/%s/" $.Site.Params.docs_version $group_slug $doc_slug }} + <li><a href="{{ $href }}" class="bd-links-link d-inline-block rounded{{ if $is_active }} active{{ end }}"{{ if $is_active }} aria-current="page"{{ end }}>{{ $doc.title }}</a></li> + {{- end }} + </ul> </li> {{- else }} - <li class="my-3 mx-4 border-top"></li> - <li> - <a href="/docs/{{ $.Site.Params.docs_version }}/{{ $group_slug }}/" class="d-inline-flex align-items-center rounded{{ if $is_active_group }} active{{ end }}"{{ if $is_active_group }} aria-current="page"{{ end }}> + <li class="bd-links-span-all mt-1 mb-3 mx-4 border-top"></li> + <li class="bd-links-span-all"> + <a href="/docs/{{ $.Site.Params.docs_version }}/{{ $group_slug }}/" class="bd-links-link d-inline-block rounded small {{ if $is_active_group }} active{{ end }}"{{ if $is_active_group }} aria-current="page"{{ end }}> {{ $group.title }} </a> </li> diff --git a/vendor/twbs/bootstrap/site/layouts/partials/docs-subnav.html b/vendor/twbs/bootstrap/site/layouts/partials/docs-subnav.html deleted file mode 100644 index 9f2faf3e2..000000000 --- a/vendor/twbs/bootstrap/site/layouts/partials/docs-subnav.html +++ /dev/null @@ -1,14 +0,0 @@ -<nav class="bd-subnavbar py-2" aria-label="Secondary navigation"> - <div class="container-xxl d-flex align-items-md-center"> - <form class="bd-search position-relative me-auto"> - <input type="search" class="form-control" id="search-input" placeholder="Search docs..." aria-label="Search docs for..." autocomplete="off" data-bd-docs-version="{{ .Site.Params.docs_version }}"> - </form> - - {{ partial "docs-versions" . }} - - <button class="btn bd-sidebar-toggle d-md-none py-0 px-1 ms-3 order-3 collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#bd-docs-nav" aria-controls="bd-docs-nav" aria-expanded="false" aria-label="Toggle docs navigation"> - {{ partial "icons/expand.svg" (dict "class" "bi bi-expand" "width" "24" "height" "24") }} - {{ partial "icons/collapse.svg" (dict "class" "bi bi-collapse" "width" "24" "height" "24") }} - </button> - </div> -</nav> diff --git a/vendor/twbs/bootstrap/site/layouts/partials/docs-versions.html b/vendor/twbs/bootstrap/site/layouts/partials/docs-versions.html index a38a81823..9b662e608 100644 --- a/vendor/twbs/bootstrap/site/layouts/partials/docs-versions.html +++ b/vendor/twbs/bootstrap/site/layouts/partials/docs-versions.html @@ -1,14 +1,46 @@ -<div class="dropdown ms-3"> - <button class="btn btn-bd-light dropdown-toggle" id="bd-versions" data-bs-toggle="dropdown" aria-expanded="false" data-bs-display="static"> - <span class="d-none d-lg-inline">Bootstrap</span> v{{ .Site.Params.docs_version }} +{{- $url := split .Permalink "/" -}} +{{- $page_version := index $url (sub (len $url) 4) -}} +{{- $group_slug := index $url (sub (len $url) 3) -}} +{{- $page_slug := index $url (sub (len $url) 2) -}} + +{{- $versions_link := "" -}} +{{- if and (eq .Layout "docs") (eq $page_version .Site.Params.docs_version) -}} + {{- $versions_link = printf "%s/%s/" $group_slug $page_slug -}} +{{- else if (eq .Layout "single") }} + {{- $versions_link = printf "%s/" $page_slug -}} +{{- end }} + +<li class="nav-item dropdown"> + <button type="button" class="btn btn-link nav-link py-2 px-0 px-lg-2 dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" data-bs-display="static"> + <span class="d-lg-none" aria-hidden="true">Bootstrap</span><span class="visually-hidden">Bootstrap </span> v{{ .Site.Params.docs_version }} <span class="visually-hidden">(switch to other versions)</span> </button> - <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="bd-versions"> - <li><a class="dropdown-item current" aria-current="true" href="/docs/{{ .Site.Params.docs_version }}/">Latest ({{ .Site.Params.docs_version }}.x)</a></li> + <ul class="dropdown-menu dropdown-menu-end"> + <li><h6 class="dropdown-header">v5 releases</h6></li> + <li> + <a class="dropdown-item current" aria-current="true" href="{{ if .IsHome }}/{{ else }}/docs/{{ .Site.Params.docs_version }}/{{ $versions_link }}{{ end }}"> + Latest ({{ .Site.Params.docs_version }}.x) + </a> + </li> + <li> + {{- if (eq .Page.Params.added "5.2") }} + <div class="dropdown-item disabled">v5.1.3</div> + {{- else }} + <a class="dropdown-item" href="https://getbootstrap.com/docs/5.1/{{ $versions_link }}">v5.1.3</a> + {{- end }} + </li> + <li> + {{- if or (eq .Page.Params.added "5.1") (eq .Page.Params.added "5.2") }} + <div class="dropdown-item disabled">v5.0.2</div> + {{- else }} + <a class="dropdown-item" href="https://getbootstrap.com/docs/5.0/{{ $versions_link }}">v5.0.2</a> + {{- end }} + </li> <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header">Previous releases</h6></li> <li><a class="dropdown-item" href="https://getbootstrap.com/docs/4.6/">v4.6.x</a></li> <li><a class="dropdown-item" href="https://getbootstrap.com/docs/3.4/">v3.4.1</a></li> <li><a class="dropdown-item" href="https://getbootstrap.com/2.3.2/">v2.3.2</a></li> <li><hr class="dropdown-divider"></li> <li><a class="dropdown-item" href="/docs/versions/">All versions</a></li> </ul> -</div> +</li> diff --git a/vendor/twbs/bootstrap/site/layouts/partials/favicons.html b/vendor/twbs/bootstrap/site/layouts/partials/favicons.html index 50f6a5bbb..58bdb8b8b 100644 --- a/vendor/twbs/bootstrap/site/layouts/partials/favicons.html +++ b/vendor/twbs/bootstrap/site/layouts/partials/favicons.html @@ -3,6 +3,6 @@ <link rel="icon" href="/docs/{{ .Site.Params.docs_version }}/assets/img/favicons/favicon-32x32.png" sizes="32x32" type="image/png"> <link rel="icon" href="/docs/{{ .Site.Params.docs_version }}/assets/img/favicons/favicon-16x16.png" sizes="16x16" type="image/png"> <link rel="manifest" href="/docs/{{ .Site.Params.docs_version }}/assets/img/favicons/manifest.json"> -<link rel="mask-icon" href="/docs/{{ .Site.Params.docs_version }}/assets/img/favicons/safari-pinned-tab.svg" color="#7952b3"> +<link rel="mask-icon" href="/docs/{{ .Site.Params.docs_version }}/assets/img/favicons/safari-pinned-tab.svg" color="#712cf9"> <link rel="icon" href="/docs/{{ .Site.Params.docs_version }}/assets/img/favicons/favicon.ico"> -<meta name="theme-color" content="#7952b3"> +<meta name="theme-color" content="#712cf9"> diff --git a/vendor/twbs/bootstrap/site/layouts/partials/footer.html b/vendor/twbs/bootstrap/site/layouts/partials/footer.html index e3d0f13e4..78febb204 100644 --- a/vendor/twbs/bootstrap/site/layouts/partials/footer.html +++ b/vendor/twbs/bootstrap/site/layouts/partials/footer.html @@ -1,5 +1,5 @@ -<footer class="bd-footer py-5 mt-5 bg-light"> - <div class="container py-5"> +<footer class="bd-footer py-4 py-md-5 mt-5 bg-light"> + <div class="container py-4 py-md-5 px-4 px-md-3"> <div class="row"> <div class="col-lg-3 mb-3"> <a class="d-inline-flex align-items-center mb-2 link-dark text-decoration-none" href="/" aria-label="Bootstrap"> @@ -18,8 +18,10 @@ <li class="mb-2"><a href="/">Home</a></li> <li class="mb-2"><a href="/docs/{{ .Site.Params.docs_version }}/">Docs</a></li> <li class="mb-2"><a href="/docs/{{ .Site.Params.docs_version }}/examples/">Examples</a></li> + <li class="mb-2"><a href="{{ .Site.Params.icons }}">Icons</a></li> <li class="mb-2"><a href="{{ .Site.Params.themes }}">Themes</a></li> <li class="mb-2"><a href="{{ .Site.Params.blog }}">Blog</a></li> + <li class="mb-2"><a href="{{ .Site.Params.swag }}">Swag Store</a></li> </ul> </div> <div class="col-6 col-lg-2 mb-3"> @@ -29,6 +31,7 @@ <li class="mb-2"><a href="/docs/{{ .Site.Params.docs_version }}/examples/starter-template/">Starter template</a></li> <li class="mb-2"><a href="/docs/{{ .Site.Params.docs_version }}/getting-started/webpack/">Webpack</a></li> <li class="mb-2"><a href="/docs/{{ .Site.Params.docs_version }}/getting-started/parcel/">Parcel</a></li> + <li class="mb-2"><a href="/docs/{{ .Site.Params.docs_version }}/getting-started/vite/">Vite</a></li> </ul> </div> <div class="col-6 col-lg-2 mb-3"> diff --git a/vendor/twbs/bootstrap/site/layouts/partials/guide-footer.md b/vendor/twbs/bootstrap/site/layouts/partials/guide-footer.md new file mode 100644 index 000000000..22d4c14b8 --- /dev/null +++ b/vendor/twbs/bootstrap/site/layouts/partials/guide-footer.md @@ -0,0 +1,3 @@ +<hr class="my-5"> + +_See something wrong or out of date here? Please [open an issue on GitHub]({{ .Site.Params.repo }}/issues/new/choose). Need help troubleshooting? [Search or start a discussion]({{ .Site.Params.repo }}/discussions) on GitHub._ diff --git a/vendor/twbs/bootstrap/site/layouts/partials/header.html b/vendor/twbs/bootstrap/site/layouts/partials/header.html index 2d2eb29d9..a592cdccb 100644 --- a/vendor/twbs/bootstrap/site/layouts/partials/header.html +++ b/vendor/twbs/bootstrap/site/layouts/partials/header.html @@ -11,6 +11,10 @@ <link rel="canonical" href="{{ .Permalink }}"> +{{- if eq .Page.Layout "docs" -}} +<link rel="preconnect" href="https://AK7KMZKZHQ-dsn.algolia.net" crossorigin> +{{- end }} + {{ with .Params.robots -}} <meta name="robots" content="{{ . }}"> {{- end }} diff --git a/vendor/twbs/bootstrap/site/layouts/partials/home/masthead-followup.html b/vendor/twbs/bootstrap/site/layouts/partials/home/masthead-followup.html index e6cfb4724..00a9e3367 100644 --- a/vendor/twbs/bootstrap/site/layouts/partials/home/masthead-followup.html +++ b/vendor/twbs/bootstrap/site/layouts/partials/home/masthead-followup.html @@ -1,37 +1,39 @@ -<div class="container masthead-followup px-4 px-md-3"> - <section class="row mb-5 pb-md-4 align-items-center"> - <div class="col-md-5"> - <div class="masthead-followup-icon d-inline-block mb-2 text-white bg-success"> - {{ partial "icons/code.svg" (dict "width" "32" "height" "32") }} - </div> - <h2 class="display-5 fw-normal">Installation</h2> - <p class="lead fw-normal"> - Install Bootstrap’s source Sass and JavaScript files via npm, Composer, or Meteor. - </p> - <p>Package managed installs don’t include documentation or our full build scripts. You can also <a href="https://github.com/twbs/bootstrap-npm-starter">use our npm template repo</a> to quickly generate a Bootstrap project via npm.</p> - <a class="btn btn-lg btn-outline-primary mb-3" href="/docs/{{ .Site.Params.docs_version }}/getting-started/download/">Read installation docs</a> - </div> - <div class="col-md-7 ps-md-5"> - {{ highlight "npm install bootstrap" "sh" "" }} - {{ highlight (printf ("gem install bootstrap -v %s") .Site.Params.current_ruby_version) "sh" "" }} +<div class="container-xxl bd-gutter masthead-followup"> + <div class="col-lg-7 mx-auto pb-3 mb-3 mb-md-5 text-md-center"> + <div class="masthead-followup-icon d-inline-block mb-3" style="--bg-rgb: var(--bd-violet-rgb);"> + <svg class="bi fs-1"><use xlink:href="#code"></use></svg> </div> - </section> + <h2 class="display-5 mb-3 fw-semibold lh-sm">Get started any way you want</h2> + <p class="lead fw-normal"> + Jump right into building with Bootstrap—use the CDN, install it via package manager, or download the source code. + </p> + <p class="d-flex justify-content-md-start justify-content-md-center lead fw-normal"> + <a href="/docs/{{ .Site.Params.docs_version }}/getting-started/download/" class="icon-link fw-semibold justify-content-center ps-md-4"> + Read installation docs + <svg class="bi"><use xlink:href="#arrow-right-short"></use></svg> + </a> + </p> + </div> - <section class="row mb-5 pb-md-4 align-items-center"> - <div class="col-md-5"> - <div class="masthead-followup-icon d-inline-block mb-2 text-white bg-primary"> - {{ partial "icons/cloud-fill.svg" (dict "width" "32" "height" "32") }} - </div> - <h2 class="display-5 fw-normal">jsDelivr</h2> - <p class="lead fw-normal"> - When you only need to include Bootstrap’s compiled CSS or JS, you can use <a href="https://www.jsdelivr.com/">jsDelivr</a>. + <section class="row g-3 g-md-5 mb-5 pb-5 justify-content-center"> + <div class="col-lg-6 py-lg-4 pe-lg-5"> + <svg class="bi mb-2 fs-2 text-muted"><use xlink:href="#box-seam"></use></svg> + <h3 class="fw-semibold">Install via package manager</h3> + <p class="pe-lg-5"> + Install Bootstrap’s source Sass and JavaScript files via npm, RubyGems, Composer, or Meteor. Package managed installs don’t include documentation or our full build scripts. You can also <a href="https://github.com/twbs/bootstrap-npm-starter">use our npm template repo</a> to quickly generate a Bootstrap project via npm. </p> + {{ highlight (printf ("npm install bootstrap@%s") .Site.Params.current_version) "sh" "" }} + {{ highlight (printf ("gem install bootstrap -v %s") .Site.Params.current_ruby_version) "sh" "" }} <p> - See it in action with our simple <a href="/docs/{{ .Site.Params.docs_version }}/getting-started/introduction/#starter-template">starter template</a>, or <a href="/docs/{{ .Site.Params.docs_version }}/examples/">browse the examples</a> to jumpstart your next project. You can also choose to include Popper and our JS <a href="/docs/{{ .Site.Params.docs_version }}/getting-started/introduction/#separate">separately</a>. + <a href="/docs/{{ .Site.Params.docs_version }}/getting-started/download/">Read our installation docs</a> for more info and additional package managers. </p> - <a class="btn btn-lg btn-outline-primary mb-3" href="/docs/{{ .Site.Params.docs_version }}/getting-started/introduction/">Explore the docs</a> </div> - <div class="col-md-7 ps-md-5"> + <div class="col-lg-6 py-lg-4 ps-lg-5 border-lg-start"> + <svg class="bi mb-2 fs-2 text-muted"><use xlink:href="#globe2"></use></svg> + <h3 class="fw-semibold">Include via CDN</h3> + <p class="pe-lg-5"> + When you only need to include Bootstrap’s compiled CSS or JS, you can use <a href="https://www.jsdelivr.com/package/npm/bootstrap">jsDelivr</a>. See it in action with our simple <a href="/docs/{{ .Site.Params.docs_version }}/getting-started/introduction/#quick-start">quick start</a>, or <a href="/docs/{{ .Site.Params.docs_version }}/examples/">browse the examples</a> to jumpstart your next project. You can also choose to include Popper and our JS <a href="/docs/{{ .Site.Params.docs_version }}/getting-started/introduction/#separate">separately</a>. + </p> {{ highlight (printf (`<!-- CSS only --> <link href="%s" rel="stylesheet" integrity=%q crossorigin="anonymous"> `) .Site.Params.cdn.css (.Site.Params.cdn.css_hash | safeHTMLAttr)) "html" "" }} @@ -39,23 +41,288 @@ <script src="%s" integrity=%q crossorigin="anonymous"></script> `) .Site.Params.cdn.js_bundle (.Site.Params.cdn.js_bundle_hash | safeHTMLAttr)) "html" "" }} </div> + + <div class="col-md-8 mx-auto text-center"> + <h4 class="fw-semibold">Read our getting started guides</h4> + <p>Get a jump on including Bootstrap's source files in a new project with our official guides.</p> + <div class="d-flex flex-wrap align-items-center justify-content-center gap-4 mt-4"> + <a class="d-flex flex-column align-items-center text-decoration-none" href="/docs/{{ .Site.Params.docs_version }}/getting-started/webpack"> + <img class="d-block mb-2" src="/docs/{{ .Site.Params.docs_version }}/assets/img/webpack.png" alt="" width="72" height="72" loading="lazy"> + <span class="text-muted">Webpack</span> + </a> + <a class="d-flex flex-column align-items-center text-decoration-none" href="/docs/{{ .Site.Params.docs_version }}/getting-started/parcel"> + <img class="d-block mb-2" src="/docs/{{ .Site.Params.docs_version }}/assets/img/parcel.png" alt="" width="72" height="72" loading="lazy"> + <span class="text-muted">Parcel</span> + </a> + <a class="d-flex flex-column align-items-center text-decoration-none" href="/docs/{{ .Site.Params.docs_version }}/getting-started/vite"> + <img class="d-block mb-2" src="/docs/{{ .Site.Params.docs_version }}/assets/img/vite.png" alt="" width="72" height="72" loading="lazy"> + <span class="text-muted">Vite</span> + </a> + </div> + </div> + </section> + + <section class="col-lg-7 mb-5"> + <div class="masthead-followup-icon d-inline-block mb-3" style="--bg-rgb: var(--bs-primary-rgb);"> + <svg class="bi fs-1"><use xlink:href="#palette2"></use></svg> + </div> + <h2 class="display-5 mb-3 fw-semibold lh-sm">Customize everything with Sass</h2> + <p class="lead fw-normal"> + Bootstrap utilizes Sass for a modular and customizable architecture. Import only the components you need, enable global options like gradients and shadows, and write your own CSS with our variables, maps, functions, and mixins. + </p> + <p class="d-flex justify-content-start lead fw-normal"> + <a href="/docs/{{ .Site.Params.docs_version }}/customize/overview/" class="icon-link fw-semibold"> + Learn more about customizing + <svg class="bi"><use xlink:href="#arrow-right-short"></use></svg> + </a> + </p> </section> - <section class="row mb-5 pb-md-4 align-items-center"> - <div class="col-md-5"> - <div class="masthead-followup-icon d-inline-block mb-2 text-white bd-bg-purple-bright"> + <section class="row g-md-5 mb-5 pb-md-5"> + <div class="col-lg-6"> + <h3>Include all of Bootstrap’s Sass</h3> + <p>Import one stylesheet and you're off to the races with every feature of our CSS.</p> + {{ highlight (printf `// Variable overrides first +$primary: #900; +$enable-shadows: true; +$prefix: "mo-"; + +// Then import Bootstrap +@import "../node_modules/bootstrap/scss/bootstrap"; +`) "scss" "" }} + <p>Learn more about our <a href="/docs/{{ .Site.Params.docs_version }}/customize/options/">global Sass options</a>.</p> + </div> + <div class="col-lg-6"> + <h3>Include what you need</h3> + <p>The easiest way to customize Bootstrap—include only the CSS you need.</p> +{{ highlight (printf `// Functions first +@import "../node_modules/bootstrap/scss/functions"; + +// Variable overrides second +$primary: #900; +$enable-shadows: true; +$prefix: "mo-"; + +// Required Bootstrap imports +@import "../node_modules/bootstrap/scss/variables"; +@import "../node_modules/bootstrap/scss/maps"; +@import "../node_modules/bootstrap/scss/mixins"; +@import "../node_modules/bootstrap/scss/root"; + +// Optional components +@import "../node_modules/bootstrap/scss/utilities"; +@import "../node_modules/bootstrap/scss/reboot"; +@import "../node_modules/bootstrap/scss/containers"; +@import "../node_modules/bootstrap/scss/grid"; +@import "../node_modules/bootstrap/scss/helpers"; +@import "../node_modules/bootstrap/scss/utilities/api"; +`) "scss" "" }} + <p>Learn more about <a href="/docs/{{ .Site.Params.docs_version }}/customize/sass/">using Bootstrap with Sass</a>.</p> + </div> + </section> + + <section class="row g-md-5 pb-md-5 mb-5 align-items-center"> + <div class="col-lg-8 mb-5"> + <div class="masthead-followup-icon d-inline-block mb-3" style="--bg-rgb: var(--bd-pink-rgb);"> + <svg class="bi fs-1"><use xlink:href="#braces"></use></svg> + </div> + <h2 class="display-5 mb-3 fw-semibold lh-sm">Build and extend in real-time with CSS variables</h2> + <p class="lead fw-normal"> + Bootstrap 5 is evolving with each release to better utilize CSS variables for global theme styles, individual components, and even utilities. We provide dozens of variables for colors, font styles, and more at a <code>:root</code> level for use anywhere. On components and utilities, CSS variables are scoped to the relevant class and can easily be modified. + </p> + <p class="d-flex align-items-start flex-column lead fw-normal mb-0"> + <a href="/docs/{{ .Site.Params.docs_version }}/customize/css-variables/" class="icon-link fw-semibold mb-3"> + Learn more about CSS variables + <svg class="bi"><use xlink:href="#arrow-right-short"></use></svg> + </a> + </p> + </div> + <div class="row gx-md-5"> + <div class="col-lg-6 mb-3"> + <h3 class="fw-semibold">Using CSS variables</h3> + <p>Use any of our <a href="/docs/{{ .Site.Params.docs_version }}/customize/css-variables/#root-variables">global <code>:root</code> variables</a> to write new styles. CSS variables use the <code>var(--bs-variableName)</code> syntax and can be inherited by children elements.</p> + {{ highlight (printf `.component { + color: var(--bs-gray-800); + background-color: var(--bs-gray-100); + border: 1px solid var(--bs-gray-200); + border-radius: .25rem; +} + +.component-header { + color: var(--bs-purple); +}`) "scss" "" }} + </div> + <div class="col-lg-6 mb-3"> + <h3 class="fw-semibold">Customizing via CSS variables</h3> + <p>Override global, component, or utility class variables to customize Bootstrap just how you like. No need to redeclare each rule, just a new variable value.</p> + {{ highlight (printf `body { + --bs-body-font-family: var(--bs-font-monospace); + --bs-body-line-height: 1.4; + --bs-body-bg: var(--bs-gray-100); +} + +.table { + --bs-table-color: var(--bs-gray-600); + --bs-table-bg: var(--bs-gray-100); + --bs-table-border-color: transparent; +}`) "scss" "" }} + </div> + </div> + </section> + + <section class="row g-md-5 pb-md-5 mb-5 align-items-center"> + <div class="col-lg-6 mb-5 mb-md-0"> + <div class="masthead-followup-icon d-inline-block mb-3 me-2" style="--bg-rgb: var(--bs-danger-rgb);"> + <svg class="bi fs-1"><use xlink:href="#menu-button-wide-fill"></use></svg> + </div> + <svg class="bi me-2 fs-2 text-muted"><use xlink:href="#plus"></use></svg> + <div class="masthead-followup-icon d-inline-block mb-3" style="--bg-rgb: var(--bs-info-rgb);"> + <svg class="bi fs-1"><use xlink:href="#braces-asterisk"></use></svg> + </div> + <h2 class="display-5 mb-3 fw-semibold lh-sm">Components, meet the Utility API</h2> + <p class="lead fw-normal"> + New in Bootstrap 5, our utilities are now generated by our <a href="/docs/{{ .Site.Params.docs_version }}/utilities/api/">Utility API</a>. We built it as a feature-packed Sass map that can be quickly and easily customized. It's never been easier to add, remove, or modify any utility classes. Make utilities responsive, add pseudo-class variants, and give them custom names. + </p> + <p class="d-flex align-items-start flex-column lead fw-normal mb-0"> + <a href="/docs/{{ .Site.Params.docs_version }}/utilities/api/" class="icon-link fw-semibold mb-3"> + Learn more about utilities + <svg class="bi"><use xlink:href="#arrow-right-short"></use></svg> + </a> + <a href="/docs/{{ .Site.Params.docs_version }}/examples#snippets" class="icon-link fw-semibold"> + Explore customized components + <svg class="bi"><use xlink:href="#arrow-right-short"></use></svg> + </a> + </p> + </div> + <div class="col-lg-6"> + <div class="p-4 border rounded-3 mb-4"> + <h6>Quickly customize components</h6> + <hr class="mb-4"> + <ul class="nav nav-pills mb-4" id="pillNav" role="tablist"> + <li class="nav-item" role="presentation"> + <button class="nav-link active" id="home-tab" data-bs-toggle="tab" type="button" role="tab" aria-selected="true">Home</button> + </li> + <li class="nav-item" role="presentation"> + <button class="nav-link" id="profile-tab" data-bs-toggle="tab" type="button" role="tab" aria-selected="false">Profile</button> + </li> + <li class="nav-item" role="presentation"> + <button class="nav-link" id="contact-tab" data-bs-toggle="tab" type="button" role="tab" aria-selected="false">Contact</button> + </li> + </ul> + <ul class="nav nav-pills nav-fill gap-2 p-1 small bg-white border rounded-5 shadow-sm" id="pillNav2" role="tablist"> + <li class="nav-item" role="presentation"> + <button class="nav-link active rounded-5" id="home-tab2" data-bs-toggle="tab" type="button" role="tab" aria-selected="true">Home</button> + </li> + <li class="nav-item" role="presentation"> + <button class="nav-link rounded-5" id="profile-tab2" data-bs-toggle="tab" type="button" role="tab" aria-selected="false">Profile</button> + </li> + <li class="nav-item" role="presentation"> + <button class="nav-link rounded-5" id="contact-tab2" data-bs-toggle="tab" type="button" role="tab" aria-selected="false">Contact</button> + </li> + </ul> + </div> + {{ highlight (printf `// Create and extend utilities with the Utility API + +@import "bootstrap/scss/bootstrap"; + +$utilities: map-merge( + $utilities, + ( + "cursor": ( + property: cursor, + class: cursor, + responsive: true, + values: auto pointer grab, + ) + ) +); +`) "scss" "" }} + </div> + </section> + + <section class="pb-md-5 mb-5"> + <div class="col-lg-8 mb-5"> + <div class="masthead-followup-icon d-inline-block mb-3" style="--bg-rgb: var(--bs-warning-rgb);"> + <svg class="bi fs-1"><use xlink:href="#plugin"></use></svg> + </div> + <h2 class="display-5 mb-3 fw-semibold lh-sm">Powerful JavaScript plugins without jQuery</h2> + <p class="lead fw-normal"> + Easily add toggleable hidden elements, modals and offcanvas menus, popovers and tooltips, and so much more—all without jQuery. JavaScript in Bootstrap is HTML-first, which means adding plugins is as easy as adding <code>data</code> attributes. Need more control? Include individual plugins programmatically. + </p> + <p class="d-flex justify-content-start lead fw-normal mb-md-0"> + <a href="/docs/{{ .Site.Params.docs_version }}/getting-started/javascript/" class="icon-link fw-semibold"> + Learn more about Bootstrap JavaScript + <svg class="bi"><use xlink:href="#arrow-right-short"></use></svg> + </a> + </p> + </div> + <div class="row gx-md-5"> + <div class="col-lg-6 mb-3"> + <h3 class="fw-semibold">Data attribute API</h3> + <p>Why write more JavaScript when you can write HTML? Nearly all of Bootstrap's JavaScript plugins feature a first-class data API, allowing you to use JavaScript just by adding <code>data</code> attributes.</p> + <div class="p-4 mb-3 border rounded-3"> + <div class="dropdown"> + <button class="btn btn-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> + Dropdown + </button> + <ul class="dropdown-menu"> + <li><a class="dropdown-item" href="#">Dropdown item</a></li> + <li><a class="dropdown-item" href="#">Dropdown item</a></li> + <li><a class="dropdown-item" href="#">Dropdown item</a></li> + </ul> + </div> + </div> + + {{ highlight (printf `<div class="dropdown"> + <button class="btn btn-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> + Dropdown + </button> + <ul class="dropdown-menu"> + <li><a class="dropdown-item" href="#">Dropdown item</a></li> + <li><a class="dropdown-item" href="#">Dropdown item</a></li> + <li><a class="dropdown-item" href="#">Dropdown item</a></li> + </ul> +</div> +`) "html" "" }} + <p>Learn more about <a href="/docs/{{ .Site.Params.docs_version }}/getting-started/javascript/#using-bootstrap-as-a-module">our JavaScript as modules</a> and <a href="/docs/{{ .Site.Params.docs_version }}/getting-started/javascript/#programmatic-api">using the programmatic API</a>.</p> + </div> + <div class="col-lg-6 mb-3"> + <h3 class="fw-semibold">Comprehensive set of plugins</h3> + <p>Bootstrap features a dozen plugins that you can drop into any project. Drop them in all at once, or choose just the ones you need.</p> + <hr class="my-4"> + <div class="row g-3"> + {{- range $plugin := .Site.Data.plugins -}} + {{- $href := printf "/docs/%s/%s" $.Site.Params.docs_version $plugin.link }} + <div class="col-sm-6 mb-2"> + <a class="d-block pe-lg-4 text-decoration-none lh-sm" href="{{ $href }}"> + <h4 class="mb-0 fs-5 fw-semibold">{{ $plugin.name }}</h4> + <small class="text-muted">{{ $plugin.description }}</small> + </a> + </div> + {{- end }} + </div> + </div> + </div> + + </section> + + <section class="row g-3 g-md-5 pb-md-5 mb-5 align-items-center"> + <div class="col-lg-6"> + <div class="masthead-followup-icon d-inline-block mb-3" style="--bg-rgb: var(--bd-teal-rgb);"> {{ partial "icons/circle-square.svg" (dict "width" "32" "height" "32") }} </div> - <h2 class="display-5 fw-normal">Bootstrap Icons</h2> + <h2 class="display-5 mb-3 fw-semibold lh-sm">Personalize it with Bootstrap Icons</h2> <p class="lead fw-normal"> - For the first time ever, Bootstrap has its own open source SVG icon library, designed to work best with our components and documentation. + <a href="{{ .Site.Params.icons }}">Bootstrap Icons</a> is an open source SVG icon library featuring over 1,500 glyphs, with more added every release. They're designed to work in any project, whether you use Bootstrap itself or not. Use them as SVGs or icon fonts—both options give you vector scaling and easy customization via CSS. </p> - <p> - Bootstrap Icons are designed to work best with Bootstrap components, but they’ll work in any project. They’re SVGs, so they scale quickly and easily, can be implemented in several ways, and can be styled with CSS. + <p class="d-flex justify-content-start lead fw-normal mb-md-0"> + <a href="{{ .Site.Params.icons }}" class="icon-link fw-semibold"> + Get Bootstrap Icons + <svg class="bi"><use xlink:href="#arrow-right-short"></use></svg> + </a> </p> - <a href="{{ .Site.Params.icons }}" class="btn btn-lg btn-outline-primary mb-3">Get Bootstrap Icons</a> </div> - <div class="col-md-7 ps-md-5"> + <div class="col-lg-6"> <img class="img-fluid mt-3 mx-auto" srcset="/docs/{{ .Site.Params.docs_version }}/assets/img/bootstrap-icons.png, /docs/{{ .Site.Params.docs_version }}/assets/img/bootstrap-icons@2x.png 2x" src="/docs/{{ .Site.Params.docs_version }}/assets/img/bootstrap-icons.png" @@ -63,21 +330,23 @@ </div> </section> - <section class="row mb-5 pb-md-4 align-items-center"> - <div class="col-md-5"> - <div class="masthead-followup-icon d-inline-block mb-2 text-white bg-danger"> + <section class="row g-3 g-md-5 pb-md-5 mb-5 align-items-center"> + <div class="col-lg-6"> + <div class="masthead-followup-icon d-inline-block mb-3" style="--bg-rgb: var(--bd-violet-rgb);"> {{ partial "icons/droplet-fill.svg" (dict "width" "32" "height" "32") }} </div> - <h2 class="display-5 fw-normal">Official Themes</h2> + <h2 class="display-5 mb-3 fw-semibold lh-sm">Make it yours with official Bootstrap Themes</h2> <p class="lead fw-normal"> - Take Bootstrap to the next level with premium themes from the <a href="{{ .Site.Params.themes }}">official Bootstrap Themes marketplace</a>. + Take Bootstrap to the next level with premium themes from the <a href="{{ .Site.Params.themes }}">official Bootstrap Themes marketplace</a>. Themes are built on Bootstrap as their own extended frameworks, rich with new components and plugins, documentation, and powerful build tools. </p> - <p> - Themes are built on Bootstrap as their own extended frameworks, rich with new components and plugins, documentation, and powerful build tools. + <p class="d-flex justify-content-start lead fw-normal mb-md-0"> + <a href="{{ .Site.Params.themes }}" class="icon-link fw-semibold"> + Browse Bootstrap Themes + <svg class="bi"><use xlink:href="#arrow-right-short"></use></svg> + </a> </p> - <a href="{{ .Site.Params.themes }}" class="btn btn-lg btn-outline-primary mb-3">Browse themes</a> </div> - <div class="col-md-7 ps-md-5"> + <div class="col-lg-6"> <img class="img-fluid mt-3 mx-auto" srcset="/docs/{{ .Site.Params.docs_version }}/assets/img/bootstrap-themes.png, /docs/{{ .Site.Params.docs_version }}/assets/img/bootstrap-themes@2x.png 2x" src="/docs/{{ .Site.Params.docs_version }}/assets/img/bootstrap-themes.png" diff --git a/vendor/twbs/bootstrap/site/layouts/partials/home/masthead.html b/vendor/twbs/bootstrap/site/layouts/partials/home/masthead.html index e5661d9b3..ed43f5cda 100644 --- a/vendor/twbs/bootstrap/site/layouts/partials/home/masthead.html +++ b/vendor/twbs/bootstrap/site/layouts/partials/home/masthead.html @@ -1,28 +1,34 @@ <div class="bd-masthead mb-3" id="content"> - <div class="container px-4 px-md-3"> - <div class="row align-items-lg-center"> - <div class="col-8 mx-auto col-md-4 order-md-2 col-lg-5"> - {{ partial "icons/homepage-hero.svg" (dict "class" "img-fluid mb-3 mb-md-0" "width" "600" "height" "533") }} - </div> - <div class="col-md-8 order-md-1 col-lg-7 text-center text-md-start"> - <h1 class="mb-3">Build fast, responsive sites with Bootstrap</h1> - <p class="lead mb-4"> - Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins. - </p> - - <div class="d-flex flex-column flex-md-row"> - <a href="/docs/{{ .Site.Params.docs_version }}/getting-started/introduction/" class="btn btn-lg btn-bd-primary mb-3 me-md-3" onclick="ga('send', 'event', 'Jumbotron actions', 'Get started', 'Get started');">Get started</a> - <a href="/docs/{{ .Site.Params.docs_version }}/getting-started/download/" class="btn btn-lg btn-outline-secondary mb-3" onclick="ga('send', 'event', 'Jumbotron actions', 'Download', 'Download {{ .Site.Params.current_version }}');">Download</a> + <div class="container-xxl bd-gutter"> + <div class="col-md-8 mx-auto text-center"> + <a class="d-flex flex-column flex-lg-row justify-content-center align-items-center mb-4 text-dark lh-sm text-decoration-none" href="https://blog.getbootstrap.com/2022/07/19/bootstrap-5-2-0/"> + <strong class="d-sm-inline-block p-2 me-2 mb-2 mb-lg-0 rounded-3 masthead-notice">New in v5.2</strong> + <span class="text-muted">CSS variables, responsive offcanvas, new utilities, and more!</span> + </a> + <img src="/docs/{{ .Site.Params.docs_version }}/assets/brand/bootstrap-logo-shadow.png" width="200" height="165" alt="Bootstrap" class="d-block mx-auto mb-3"> + <h1 class="mb-3 fw-semibold">Build fast, responsive sites with Bootstrap</h1> + <p class="lead mb-4"> + Powerful, extensible, and feature-packed frontend toolkit. Build and customize with Sass, utilize prebuilt grid system and components, and bring projects to life with powerful JavaScript plugins. + </p> + <div class="d-flex flex-column flex-lg-row align-items-md-stretch justify-content-md-center gap-3 mb-4"> + <div class="d-inline-block v-align-middle fs-5"> + {{ highlight (printf ("npm i bootstrap@%s") .Site.Params.current_version) "sh" "" }} </div> - <p class="text-muted mb-0"> - Currently <strong>v{{ .Site.Params.current_version }}</strong> - <span class="px-1">·</span> - <a href="https://getbootstrap.com/docs/4.6/getting-started/introduction/" class="link-secondary">v4.6.x docs</a> - <span class="px-1">·</span> - <a href="/docs/versions/" class="link-secondary">All releases</a> - </p> + <a href="/docs/{{ .Site.Params.docs_version }}/getting-started/introduction/" class="btn btn-lg bd-btn-lg btn-bd-primary d-flex align-items-center justify-content-center fw-semibold" onclick="ga('send', 'event', 'Jumbotron actions', 'Get started', 'Get started');"> + <svg class="bi me-2" aria-hidden="true"><use xlink:href="#book-half"></use></svg> + Read the docs + </a> </div> + <p class="text-muted mb-0"> + Currently <strong>v{{ .Site.Params.current_version }}</strong> + <span class="px-1">·</span> + <a href="/docs/{{ .Site.Params.docs_version }}/getting-started/download/" class="link-secondary">Download</a> + <span class="px-1">·</span> + <a href="https://getbootstrap.com/docs/4.6/getting-started/introduction/" class="link-secondary text-nowrap">v4.6.x docs</a> + <span class="px-1">·</span> + <a href="/docs/versions/" class="link-secondary text-nowrap">All releases</a> + </p> + {{ partial "ads" . }} </div> - {{ partial "ads" . }} </div> </div> diff --git a/vendor/twbs/bootstrap/site/layouts/partials/icons.html b/vendor/twbs/bootstrap/site/layouts/partials/icons.html new file mode 100644 index 000000000..9841e143a --- /dev/null +++ b/vendor/twbs/bootstrap/site/layouts/partials/icons.html @@ -0,0 +1,72 @@ +<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> + <symbol id="arrow-right-short" viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8z"/> + </symbol> + <symbol id="book-half" viewBox="0 0 16 16"> + <path d="M8.5 2.687c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492V2.687zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783z"/> + </symbol> + <symbol id="box-seam" viewBox="0 0 16 16"> + <path d="M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5l2.404.961L10.404 2l-2.218-.887zm3.564 1.426L5.596 5 8 5.961 14.154 3.5l-2.404-.961zm3.25 1.7-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923l6.5 2.6zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464L7.443.184z"/> + </symbol> + <symbol id="braces" viewBox="0 0 16 16"> + <path d="M2.114 8.063V7.9c1.005-.102 1.497-.615 1.497-1.6V4.503c0-1.094.39-1.538 1.354-1.538h.273V2h-.376C3.25 2 2.49 2.759 2.49 4.352v1.524c0 1.094-.376 1.456-1.49 1.456v1.299c1.114 0 1.49.362 1.49 1.456v1.524c0 1.593.759 2.352 2.372 2.352h.376v-.964h-.273c-.964 0-1.354-.444-1.354-1.538V9.663c0-.984-.492-1.497-1.497-1.6zM13.886 7.9v.163c-1.005.103-1.497.616-1.497 1.6v1.798c0 1.094-.39 1.538-1.354 1.538h-.273v.964h.376c1.613 0 2.372-.759 2.372-2.352v-1.524c0-1.094.376-1.456 1.49-1.456V7.332c-1.114 0-1.49-.362-1.49-1.456V4.352C13.51 2.759 12.75 2 11.138 2h-.376v.964h.273c.964 0 1.354.444 1.354 1.538V6.3c0 .984.492 1.497 1.497 1.6z"/> + </symbol> + <symbol id="braces-asterisk" viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M1.114 8.063V7.9c1.005-.102 1.497-.615 1.497-1.6V4.503c0-1.094.39-1.538 1.354-1.538h.273V2h-.376C2.25 2 1.49 2.759 1.49 4.352v1.524c0 1.094-.376 1.456-1.49 1.456v1.299c1.114 0 1.49.362 1.49 1.456v1.524c0 1.593.759 2.352 2.372 2.352h.376v-.964h-.273c-.964 0-1.354-.444-1.354-1.538V9.663c0-.984-.492-1.497-1.497-1.6ZM14.886 7.9v.164c-1.005.103-1.497.616-1.497 1.6v1.798c0 1.094-.39 1.538-1.354 1.538h-.273v.964h.376c1.613 0 2.372-.759 2.372-2.352v-1.524c0-1.094.376-1.456 1.49-1.456v-1.3c-1.114 0-1.49-.362-1.49-1.456V4.352C14.51 2.759 13.75 2 12.138 2h-.376v.964h.273c.964 0 1.354.444 1.354 1.538V6.3c0 .984.492 1.497 1.497 1.6ZM7.5 11.5V9.207l-1.621 1.621-.707-.707L6.792 8.5H4.5v-1h2.293L5.172 5.879l.707-.707L7.5 6.792V4.5h1v2.293l1.621-1.621.707.707L9.208 7.5H11.5v1H9.207l1.621 1.621-.707.707L8.5 9.208V11.5h-1Z"/> + </symbol> + <symbol id="check2" viewBox="0 0 16 16"> + <title>Check</title> + <path d="M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z"/> + </symbol> + <symbol id="chevron-expand" viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M3.646 9.146a.5.5 0 0 1 .708 0L8 12.793l3.646-3.647a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 0-.708zm0-2.292a.5.5 0 0 0 .708 0L8 3.207l3.646 3.647a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 0 0 0 .708z"/> + </symbol> + <symbol id="clipboard" viewBox="0 0 16 16"> + <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z"/> + <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z"/> + </symbol> + <symbol id="code" viewBox="0 0 16 16"> + <path d="M5.854 4.854a.5.5 0 1 0-.708-.708l-3.5 3.5a.5.5 0 0 0 0 .708l3.5 3.5a.5.5 0 0 0 .708-.708L2.707 8l3.147-3.146zm4.292 0a.5.5 0 0 1 .708-.708l3.5 3.5a.5.5 0 0 1 0 .708l-3.5 3.5a.5.5 0 0 1-.708-.708L13.293 8l-3.147-3.146z"/> + </symbol> + <symbol id="file-earmark-richtext" viewBox="0 0 16 16"> + <path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2z"/> + <path d="M4.5 12.5A.5.5 0 0 1 5 12h3a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm0-2A.5.5 0 0 1 5 10h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm1.639-3.708 1.33.886 1.854-1.855a.25.25 0 0 1 .289-.047l1.888.974V8.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V8s1.54-1.274 1.639-1.208zM6.25 6a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5z"/> + </symbol> + <symbol id="globe2" viewBox="0 0 16 16"> + <path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm7.5-6.923c-.67.204-1.335.82-1.887 1.855-.143.268-.276.56-.395.872.705.157 1.472.257 2.282.287V1.077zM4.249 3.539c.142-.384.304-.744.481-1.078a6.7 6.7 0 0 1 .597-.933A7.01 7.01 0 0 0 3.051 3.05c.362.184.763.349 1.198.49zM3.509 7.5c.036-1.07.188-2.087.436-3.008a9.124 9.124 0 0 1-1.565-.667A6.964 6.964 0 0 0 1.018 7.5h2.49zm1.4-2.741a12.344 12.344 0 0 0-.4 2.741H7.5V5.091c-.91-.03-1.783-.145-2.591-.332zM8.5 5.09V7.5h2.99a12.342 12.342 0 0 0-.399-2.741c-.808.187-1.681.301-2.591.332zM4.51 8.5c.035.987.176 1.914.399 2.741A13.612 13.612 0 0 1 7.5 10.91V8.5H4.51zm3.99 0v2.409c.91.03 1.783.145 2.591.332.223-.827.364-1.754.4-2.741H8.5zm-3.282 3.696c.12.312.252.604.395.872.552 1.035 1.218 1.65 1.887 1.855V11.91c-.81.03-1.577.13-2.282.287zm.11 2.276a6.696 6.696 0 0 1-.598-.933 8.853 8.853 0 0 1-.481-1.079 8.38 8.38 0 0 0-1.198.49 7.01 7.01 0 0 0 2.276 1.522zm-1.383-2.964A13.36 13.36 0 0 1 3.508 8.5h-2.49a6.963 6.963 0 0 0 1.362 3.675c.47-.258.995-.482 1.565-.667zm6.728 2.964a7.009 7.009 0 0 0 2.275-1.521 8.376 8.376 0 0 0-1.197-.49 8.853 8.853 0 0 1-.481 1.078 6.688 6.688 0 0 1-.597.933zM8.5 11.909v3.014c.67-.204 1.335-.82 1.887-1.855.143-.268.276-.56.395-.872A12.63 12.63 0 0 0 8.5 11.91zm3.555-.401c.57.185 1.095.409 1.565.667A6.963 6.963 0 0 0 14.982 8.5h-2.49a13.36 13.36 0 0 1-.437 3.008zM14.982 7.5a6.963 6.963 0 0 0-1.362-3.675c-.47.258-.995.482-1.565.667.248.92.4 1.938.437 3.008h2.49zM11.27 2.461c.177.334.339.694.482 1.078a8.368 8.368 0 0 0 1.196-.49 7.01 7.01 0 0 0-2.275-1.52c.218.283.418.597.597.932zm-.488 1.343a7.765 7.765 0 0 0-.395-.872C9.835 1.897 9.17 1.282 8.5 1.077V4.09c.81-.03 1.577-.13 2.282-.287z"/> + </symbol> + <symbol id="grid-fill" viewBox="0 0 16 16"> + <path d="M1 2.5A1.5 1.5 0 0 1 2.5 1h3A1.5 1.5 0 0 1 7 2.5v3A1.5 1.5 0 0 1 5.5 7h-3A1.5 1.5 0 0 1 1 5.5v-3zm8 0A1.5 1.5 0 0 1 10.5 1h3A1.5 1.5 0 0 1 15 2.5v3A1.5 1.5 0 0 1 13.5 7h-3A1.5 1.5 0 0 1 9 5.5v-3zm-8 8A1.5 1.5 0 0 1 2.5 9h3A1.5 1.5 0 0 1 7 10.5v3A1.5 1.5 0 0 1 5.5 15h-3A1.5 1.5 0 0 1 1 13.5v-3zm8 0A1.5 1.5 0 0 1 10.5 9h3a1.5 1.5 0 0 1 1.5 1.5v3a1.5 1.5 0 0 1-1.5 1.5h-3A1.5 1.5 0 0 1 9 13.5v-3z"/> + </symbol> + <symbol id="lightning-charge-fill" viewBox="0 0 16 16"> + <path d="M11.251.068a.5.5 0 0 1 .227.58L9.677 6.5H13a.5.5 0 0 1 .364.843l-8 8.5a.5.5 0 0 1-.842-.49L6.323 9.5H3a.5.5 0 0 1-.364-.843l8-8.5a.5.5 0 0 1 .615-.09z"/> + </symbol> + <symbol id="list" viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/> + </symbol> + <symbol id="magic" viewBox="0 0 16 16"> + <path d="M9.5 2.672a.5.5 0 1 0 1 0V.843a.5.5 0 0 0-1 0v1.829Zm4.5.035A.5.5 0 0 0 13.293 2L12 3.293a.5.5 0 1 0 .707.707L14 2.707ZM7.293 4A.5.5 0 1 0 8 3.293L6.707 2A.5.5 0 0 0 6 2.707L7.293 4Zm-.621 2.5a.5.5 0 1 0 0-1H4.843a.5.5 0 1 0 0 1h1.829Zm8.485 0a.5.5 0 1 0 0-1h-1.829a.5.5 0 0 0 0 1h1.829ZM13.293 10A.5.5 0 1 0 14 9.293L12.707 8a.5.5 0 1 0-.707.707L13.293 10ZM9.5 11.157a.5.5 0 0 0 1 0V9.328a.5.5 0 0 0-1 0v1.829Zm1.854-5.097a.5.5 0 0 0 0-.706l-.708-.708a.5.5 0 0 0-.707 0L8.646 5.94a.5.5 0 0 0 0 .707l.708.708a.5.5 0 0 0 .707 0l1.293-1.293Zm-3 3a.5.5 0 0 0 0-.706l-.708-.708a.5.5 0 0 0-.707 0L.646 13.94a.5.5 0 0 0 0 .707l.708.708a.5.5 0 0 0 .707 0L8.354 9.06Z"/> + </symbol> + <symbol id="menu-button-wide-fill" viewBox="0 0 16 16"> + <path d="M1.5 0A1.5 1.5 0 0 0 0 1.5v2A1.5 1.5 0 0 0 1.5 5h13A1.5 1.5 0 0 0 16 3.5v-2A1.5 1.5 0 0 0 14.5 0h-13zm1 2h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1zm9.927.427A.25.25 0 0 1 12.604 2h.792a.25.25 0 0 1 .177.427l-.396.396a.25.25 0 0 1-.354 0l-.396-.396zM0 8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V8zm1 3v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2H1zm14-1V8a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v2h14zM2 8.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0 4a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5z"/> + </symbol> + <symbol id="palette2" viewBox="0 0 16 16"> + <path d="M0 .5A.5.5 0 0 1 .5 0h5a.5.5 0 0 1 .5.5v5.277l4.147-4.131a.5.5 0 0 1 .707 0l3.535 3.536a.5.5 0 0 1 0 .708L10.261 10H15.5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5H3a2.99 2.99 0 0 1-2.121-.879A2.99 2.99 0 0 1 0 13.044m6-.21 7.328-7.3-2.829-2.828L6 7.188v5.647zM4.5 13a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0zM15 15v-4H9.258l-4.015 4H15zM0 .5v12.495V.5z"/> + <path d="M0 12.995V13a3.07 3.07 0 0 0 0-.005z"/> + </symbol> + <symbol id="plugin" viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M1 8a7 7 0 1 1 2.898 5.673c-.167-.121-.216-.406-.002-.62l1.8-1.8a3.5 3.5 0 0 0 4.572-.328l1.414-1.415a.5.5 0 0 0 0-.707l-.707-.707 1.559-1.563a.5.5 0 1 0-.708-.706l-1.559 1.562-1.414-1.414 1.56-1.562a.5.5 0 1 0-.707-.706l-1.56 1.56-.707-.706a.5.5 0 0 0-.707 0L5.318 5.975a3.5 3.5 0 0 0-.328 4.571l-1.8 1.8c-.58.58-.62 1.6.121 2.137A8 8 0 1 0 0 8a.5.5 0 0 0 1 0Z"/> + </symbol> + <symbol id="plus" viewBox="0 0 16 16"> + <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> + </symbol> + <symbol id="three-dots" viewBox="0 0 16 16"> + <path d="M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z"/> + </symbol> + <symbol id="tools" viewBox="0 0 16 16"> + <path d="M1 0 0 1l2.2 3.081a1 1 0 0 0 .815.419h.07a1 1 0 0 1 .708.293l2.675 2.675-2.617 2.654A3.003 3.003 0 0 0 0 13a3 3 0 1 0 5.878-.851l2.654-2.617.968.968-.305.914a1 1 0 0 0 .242 1.023l3.356 3.356a1 1 0 0 0 1.414 0l1.586-1.586a1 1 0 0 0 0-1.414l-3.356-3.356a1 1 0 0 0-1.023-.242L10.5 9.5l-.96-.96 2.68-2.643A3.005 3.005 0 0 0 16 3c0-.269-.035-.53-.102-.777l-2.14 2.141L12 4l-.364-1.757L13.777.102a3 3 0 0 0-3.675 3.68L7.462 6.46 4.793 3.793a1 1 0 0 1-.293-.707v-.071a1 1 0 0 0-.419-.814L1 0zm9.646 10.646a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708zM3 11l.471.242.529.026.287.445.445.287.026.529L5 13l-.242.471-.026.529-.445.287-.287.445-.529.026L3 15l-.471-.242L2 14.732l-.287-.445L1.268 14l-.026-.529L1 13l.242-.471.026-.529.445-.287.287-.445.529-.026L3 11z"/> + </symbol> + <symbol id="ui-radios" viewBox="0 0 16 16"> + <path d="M7 2.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-1zM0 12a3 3 0 1 1 6 0 3 3 0 0 1-6 0zm7-1.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-1zm0-5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0 8a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zM3 1a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm0 4.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z"/> + </symbol> +</svg> diff --git a/vendor/twbs/bootstrap/site/layouts/partials/js-data-attributes.md b/vendor/twbs/bootstrap/site/layouts/partials/js-data-attributes.md new file mode 100644 index 000000000..e99ff7112 --- /dev/null +++ b/vendor/twbs/bootstrap/site/layouts/partials/js-data-attributes.md @@ -0,0 +1,3 @@ +As options can be passed via data attributes or JavaScript, you can append an option name to `data-bs-`, as in `data-bs-animation="{value}"`. Make sure to change the case type of the option name from "_camelCase_" to "_kebab-case_" when passing the options via data attributes. For example, use `data-bs-custom-class="beautifier"` instead of `data-bs-customClass="beautifier"`. + +As of Bootstrap 5.2.0, all components support an **experimental** reserved data attribute `data-bs-config` that can house simple component configuration as a JSON string. When an element has `data-bs-config='{"delay":0, "title":123}'` and `data-bs-title="456"` attributes, the final `title` value will be `456` and the separate data attributes will override values given on `data-bs-config`. In addition, existing data attributes are able to house JSON values like `data-bs-delay='{"show":0,"hide":150}'`. diff --git a/vendor/twbs/bootstrap/site/layouts/partials/scripts.html b/vendor/twbs/bootstrap/site/layouts/partials/scripts.html index d25add3ff..3378a230e 100644 --- a/vendor/twbs/bootstrap/site/layouts/partials/scripts.html +++ b/vendor/twbs/bootstrap/site/layouts/partials/scripts.html @@ -5,7 +5,8 @@ {{- end }} {{ if eq .Page.Layout "docs" -}} -<script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script> +<script src="https://cdn.jsdelivr.net/npm/@docsearch/js@3"></script> +<script src="https://cdn.jsdelivr.net/npm/@stackblitz/sdk@1/bundles/sdk.umd.js"></script> {{- end }} {{- $vendor := resources.Match "js/vendor/*.js" -}} @@ -18,3 +19,54 @@ {{- end }} <script src="{{ $docsJs.Permalink | relURL }}"></script> + +{{ if eq .Page.Layout "docs" -}} +<script> + // Open in StackBlitz logic + document.querySelectorAll('.btn-edit').forEach(btn => { + btn.addEventListener('click', event => { + const htmlSnippet = event.target.closest('.bd-code-snippet').querySelector('.bd-example').innerHTML + + // Get extra classes for this example + const classes = Array.from(event.target.closest('.bd-code-snippet').querySelector('.bd-example').classList).join(' ') + + const jsSnippet = event.target.closest('.bd-code-snippet').querySelector('.btn-edit').getAttribute('data-sb-js-snippet') + StackBlitzSDK.openBootstrapSnippet(htmlSnippet, jsSnippet, classes) + }) + }) + + StackBlitzSDK.openBootstrapSnippet = (htmlSnippet, jsSnippet, classes) => { + const markup = `<!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"> + <link href="https://getbootstrap.com/docs/{{ .Site.Params.docs_version }}/assets/css/docs.css" rel="stylesheet"> + <title>Bootstrap Example</title> + <${'script'} src="{{ .Site.Params.cdn.js_bundle }}"></${'script'}> + </head> + <body class="p-3 m-0 border-0 ${classes}"> + + <!-- Example Code --> +${htmlSnippet.replace(/^/gm, ' ')} + <!-- End Example Code --> + </body> +</html>` + + const jsSnippetContent = jsSnippet ? '{{ os.ReadFile "site/assets/js/snippets.js" }}' : null + const project = { + files: { + 'index.html': markup, + 'index.js': jsSnippetContent + }, + title: 'Bootstrap Example', + description: `Official example from ${window.location.href}`, + template: jsSnippet ? 'javascript' : 'html', + tags: ['bootstrap'] + } + + StackBlitzSDK.openProject(project, { openFile: 'index.html' }) + } +</script> +{{- end }} diff --git a/vendor/twbs/bootstrap/site/layouts/partials/stylesheet.html b/vendor/twbs/bootstrap/site/layouts/partials/stylesheet.html index cc4473383..1aa329699 100644 --- a/vendor/twbs/bootstrap/site/layouts/partials/stylesheet.html +++ b/vendor/twbs/bootstrap/site/layouts/partials/stylesheet.html @@ -1,4 +1,7 @@ -{{- "<!-- Bootstrap core CSS -->" | safeHTML }} +{{ if eq .Page.Layout "docs" -}} +<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@docsearch/css@3"> +{{- end }} + {{ if eq hugo.Environment "production" -}} {{ if eq .Page.Params.direction "rtl" -}} <link href="/docs/{{ .Site.Params.docs_version }}/dist/css/bootstrap.rtl.min.css" rel="stylesheet" {{ printf "integrity=%q" .Site.Params.cdn.css_rtl_hash | safeHTMLAttr }} crossorigin="anonymous"> diff --git a/vendor/twbs/bootstrap/site/layouts/shortcodes/added-in.html b/vendor/twbs/bootstrap/site/layouts/shortcodes/added-in.html new file mode 100644 index 000000000..ca461c2e6 --- /dev/null +++ b/vendor/twbs/bootstrap/site/layouts/shortcodes/added-in.html @@ -0,0 +1,5 @@ +{{- /* Outputs badge to identify the first version something was added */ -}} + +{{- $version := .Get 0 -}} + +<small class="d-inline-flex mb-3 px-2 py-1 fw-semibold text-success bg-success bg-opacity-10 border border-success border-opacity-10 rounded-2">Added in v{{ $version }}</small> diff --git a/vendor/twbs/bootstrap/site/layouts/shortcodes/bs-table.html b/vendor/twbs/bootstrap/site/layouts/shortcodes/bs-table.html index 42a18d578..9eec109cb 100644 --- a/vendor/twbs/bootstrap/site/layouts/shortcodes/bs-table.html +++ b/vendor/twbs/bootstrap/site/layouts/shortcodes/bs-table.html @@ -4,5 +4,6 @@ {{- $css_class := .Get 0 | default "table" -}} {{- $html_table := .Inner | markdownify -}} -{{- $html_table = replace $html_table "<table>" (printf `<table class="%s">` $css_class) -}} +{{- $html_table = replace $html_table "<table>" (printf `<div class="table-responsive"><table class="%s">` $css_class) -}} +{{- $html_table = replace $html_table "</table>" "</table></div>" -}} {{- $html_table | safeHTML -}} diff --git a/vendor/twbs/bootstrap/site/layouts/shortcodes/example.html b/vendor/twbs/bootstrap/site/layouts/shortcodes/example.html index 0592adc6b..c6dcddbe0 100644 --- a/vendor/twbs/bootstrap/site/layouts/shortcodes/example.html +++ b/vendor/twbs/bootstrap/site/layouts/shortcodes/example.html @@ -4,25 +4,44 @@ `args` are all optional and can be one of the following: * id: the `div`'s id - default: "" * class: any extra class(es) to be added to the `div` - default: "" - * show_preview: if the preview should be output in the HTML - default: `true` + * lang: language used to display the code - default: "html" * show_markup: if the markup should be output in the HTML - default: `true` + * show_preview: if the preview should be output in the HTML - default: `true` + * stackblitz_add_js: if extra JS snippet should be added to StackBlitz - default: `false` */ -}} {{- $id := .Get "id" -}} {{- $class := .Get "class" -}} {{- $lang := .Get "lang" | default "html" -}} -{{- $show_preview := .Get "show_preview" | default true -}} +{{- $stackblitz_add_js := .Get "stackblitz_add_js" | default false -}} {{- $show_markup := .Get "show_markup" | default true -}} +{{- $show_preview := .Get "show_preview" | default true -}} {{- $input := .Inner -}} -{{- if eq $show_preview true -}} -<div{{ with $id }} id="{{ . }}"{{ end }} class="bd-example{{ with $class }} {{ . }}{{ end }}"> - {{- $input -}} -</div> -{{- end -}} +<div class="bd-example-snippet bd-code-snippet"> + {{- if eq $show_preview true -}} + <div{{ with $id }} id="{{ . }}"{{ end }} class="bd-example{{ with $class }} {{ . }}{{ end }}"> + {{- $input -}} + </div> + {{- end -}} + + {{- if eq $show_markup true -}} + {{- if eq $show_preview true -}} + <div class="d-flex align-items-center highlight-toolbar bg-light ps-3 pe-2 py-1"> + <small class="font-monospace text-muted text-uppercase">{{- $lang -}}</small> + <div class="d-flex ms-auto"> + <button type="button" class="btn-edit text-nowrap"{{ with $stackblitz_add_js }} data-sb-js-snippet="{{ $stackblitz_add_js }}"{{ end }} title="Try it on StackBlitz"> + <svg class="bi" role="img" aria-label="Try it"><use xlink:href="#lightning-charge-fill"/></svg> + </button> + <button type="button" class="btn-clipboard mt-0 me-0" title="Copy to clipboard"> + <svg class="bi" role="img" aria-label="Copy"><use xlink:href="#clipboard"/></svg> + </button> + </div> + </div> + {{- end -}} -{{- if eq $show_markup true -}} - {{- $content := replaceRE `<svg class="bd-placeholder-img(?:-lg)?(?: *?bd-placeholder-img-lg)? ?(.*?)".*?<\/svg>\n` `<img src="..." class="$1" alt="...">` $input -}} - {{- $content = replaceRE ` (class=" *?")` "" $content -}} - {{- highlight (trim $content "\n") $lang "" -}} -{{- end -}} + {{- $content := replaceRE `<svg class="bd-placeholder-img(?:-lg)?(?: *?bd-placeholder-img-lg)? ?(.*?)".*?<\/svg>\n` `<img src="..." class="$1" alt="...">` $input -}} + {{- $content = replaceRE ` (class=" *?")` "" $content -}} + {{- highlight (trim $content "\n") $lang "" -}} + {{- end -}} +</div> diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/favicon-16x16.png b/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/favicon-16x16.png Binary files differdeleted file mode 100644 index 46ab7f8c8..000000000 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/favicon-16x16.png +++ /dev/null diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/js/validate-forms.js b/vendor/twbs/bootstrap/site/static/docs/5.1/assets/js/validate-forms.js deleted file mode 100644 index f8fd583de..000000000 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/js/validate-forms.js +++ /dev/null @@ -1,20 +0,0 @@ -// Example starter JavaScript for disabling form submissions if there are invalid fields -(function () { - 'use strict' - - // Fetch all the forms we want to apply custom Bootstrap validation styles to - var forms = document.querySelectorAll('.needs-validation') - - // Loop over them and prevent submission - Array.prototype.slice.call(forms) - .forEach(function (form) { - form.addEventListener('submit', function (event) { - if (!form.checkValidity()) { - event.preventDefault() - event.stopPropagation() - } - - form.classList.add('was-validated') - }, false) - }) -})() diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-logo-black.svg b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-logo-black.svg index 31e66e1e9..31e66e1e9 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-logo-black.svg +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-logo-black.svg diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-logo-shadow.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-logo-shadow.png Binary files differindex 3643b912e..3643b912e 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-logo-shadow.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-logo-shadow.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-logo-white.svg b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-logo-white.svg index f73d7ca2a..f73d7ca2a 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-logo-white.svg +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-logo-white.svg diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-logo.svg b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-logo.svg index f0189652b..f0189652b 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-logo.svg +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-logo.svg diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-social-logo.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-social-logo.png Binary files differindex 9dbb732a4..9dbb732a4 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-social-logo.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-social-logo.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-social.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-social.png Binary files differindex c7adc6f85..c7adc6f85 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/brand/bootstrap-social.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/brand/bootstrap-social.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-icons.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-icons.png Binary files differindex 9c418d5f3..9c418d5f3 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-icons.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-icons.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-icons@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-icons@2x.png Binary files differindex 8d08df766..8d08df766 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-icons@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-icons@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-themes-collage.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-themes-collage.png Binary files differindex 0a3bf5d69..0a3bf5d69 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-themes-collage.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-themes-collage.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-themes-collage@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-themes-collage@2x.png Binary files differindex ad165eb19..ad165eb19 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-themes-collage@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-themes-collage@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-themes.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-themes.png Binary files differindex d43dba2a7..d43dba2a7 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-themes.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-themes.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-themes@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-themes@2x.png Binary files differindex 13c32337d..13c32337d 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/bootstrap-themes@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/bootstrap-themes@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/album-rtl.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/album-rtl.png Binary files differindex 8bec58f1c..8bec58f1c 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/album-rtl.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/album-rtl.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/album-rtl@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/album-rtl@2x.png Binary files differindex 47b5b9a4a..47b5b9a4a 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/album-rtl@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/album-rtl@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/album.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/album.png Binary files differindex 9f628babf..9f628babf 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/album.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/album.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/album@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/album@2x.png Binary files differindex 00c938df8..00c938df8 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/album@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/album@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/blog-rtl.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/blog-rtl.png Binary files differindex 5d01bb092..5d01bb092 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/blog-rtl.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/blog-rtl.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/blog-rtl@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/blog-rtl@2x.png Binary files differindex 56554e2bf..56554e2bf 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/blog-rtl@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/blog-rtl@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/blog.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/blog.png Binary files differindex 3ce428418..3ce428418 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/blog.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/blog.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/blog@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/blog@2x.png Binary files differindex f5480314b..f5480314b 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/blog@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/blog@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/carousel-rtl.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/carousel-rtl.png Binary files differindex 1fb5ae6a8..1fb5ae6a8 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/carousel-rtl.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/carousel-rtl.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/carousel-rtl@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/carousel-rtl@2x.png Binary files differindex 2beeca096..2beeca096 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/carousel-rtl@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/carousel-rtl@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/carousel.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/carousel.png Binary files differindex b8ea3ce1c..b8ea3ce1c 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/carousel.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/carousel.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/carousel@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/carousel@2x.png Binary files differindex 39df35930..39df35930 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/carousel@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/carousel@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cheatsheet-rtl.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cheatsheet-rtl.png Binary files differindex 93fd59324..93fd59324 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cheatsheet-rtl.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cheatsheet-rtl.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cheatsheet-rtl@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cheatsheet-rtl@2x.png Binary files differindex fa895cec0..fa895cec0 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cheatsheet-rtl@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cheatsheet-rtl@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cheatsheet.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cheatsheet.png Binary files differindex 074be0015..074be0015 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cheatsheet.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cheatsheet.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cheatsheet@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cheatsheet@2x.png Binary files differindex c958b6cb6..c958b6cb6 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cheatsheet@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cheatsheet@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/checkout-rtl.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/checkout-rtl.png Binary files differindex f3cb89ea4..f3cb89ea4 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/checkout-rtl.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/checkout-rtl.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/checkout-rtl@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/checkout-rtl@2x.png Binary files differindex 5d7b801cf..5d7b801cf 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/checkout-rtl@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/checkout-rtl@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/checkout.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/checkout.png Binary files differindex cb81ef2d7..cb81ef2d7 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/checkout.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/checkout.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/checkout@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/checkout@2x.png Binary files differindex 79c7b4bb8..79c7b4bb8 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/checkout@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/checkout@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cover.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cover.png Binary files differindex 5458ff11d..5458ff11d 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cover.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cover.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cover@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cover@2x.png Binary files differindex eacd82e98..eacd82e98 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/cover@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/cover@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dashboard-rtl.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dashboard-rtl.png Binary files differindex 7f5b5bb9d..7f5b5bb9d 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dashboard-rtl.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dashboard-rtl.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dashboard-rtl@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dashboard-rtl@2x.png Binary files differindex 26b031a99..26b031a99 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dashboard-rtl@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dashboard-rtl@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dashboard.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dashboard.png Binary files differindex 52988da73..52988da73 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dashboard.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dashboard.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dashboard@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dashboard@2x.png Binary files differindex 52b23dff6..52b23dff6 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dashboard@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dashboard@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dropdowns.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dropdowns.png Binary files differindex 64fc8f2f0..64fc8f2f0 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dropdowns.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dropdowns.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dropdowns@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dropdowns@2x.png Binary files differindex 35fecb49a..35fecb49a 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/dropdowns@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/dropdowns@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/features.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/features.png Binary files differindex c77ed09bb..c77ed09bb 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/features.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/features.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/features@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/features@2x.png Binary files differindex 88bd33012..88bd33012 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/features@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/features@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/footers.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/footers.png Binary files differindex ac20b7f5d..ac20b7f5d 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/footers.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/footers.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/footers@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/footers@2x.png Binary files differindex a9a07a2cf..a9a07a2cf 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/footers@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/footers@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/grid.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/grid.png Binary files differindex 2c18784c2..2c18784c2 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/grid.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/grid.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/grid@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/grid@2x.png Binary files differindex e95c36365..e95c36365 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/grid@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/grid@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/headers.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/headers.png Binary files differindex 8ad7f6cd2..8ad7f6cd2 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/headers.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/headers.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/headers@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/headers@2x.png Binary files differindex 234f9b1e6..234f9b1e6 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/headers@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/headers@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/heroes.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/heroes.png Binary files differindex e9bc3e627..e9bc3e627 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/heroes.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/heroes.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/heroes@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/heroes@2x.png Binary files differindex fff3a72c7..fff3a72c7 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/heroes@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/heroes@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/jumbotron.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/jumbotron.png Binary files differindex 48e0c9c0e..48e0c9c0e 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/jumbotron.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/jumbotron.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/jumbotron@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/jumbotron@2x.png Binary files differindex 229b63007..229b63007 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/jumbotron@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/jumbotron@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/list-groups.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/list-groups.png Binary files differindex 9f49a54ad..9f49a54ad 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/list-groups.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/list-groups.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/list-groups@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/list-groups@2x.png Binary files differindex 575d19818..575d19818 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/list-groups@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/list-groups@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/masonry.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/masonry.png Binary files differindex 20137306f..20137306f 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/masonry.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/masonry.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/masonry@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/masonry@2x.png Binary files differindex 8d9a5cf97..8d9a5cf97 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/masonry@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/masonry@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/modals.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/modals.png Binary files differindex 0c8876a67..0c8876a67 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/modals.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/modals.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/modals@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/modals@2x.png Binary files differindex c18990ace..c18990ace 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/modals@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/modals@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-bottom.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-bottom.png Binary files differindex af47666f1..af47666f1 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-bottom.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-bottom.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-bottom@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-bottom@2x.png Binary files differindex 93a7cdc49..93a7cdc49 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-bottom@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-bottom@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-fixed.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-fixed.png Binary files differindex 97df67e96..97df67e96 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-fixed.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-fixed.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-fixed@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-fixed@2x.png Binary files differindex 3e0f98b95..3e0f98b95 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-fixed@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-fixed@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-static.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-static.png Binary files differindex 8d54f182c..8d54f182c 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-static.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-static.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-static@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-static@2x.png Binary files differindex 9b057371d..9b057371d 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbar-static@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbar-static@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbars-offcanvas.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbars-offcanvas.png Binary files differnew file mode 100644 index 000000000..be2d1487c --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbars-offcanvas.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbars-offcanvas@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbars-offcanvas@2x.png Binary files differnew file mode 100644 index 000000000..d2b947176 --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbars-offcanvas@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbars.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbars.png Binary files differindex 4e7e5fa6a..4e7e5fa6a 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbars.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbars.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbars@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbars@2x.png Binary files differindex dc0cea085..dc0cea085 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/navbars@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/navbars@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/offcanvas-navbar.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/offcanvas-navbar.png Binary files differindex 1e75d2663..1e75d2663 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/offcanvas-navbar.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/offcanvas-navbar.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/offcanvas-navbar@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/offcanvas-navbar@2x.png Binary files differindex e5287dde8..e5287dde8 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/offcanvas-navbar@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/offcanvas-navbar@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/pricing.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/pricing.png Binary files differindex ea7224615..ea7224615 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/pricing.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/pricing.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/pricing@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/pricing@2x.png Binary files differindex 959d808a9..959d808a9 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/pricing@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/pricing@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/product.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/product.png Binary files differindex a95eff622..a95eff622 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/product.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/product.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/product@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/product@2x.png Binary files differindex 1dfe45482..1dfe45482 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/product@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/product@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sidebars.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sidebars.png Binary files differindex 00efb311e..00efb311e 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sidebars.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sidebars.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sidebars@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sidebars@2x.png Binary files differindex cb167e535..cb167e535 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sidebars@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sidebars@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sign-in.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sign-in.png Binary files differindex 8d57f561c..8d57f561c 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sign-in.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sign-in.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sign-in@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sign-in@2x.png Binary files differindex 477335984..477335984 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sign-in@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sign-in@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/starter-template.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/starter-template.png Binary files differindex d4b20217a..d4b20217a 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/starter-template.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/starter-template.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/starter-template@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/starter-template@2x.png Binary files differindex 9323837ca..9323837ca 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/starter-template@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/starter-template@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sticky-footer-navbar.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sticky-footer-navbar.png Binary files differindex cc88cfb2d..cc88cfb2d 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sticky-footer-navbar.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sticky-footer-navbar.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sticky-footer-navbar@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sticky-footer-navbar@2x.png Binary files differindex 9478901f6..9478901f6 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sticky-footer-navbar@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sticky-footer-navbar@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sticky-footer.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sticky-footer.png Binary files differindex 4b5246d38..4b5246d38 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sticky-footer.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sticky-footer.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sticky-footer@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sticky-footer@2x.png Binary files differindex 5a008a0ac..5a008a0ac 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/examples/sticky-footer@2x.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/examples/sticky-footer@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/android-chrome-192x192.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/android-chrome-192x192.png Binary files differindex 1c276a531..1c276a531 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/android-chrome-192x192.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/android-chrome-192x192.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/android-chrome-512x512.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/android-chrome-512x512.png Binary files differindex 936025e1c..936025e1c 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/android-chrome-512x512.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/android-chrome-512x512.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/apple-touch-icon.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/apple-touch-icon.png Binary files differindex e7053f970..e7053f970 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/apple-touch-icon.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/apple-touch-icon.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/favicon-16x16.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/favicon-16x16.png Binary files differnew file mode 100644 index 000000000..f4754c1a3 --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/favicon-16x16.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/favicon-32x32.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/favicon-32x32.png Binary files differindex ca0593a21..ca0593a21 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/favicon-32x32.png +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/favicon-32x32.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/manifest.json b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/manifest.json index 8f2f0f76b..8f2f0f76b 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/manifest.json +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/manifest.json diff --git a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/safari-pinned-tab.svg b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/safari-pinned-tab.svg index aa6e85cb9..aa6e85cb9 100644 --- a/vendor/twbs/bootstrap/site/static/docs/5.1/assets/img/favicons/safari-pinned-tab.svg +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/favicons/safari-pinned-tab.svg diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-parcel.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-parcel.png Binary files differnew file mode 100644 index 000000000..4cfa46cf3 --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-parcel.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-parcel@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-parcel@2x.png Binary files differnew file mode 100644 index 000000000..4f7165879 --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-parcel@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-vite.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-vite.png Binary files differnew file mode 100644 index 000000000..a290110e7 --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-vite.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-vite@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-vite@2x.png Binary files differnew file mode 100644 index 000000000..5fe40c526 --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-vite@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-webpack.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-webpack.png Binary files differnew file mode 100644 index 000000000..189b7f494 --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-webpack.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-webpack@2x.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-webpack@2x.png Binary files differnew file mode 100644 index 000000000..7006386f0 --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/bootstrap-webpack@2x.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/parcel-dev-server-bootstrap.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/parcel-dev-server-bootstrap.png Binary files differnew file mode 100644 index 000000000..a7aa65be0 --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/parcel-dev-server-bootstrap.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/parcel-dev-server.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/parcel-dev-server.png Binary files differnew file mode 100644 index 000000000..1833fb8a0 --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/parcel-dev-server.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/vite-dev-server-bootstrap.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/vite-dev-server-bootstrap.png Binary files differnew file mode 100644 index 000000000..0c3741bd6 --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/vite-dev-server-bootstrap.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/vite-dev-server.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/vite-dev-server.png Binary files differnew file mode 100644 index 000000000..e29729c23 --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/vite-dev-server.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/webpack-dev-server-bootstrap.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/webpack-dev-server-bootstrap.png Binary files differnew file mode 100644 index 000000000..fc37d92d3 --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/webpack-dev-server-bootstrap.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/webpack-dev-server.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/webpack-dev-server.png Binary files differnew file mode 100644 index 000000000..ecba18967 --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/guides/webpack-dev-server.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/parcel.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/parcel.png Binary files differnew file mode 100644 index 000000000..899b29c7b --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/parcel.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/vite.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/vite.png Binary files differnew file mode 100644 index 000000000..87b844b6c --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/vite.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/webpack.png b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/webpack.png Binary files differnew file mode 100644 index 000000000..ed1719b81 --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/img/webpack.png diff --git a/vendor/twbs/bootstrap/site/static/docs/5.2/assets/js/validate-forms.js b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/js/validate-forms.js new file mode 100644 index 000000000..30ea0aa6b --- /dev/null +++ b/vendor/twbs/bootstrap/site/static/docs/5.2/assets/js/validate-forms.js @@ -0,0 +1,19 @@ +// Example starter JavaScript for disabling form submissions if there are invalid fields +(() => { + 'use strict' + + // Fetch all the forms we want to apply custom Bootstrap validation styles to + const forms = document.querySelectorAll('.needs-validation') + + // Loop over them and prevent submission + Array.from(forms).forEach(form => { + form.addEventListener('submit', event => { + if (!form.checkValidity()) { + event.preventDefault() + event.stopPropagation() + } + + form.classList.add('was-validated') + }, false) + }) +})() |