Compare commits

...

786 Commits

Author SHA1 Message Date
GeoSot 7a4a3e9fe1 add docs & some changes 2022-10-08 00:14:32 +03:00
Patrick H. Lauke 27e5375912 Update documentation text
* remove the warning about custom errors and tooltips not being accessible ... they now mostly are
* change the phrasing for server-side validation, so that *all* feedback (whether valid or invalid) should have `aria-describedby`
2022-10-08 00:06:56 +03:00
GeoSot aa6a1ece56 Make a form validation handler | handle form messages
add "aria-describedby" attribute on "supported elements" section

add "aria-describedby" attribute on server side succeed validation messages
2022-10-08 00:06:56 +03:00
GeoSot 4cb046a6b8 Boost execute function, being able to handle arguments (#36652) 2022-10-07 15:25:00 +03:00
Daniel Raymond 708a3a0e39 Utilities for overflow and object fit (#36848)
* Added "overflow-x" and "overflow-y"

- Having the same properties as overflow but for just the x and y axises
- Usecase being I want my y axis to be scrollable but not my x axis
- E.g a card with a vertical list of items.

* Added "object-fit" utilities

- The CSS object-fit property is used to specify how an <img> or <video> should be resized to fit its container.
- A responsive alternative to using background-img for a resizable fill/fit image.

* Updated documantation for the overflow utilities

- Now includes docs for `overflow-x` and `overflow-y` utilities

* Placeholder shortcode updated

- Can now choose to render an img tag or svg
- The image contains a base64 svg generated within the template
- example shortcode updated to detect, replace and render preview of 'img' tags as well

* New documentaion for Object Fit added

- Documentation added for the 'object-fit' util

* Updated spell checks issues

* Update object-fit.md

* Update overflow.md

* Update object-fit.md

* Updated markup to address HTML Validation Errors

- error: Bad value  for attribute "src" on element "img": Illegal character in scheme data: space is not allowed.
- info warning: Self-closing tag syntax in text/html documents is widely discouraged; it's unnecessary and interacts badly with other HTML features (e.g., unquoted attribute values). If you're using a tool that injects self-closing tag syntax into all void elements, without any option to prevent it from doing so, then consider switching to a different tool.

* Updated Fix

- Added Legibility to the img markup (example.html)
- Fixed issue with example not working properly (because image closing tag no longer has "/>" )

* update values by step of 0.25 in bundlewatch.config

The following values in .bundlewatch.config.json have been updated:
- ./dist/css/bootstrap-utilities.css
- ./dist/css/bootstrap-utilities.min.css
- ./dist/css/bootstrap.css
- ./dist/css/bootstrap.min.css

Co-authored-by: Daniel O <dobiekwe@byteworks.com.ng>
Co-authored-by: Mark Otto <otto@github.com>
2022-10-06 13:14:11 -07:00
João Tomás 4822984e19 Fix button hover color in cover example
Replaced .btn-secondary class with .btn-light
2022-10-06 13:12:09 -07:00
Gaël Poupard 5029370a10 fix(carousel): RTL translate() direction
Trying to fix #37180
2022-10-06 13:07:49 -07:00
Julien Déramond 9936ed48d7 Add $enable-important-utilities condition in colored links 2022-10-06 13:04:43 -07:00
Julien Déramond 8291746dd4 Rename examples CSS/JS files for consistency 2022-10-06 13:03:55 -07:00
GeoSot 01dc2f5100 fix tooltip/popper disposal inconsistencies (#37235) 2022-10-06 11:31:38 +03:00
Louis-Maxime Piton bf6240dad9 Add an artificial background to floating labels (#37125) 2022-10-06 08:12:00 +02:00
Neeraj Kumar Das 5975ca65c5 Remove duplicate --#{$prefix}offcanvas-zindex (#37257) 2022-10-04 13:38:07 +02:00
franko553 ebf053b792 Correct typo in documentation for hiding elements (#37250) 2022-10-04 09:24:52 +03:00
Julien Déramond b1185b91ea Add new border-radius utilities (#36540)
* Add new border-radius utilities

* Fix bundlewatch

* Fix bundlewatch again

Co-authored-by: Mark Otto <markdotto@gmail.com>
2022-10-03 11:52:41 -07:00
maks fffe0553c2 Add parameters to the caret mixin 2022-10-03 11:19:56 -07:00
Mark Otto ca067371c4 Update bundlewatch 2022-10-03 11:13:36 -07:00
Stefan Haack 2fa7aa0c18 Added breakpoints as css variables (#36095) 2022-10-03 11:04:19 -07:00
maks 9a582767c6 add font-weight-medium(=500) / fw-medium (#36781)
* add font-weight-medium = 500

* Update _utilities.scss
2022-10-03 10:52:02 -07:00
Isabelle Chanclou 838debaad2 Add new css vars for Offcanvas (#36815)
* Add 3 new css vars for Offcanvas feature

* Fix new css variable after review

* Update _offcanvas.scss

Co-authored-by: Mark Otto <otto@github.com>
2022-10-03 10:51:30 -07:00
Vino Rodrigues 18b99f7387 color css vars for .btn-close 2022-10-03 10:48:22 -07:00
Vino Rodrigues 3b95c311ea Add color CSS vars for .alert-link (#36456)
* color css vars for .alert-link

* Update scss/mixins/_alert.scss

Co-authored-by: Mark Otto <otto@github.com>
2022-10-03 10:47:51 -07:00
Julien Déramond 1b3c38d2cd Rename some vars in tab unit tests for consistency (#37248) 2022-10-03 17:44:37 +03:00
Christian Oliff b2f5cf9c43 Minor grammatical fixes
REF:
https://en.wikipedia.org/wiki/Ajax_(programming)
https://en.wikipedia.org/wiki/Server-side
2022-10-03 06:33:52 -07:00
XhmikosR 961d5ff984 Release v5.2.2 (#37236)
* Bump version to v5.2.2

* Dist
2022-10-03 10:44:02 +03:00
Julien Déramond 9edfed8a5e Don't redefine $border-color in table-variant mixin (#37239)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-10-02 16:33:11 +02:00
GeoSot d49d8ce583 Ensure Tab keyboard functionality after #37146 (#37200)
* fix: keyboard functionality

* test: add tests

* Add some focus spies in 2 other unit tests

Co-authored-by: Julien Déramond <juderamond@gmail.com>
2022-10-02 13:05:30 +03:00
Patrick H. Lauke 0a5f6e078c Use <h1> for all modal-title examples/uses (#37210)
* Use `fs-` font sizing classes where needed
* Also add info callout about heading hierarchy in modals
2022-10-02 13:02:36 +03:00
XhmikosR 812f891bfc Update devDependencies (#37238)
* Update devDependencies

* @babel/cli             ^7.18.10  →   ^7.19.3
* @babel/core             ^7.19.1  →   ^7.19.3
* @babel/preset-env       ^7.19.1  →   ^7.19.3
* eslint-plugin-unicorn   ^43.0.2  →   ^44.0.0
* hugo-bin                ^0.92.1  →   ^0.92.2
* lockfile-lint            ^4.9.3  →    ^4.9.5
* postcss                 ^8.4.16  →   ^8.4.17
* stylelint              ^14.12.1  →  ^14.13.0
* vnu-jar                21.10.12  →   22.9.29

* toast.js: fix new lint errors
2022-10-02 08:24:41 +03:00
XhmikosR da0fe8c8b2 Minor docs changes (#37215) 2022-09-27 23:02:55 +03:00
Julien Déramond abb1cf529f Add eslint-plugin-html to lint JS in HTML files (#37186) 2022-09-27 22:53:59 +03:00
Jonathan f84d82ada0 NuGet: Use license expression (#36421) 2022-09-27 22:45:28 +03:00
Louis-Maxime Piton 80482af57b Changing the way View on GitHub links are handled (#37214) 2022-09-27 22:01:16 +03:00
GeoSot 597c402314 Dropdown: fix case with invalid markup (#37190)
This fixes a backward incompatible change in v5.2.1 where `.drodown-toggle` isn't present in the markup.
2022-09-27 10:39:11 +03:00
XhmikosR e77367dddc Slightly improve PNG files compression (#36899) 2022-09-27 08:50:31 +03:00
XhmikosR 2b65149e02 Update devDependencies (#37208)
* autoprefixer   ^10.4.11  →  ^10.4.12
* eslint          ^8.23.1  →   ^8.24.0
* hugo-bin        ^0.91.1  →   ^0.92.1
* lockfile-lint    ^4.8.0  →    ^4.9.3
* rollup          ^2.79.0  →   ^2.79.1
* sass            ^1.54.9  →   ^1.55.0
* stylelint      ^14.12.0  →  ^14.12.1
2022-09-27 08:49:52 +03:00
Julien Déramond eff658edb7 Replace Webpack and Vite PNGs by SVGs (#37199)
* Replace Webpack and Vite pngs by svgs

* Update vite.svg

* Update webpack.svg

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-09-26 21:16:50 +03:00
GeoSot 24f6e2764a Tests: add testcase to Tabs, keyboard handler (#37189) 2022-09-23 22:18:57 +02:00
Mark Otto 8da10bb1be Add PR template (#35079)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: GeoSot <geo.sotis@gmail.com>
Co-authored-by:  julien-deramond <julien.deramond@orange.com>
2022-09-23 10:44:10 +03:00
Carson Sievert 2b46842af9 Fix active class toggling of tabs within dropdown (#37151)
* Close #36947: fix active class toggling tabs within dropdown
2022-09-22 02:29:58 +03:00
GeoSot 27f20257eb Use es6 on visual tests (#36915) 2022-09-22 01:48:23 +03:00
Mark Otto 37e2e7e124 Use Sass variable for accordion color (#37182)
Fixes #37144
2022-09-21 18:55:57 +02:00
dependabot[bot] 0173f7a9df Bump karma from 6.4.0 to 6.4.1 (#37178)
Bumps [karma](https://github.com/karma-runner/karma) from 6.4.0 to 6.4.1.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v6.4.0...v6.4.1)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-20 17:51:44 +03:00
GeoSot 1510c25e9b Drop tabs auto-focus (#37146)
* fix: drop tabs auto-focus
2022-09-20 17:20:47 +03:00
Patrick H. Lauke 2be9cd59ba Explicitly target .btn-check and undo :hover (#37165)
rather than the other way around, which caused specificity issues
2022-09-20 15:15:46 +02:00
flavio-b 636bb496c9 Set toast z-index variable in the correct spot
The .toast-container tries to use the z-index CSS variable, which is defined under .toast. 
However, this variable is not accessible to the container. This change copies the variable to the spot where it can be used.
2022-09-20 04:36:45 -07:00
XhmikosR d0117a17d8 Update devDependencies (#37177) 2022-09-20 08:09:14 +03:00
Jérémie Broutier 6f65df4fae Fix modal event listeners (#37128)
* Fix modal event listeners (#37126)

Co-authored-by: GeoSot <geo.sotis@gmail.com>
2022-09-15 13:30:51 +03:00
GeoSot aedd7fb9de Docs: Add informative note for Tooltip/Popover selector option (#37142)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2022-09-14 22:03:39 +02:00
Gabriel R. Barbosa 9af1232c65 Docs: Fix typo Getting Started > Vite and Webpack guides (#37153)
* 'were to look' → 'where to look'

Co-authored-by: Julien Déramond <juderamond@gmail.com>
2022-09-14 21:28:10 +02:00
GeoSot 3bd5756414 fix: add trick to support tooltip selector usage on dynamic created tooltips that utilize title attribute (#36914) 2022-09-14 16:24:37 +03:00
Julien Déramond 4600a25404 Docs: minor fix for Navbar > Offcanvas examples (#37145) 2022-09-14 16:11:14 +03:00
dependabot[bot] a1b1e43ddc Bump @rollup/plugin-node-resolve from 13.3.0 to 14.1.0 (#37135)
Bumps [@rollup/plugin-node-resolve](https://github.com/rollup/plugins/tree/HEAD/packages/node-resolve) from 13.3.0 to 14.1.0.
- [Release notes](https://github.com/rollup/plugins/releases)
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/node-resolve/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/node-resolve-v14.1.0/packages/node-resolve)

---
updated-dependencies:
- dependency-name: "@rollup/plugin-node-resolve"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-13 19:38:31 +03:00
dependabot[bot] b5ee6694c1 Bump eslint from 8.23.0 to 8.23.1 (#37134)
Bumps [eslint](https://github.com/eslint/eslint) from 8.23.0 to 8.23.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.23.0...v8.23.1)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-09-13 19:37:36 +03:00
dependabot[bot] d6a38b347f Bump autoprefixer from 10.4.8 to 10.4.10 (#37140)
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.4.8 to 10.4.10.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.4.8...10.4.10)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-13 19:34:32 +03:00
dependabot[bot] 9cee77919d Bump sass from 1.54.8 to 1.54.9 (#37133)
Bumps [sass](https://github.com/sass/dart-sass) from 1.54.8 to 1.54.9.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.54.8...1.54.9)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-13 19:32:12 +03:00
dependabot[bot] 6e55fa9297 Bump @babel/core from 7.18.13 to 7.19.0 (#37090)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.18.13 to 7.19.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.19.0/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-09 18:26:35 +03:00
dependabot[bot] 74184f8c61 Bump @babel/preset-env from 7.18.10 to 7.19.0 (#37088)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.18.10 to 7.19.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.19.0/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-09 18:22:57 +03:00
dependabot[bot] bcfc8d0d63 Bump stylelint-config-twbs-bootstrap from 5.0.0 to 6.0.0 (#37087)
Bumps [stylelint-config-twbs-bootstrap](https://github.com/twbs/stylelint-config-twbs-bootstrap) from 5.0.0 to 6.0.0.
- [Release notes](https://github.com/twbs/stylelint-config-twbs-bootstrap/releases)
- [Commits](https://github.com/twbs/stylelint-config-twbs-bootstrap/compare/v5.0.0...v6.0.0)

---
updated-dependencies:
- dependency-name: stylelint-config-twbs-bootstrap
  dependency-type: direct:development
  update-type: version-update:semver-major
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-09-09 18:17:11 +03:00
XhmikosR 23e50829f9 Release v5.2.1 (#37098)
* Bump version to v5.2.1.

* Dist
2022-09-07 18:31:39 +03:00
GeoSot 23fb7a7915 Fix modal event-listeners during dismiss click (#36863)
ref: #36855
2022-09-07 11:56:33 +03:00
GeoSot 949456984a Fix tooltip manual toggling (#37086)
partial regression of SHA: 9b9372e8dd
2022-09-07 11:47:06 +03:00
Sebastian Homeier 7a7469b8ab Fix accordion button color
Use the Sass variable `$accordion-button-color` to set the CSS custom
property `--bs-accordion-btn-color`.
2022-09-06 10:06:43 -07:00
AmirHossein 9b943880fc Update _button-group.scss 2022-09-05 12:52:43 -07:00
AmirHossein 97a9060a8f Update _button-group.scss 2022-09-05 12:52:43 -07:00
Mark Otto 2504b89950 Remove gradient from .btn-link 2022-09-04 11:12:38 -07:00
Patrick H. Lauke 32c457db4b Rework button focus/active styling, with extra changes for checks/radios (#37026)
* Replace :focus styles with :focus-visible

* Remove :active / .active styles

* Don't apply :hover styles for `.btn` that follows a `.btn-check`

This removes a large part of the visual confusion of button checks/radios - that you currently have to move your mouse away from them to see what they actually changed to (checked or unchecked)

* Reintroduce :active, but *not* for button checks/radios

* Sort focus styling specifically for button checks/radios

don't change background on focus, just give it the border/outline. again, avoids confusion whether something is checked or not while focused

* Re-add `outline:0` which was lost when resolving last merge conflict

Co-authored-by: Mark Otto <markd.otto@gmail.com>
2022-09-04 09:59:14 -07:00
Geremia Taglialatela b8880e5eec Add workarounds for postcss values parser error
postcss-values-parser returns a syntax error when a negative value is
provided in a `calc` function after a CSS variable.

This is not an issue with Bootstrap itself, but a workaround to allow
projects using postcss-values-parser to keep upgrading and compiling
bootstrap

Ref: shellscape/postcss-values-parser#138, twbs/bootstrap#35033

Fix: #36851
2022-09-04 09:45:40 -07:00
dependabot[bot] 75e09b1c0f Bump rtlcss from 3.5.0 to 4.0.0 (#36968)
Bumps [rtlcss](https://github.com/MohammadYounes/rtlcss) from 3.5.0 to 4.0.0.
- [Release notes](https://github.com/MohammadYounes/rtlcss/releases)
- [Changelog](https://github.com/MohammadYounes/rtlcss/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MohammadYounes/rtlcss/compare/v3.5.0...v4.0.0)

---
updated-dependencies:
- dependency-name: rtlcss
  dependency-type: direct:development
  update-type: version-update:semver-major
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-03 08:20:51 +03:00
dependabot[bot] 585146a6a7 Bump eslint-config-xo from 0.41.0 to 0.42.0 (#37052)
Bumps [eslint-config-xo](https://github.com/xojs/eslint-config-xo) from 0.41.0 to 0.42.0.
- [Release notes](https://github.com/xojs/eslint-config-xo/releases)
- [Commits](https://github.com/xojs/eslint-config-xo/compare/v0.41.0...v0.42.0)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-03 08:14:02 +03:00
louismaximepiton a329575d82 Set up a resuming table such as what's in other components. 2022-09-02 11:49:24 -07:00
Louis-Maxime Piton 337068f8b1 fix(dropdowns): Fix multiple dropdowns when they are inside the same tag (#37011) 2022-09-02 10:52:33 +03:00
Mark Otto 54b4b2c66a Improve language around vertical grid gutters 2022-09-01 17:17:14 -07:00
AmirHossein 8c380b2676 flush variant of accordion border radius (#36593)
* flush variant of accordion border radius

Fixed issues regarding to last accordion-item has rounded edges at the bottom left and right corners when focused and are in closed state

* Update _accordion.scss

Co-authored-by: Mark Otto <otto@github.com>
2022-09-01 12:55:45 -07:00
Mark Otto 2793637837 Make docs clearer by dropping precompiled for compiled 2022-09-01 12:15:59 -07:00
charlesroelli 4f97d8fabd Document how to extract CSS, SVG for strict CSP (#36587)
* Webpack: explain how to extract CSS from bundle

* Webpack: explain how to extract SVG from bundle

* Update webpack.md

Co-authored-by: Mark Otto <otto@github.com>
2022-09-01 12:14:07 -07:00
Philip Wedemann b5f2d5a31e Replace wrong mobile OS Windows with iOS 2022-09-01 12:07:08 -07:00
louismaximepiton 77e17e3b8d Fix 2022-09-01 11:35:55 -07:00
Julien Déramond b14190b509 Fix bump popperjs from 2.11.5 to 2.11.6 2022-09-01 11:35:17 -07:00
Giovanni Piller Cottrer 3ad8551f8b Fix accordion: use $accordion-color rather than computing it via color-contrast 2022-08-31 20:51:22 -07:00
Mark Otto a12453a0ff Fix padding on starter template 2022-08-31 20:22:42 -07:00
Mark Otto db34907887 Update dependencies 2022-08-31 20:08:30 -07:00
Patrick H. Lauke cda901f244 v5/docs: reintroduce outline for docs code samples, buttons when :not(:focus-visible) (#36507)
* Remove outline suppression for focused `<pre>`

Sighted keyboard users rely on knowing where their focus is. If the `<pre>` receives focus (so that it can be scrolled by keyboard users, for instance) then it's essential that they know this is the case

* Only suppress outline for buttons when `:not(:focus-visible)`

* Add right-hand margin to pre

avoids having the focus outline awkwardly clipped by the copy button
2022-08-31 18:30:23 -07:00
Florian Lacreuse 87aaf94996 Add default select example in cheatsheet (#36877)
Co-authored-by: Julien Déramond <julien.deramond@orange.com>
2022-08-31 18:19:45 -07:00
Florian Lacreuse 2f3aec819a Fix input group z-index focus + validation 2022-08-31 18:17:41 -07:00
louismaximepiton ebbed79df7 Fix for horizontal list-group item 2022-08-31 18:16:11 -07:00
Julien Déramond a138bc3fb9 More consistency for CSS/Sass vars doc for components with dark variants 2022-08-31 18:15:11 -07:00
Michael Geuchmann bc2ec7c758 bugfix undefined border color variable for btn 2022-08-31 18:12:01 -07:00
Julien Déramond 465cc2da4f Docs: improve cards image overlays markup 2022-08-31 18:10:55 -07:00
louismaximepiton a0238d126b Adding missing CSS variables for z-index 2022-08-31 18:04:09 -07:00
louismaximepiton 4cea8b1786 Add a comment for track the bug. 2022-08-31 18:03:42 -07:00
louismaximepiton 995df354f2 Set cursor to auto instead of pointer on .DocSearch-Container 2022-08-31 18:03:42 -07:00
louismaximepiton 15318674fb Change offcanvas to be more consistent with carousel and dropdown 2022-08-31 18:03:08 -07:00
Louis-Maxime Piton 29332a954f Docs: Fix js options to what is really inside js (#37019) 2022-08-31 16:50:54 +03:00
dependabot[bot] af1bd974bb Bump @rollup/plugin-commonjs from 22.0.1 to 22.0.2 (#36929)
Bumps [@rollup/plugin-commonjs](https://github.com/rollup/plugins/tree/HEAD/packages/commonjs) from 22.0.1 to 22.0.2.
- [Release notes](https://github.com/rollup/plugins/releases)
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/commonjs/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/commonjs-v22.0.2/packages/commonjs)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-29 19:24:27 +03:00
Kitty Giraudel c3c6591166 Update an outdated name mentioned in a Sass comment 2022-08-10 21:23:41 +02:00
XhmikosR a685b9648b Update devDependencies (#36900)
* @babel/cli             ^7.18.9  →  ^7.18.10
* @babel/core            ^7.18.9  →  ^7.18.10
* @babel/preset-env      ^7.18.9  →  ^7.18.10
* eslint                 ^8.20.0  →   ^8.21.0
* sass                   ^1.54.0  →   ^1.54.2
2022-08-04 09:48:23 +03:00
dependabot[bot] aad77f32bd Bump rollup from 2.77.0 to 2.77.2 (#36886)
Bumps [rollup](https://github.com/rollup/rollup) from 2.77.0 to 2.77.2.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.77.0...v2.77.2)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-04 08:29:27 +03:00
Vipin Mishra 9e57dfadac Added new example in examples/features page. (#36660)
* Added new example in examples/features

* Fix indentation, other suggested changes from review

* fix: heading structure
2022-08-03 21:52:41 -07:00
Hadouin e57a94cd66 Docs: add grid-row-columns variable
#36691
2022-08-03 14:12:15 -07:00
Hadouin 8730ef0f8e fix #36662 List-group-item margin-top is offset when importing sass in a nested class (#36663)
* fix #36662 & + .list-group-item

* Ignore linter

Co-authored-by: Mark Otto <otto@github.com>
2022-08-03 11:27:51 -07:00
Patrick H. Lauke 4018fac20e Expand popover custom container explanation
mention the scenario of popovers inside modals - see https://github.com/twbs/bootstrap/issues/36692#issuecomment-1178261690
2022-08-03 11:24:20 -07:00
louismaximepiton 6c221aa043 Fix 2022-08-01 09:06:47 -07:00
Matthew West 7432f2a922 Fix docs typo of .form-checkbox -> .form-check
The class `.form-checkbox` is not used in Bootstrap and here it should say `.form-check` (as shown in the example below).
2022-08-01 09:02:24 -07:00
louismaximepiton c22dd50e1b Fix floating labels 2022-08-01 08:59:22 -07:00
Julien Déramond a4f81c04b5 Bump autoprefixer from 10.4.7 to 10.4.8 (#36860) 2022-07-31 09:41:12 +03:00
Julien Déramond 85530309fa Define correctly $popover-header-color (#36849) 2022-07-29 21:54:18 +02:00
Julien Déramond 17aa6732ab Fix typos after #36762 (#36771) 2022-07-29 21:49:01 +02:00
GeoSot db86607c08 ScrollSpy: make the threshold option configurable (#36750)
* feat(ScrollSpy): make the threshold option configurable
2022-07-28 11:58:28 +03:00
Mark Otto 90c50ab198 Fixes #36770: Add navbar image alt text (#36850) 2022-07-28 07:51:08 +02:00
Mark Otto 3feaf6ca0b Move DocSearch out of offcanvas to always show it on mobile (#36824) 2022-07-27 13:30:42 -07:00
GeoSot dfae892801 Re-set tooltip title, on disposal (#36751)
fix(reg): Re-set tooltip title, on disposal
2022-07-27 17:40:05 +03:00
dependabot[bot] 44c9c8df8d Bump sass from 1.53.0 to 1.54.0 (#36845)
Bumps [sass](https://github.com/sass/dart-sass) from 1.53.0 to 1.54.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.53.0...1.54.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-27 09:09:12 +03:00
dependabot[bot] 02f1c628f1 Bump lockfile-lint from 4.7.6 to 4.7.7 (#36844)
Bumps [lockfile-lint](https://github.com/lirantal/lockfile-lint) from 4.7.6 to 4.7.7.
- [Release notes](https://github.com/lirantal/lockfile-lint/releases)
- [Commits](https://github.com/lirantal/lockfile-lint/compare/lockfile-lint@4.7.6...lockfile-lint@4.7.7)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-27 08:54:09 +03:00
Mark Otto 501faa2c96 Simplify social images and add ability to set per-page images (#36804)
* Simplify social images and add ability to set per-page images

- Removes the homepage summary layout in favor of the larger image card (makes it more consistent with other pages)
- Reuses new thumbnails for Webpack, Parcel, and Vite guides to add their new social images

* Update default social card

* Change description to subtitle, add longer description to match homepage

* Remove social_image_path, use inline conditions for social images
2022-07-26 09:25:47 -07:00
Mark Otto 00aa1a5c6e Remove Slack from site and repo docs (#36825)
* Remove Slack from site and repo docs

* Apply suggestions from code review

Co-authored-by: Julien Déramond <julien.deramond@orange.com>

Co-authored-by: Julien Déramond <julien.deramond@orange.com>
2022-07-25 15:47:14 -07:00
Julien Déramond a153f360ee Fix pagination page items border radius 2022-07-25 16:00:47 -06:00
louismaximepiton dc901d25fa Adding missing offcanvas added-in shortcode 2022-07-25 15:50:53 -06:00
louismaximepiton 01bf7a9b86 Adding missing borders added-in shortcode 2022-07-25 15:50:53 -06:00
Julien Déramond 14e705d9ae Docs: Redirect users to different templates of issues rather than an empty one (#36827) 2022-07-25 19:19:11 +02:00
Julien Déramond 99cd8ca8a0 Docs: use added-in shortcode in Offcanvas (#36836) 2022-07-25 19:11:44 +02:00
Christian Oliff e547c9c2e9 Docs: fix Markdown link in Tooltips (#36839) 2022-07-25 19:07:42 +02:00
Patrick H. Lauke 7688c84b8a Correct heading levels in features example
to keep the look the same, added `fs-...` sizing classes where necessary
2022-07-25 08:49:06 -06:00
campersau b6d27899fc Rename scrollspy to toast in toast.md (#36819) 2022-07-23 01:56:02 +03:00
Sadeed pv d12bcf7bc0 Fix Algolia's DocSearch broken URL in README (#36812) 2022-07-22 16:30:11 +02:00
なつき 04b5d099b3 Remove unused parameter of bsBanner mixin (#36791) 2022-07-22 10:35:38 +02:00
XhmikosR edf9c40956 Release v5.2.0 (#36768)
* Bump version to 5.2.0

* Dist

* Update masthead.html
2022-07-19 18:43:58 +03:00
GeoSot f451b4161e Fix failing test on EventHandler (#36772) 2022-07-19 15:46:36 +03:00
XhmikosR 4035ad1a0e Update devDependencies (#36767)
* @babel/cli                       ^7.18.6  →  ^7.18.9
* @babel/core                      ^7.18.6  →  ^7.18.9
* @babel/preset-env                ^7.18.6  →  ^7.18.9
* clean-css-cli                     ^5.6.0  →   ^5.6.1
* eslint                           ^8.19.0  →  ^8.20.0
* eslint-plugin-markdown            ^2.2.1  →   ^3.0.0
* rollup                           ^2.76.0  →  ^2.77.0
* stylelint-config-twbs-bootstrap   ^4.0.0  →   ^5.0.0
* terser                           ^5.14.1  →  ^5.14.2
2022-07-19 08:33:05 +03:00
Marc Wrobel eae51cdf32 Fix various small typos in documentation (#36762) 2022-07-18 13:30:41 -07:00
Marc Wrobel 705d6857ad Fix typos in code (#36763)
Shoutout is correct but has been replaced by its more common form : Shout-out (https://www.merriam-webster.com/dictionary/shout-out).
2022-07-18 13:30:29 -07:00
JWB 154916ca2e Fixing pagination compile issue
This was an issue with the tables as well, but that has been updated here - 4a3c004c34

This was also noted here - 36501#issuecomment-1153187062_

This effects the 5.2 beta1 that is released on the homepage.

Whats happening is with a fresh download and compile, with some compilers, I noticed not all of them run into this issue, we get the Sass variable showing up and not the actual value.

Steps to reproduce - 
 - Download the source code form the docs for beta 2 and extract
 - Open VSCode -> open folder to the bootstrap directory you just extracted
 - install the "Sass/Less/Stylus/Pug/Jade/Typescript/Javascript Compile Hero Pro" v2.3.53 by Eno Yao extension
 ---- might have to restart VSCode
 - go to that extensions settings, and set the directory to save the output / compiled version to `../dist`
 - tap that Compile Hero on the bottom to activate the extension
 - open `bootstrap.scss` add a space or a new line and save it
 - check the compiles version and you should see the errors
2022-07-17 21:18:55 -07:00
Nils K 9d5c834f94 Fix indentation in code sample 2022-07-17 20:53:28 -07:00
Julien Déramond 150b374933 Fix active/focused button link text color 2022-07-17 20:52:52 -07:00
Mark Otto d262a50c1f Add links to Webpack, Parcel, and Vite guides on homepage (#36760) 2022-07-17 20:52:30 -07:00
Mark Otto 71cbb88f09 Support input groups in floating forms (#36759)
* Support input groups in floating forms

* Update bundlewatch

Co-authored-by: 719media <ben@719media.com>
2022-07-17 20:50:41 -07:00
Marc Wrobel 6d101b15a4 Fix typos in snippets.js (#36758) 2022-07-17 20:54:34 +02:00
Julien Déramond ed448925da Docs: same text for disabled ranges and disabled form controls (#36741) 2022-07-16 10:29:51 +02:00
Julien Déramond aa8d0b3439 Standardization of spyOn usage (#36742) 2022-07-15 16:52:03 +03:00
GeoSot 713d7140f1 Offcanvas: activate focustrap when backdrop is enabled (#36717)
* fix(offcanvas): activate focustrap when backdrop is enabled
* Adding tabindex='-1' for both offcanvases in the docs
* Remove useless aria-expanded='false' in togglers
* Update js/tests/unit/offcanvas.spec.js

Co-authored-by: Julien Déramond <julien.deramond@orange.com>
Co-authored-by: Julien Déramond <juderamond@gmail.com>
Co-authored-by: Patrick H. Lauke <redux@splintered.co.uk>
2022-07-14 10:06:06 +01:00
Patrick H. Lauke 8bb68b04b3 Add accNames to all progress bar examples (#36732)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
Co-authored-by: Abdullah Alaqeel <abdullah.t.aqeel@gmail.com>
2022-07-13 23:31:15 +02:00
Christian Oliff b5910674da Docs: Capitalize Unicode (#36734) 2022-07-13 17:27:16 +02:00
GeoSot 54317bf7c8 Add a banner mixin, helping future releases and maintenance (#36178)
* Add a banner mixin, helping future releases and maintenance

* Update scss/bootstrap-reboot.scss

Co-authored-by: Julien Déramond <julien.deramond@orange.com>

* Apply suggestions from code review

Co-authored-by: Julien Déramond <julien.deramond@orange.com>
Co-authored-by: Mark Otto <markd.otto@gmail.com>
2022-07-11 16:36:12 -07:00
Louis-Maxime Piton ed2690608e Fix on #35679 (#36668)
* Fix

* .
2022-07-11 16:29:30 -07:00
GeoSot 62b3d3cc68 Add some details for non visible scrollspy elements (#36625)
* docs: add some details for non visible scrollspy elements

* Apply suggestions from code review

Co-authored-by: Julien Déramond <julien.deramond@orange.com>

* fix selectors on snippet

* Fix paragraph by a native speaker

Co-authored-by: Mark Otto <markd.otto@gmail.com>

* Update scrollspy.md

* Move from warning to own section

* Update scrollspy.md

Co-authored-by: Julien Déramond <julien.deramond@orange.com>
Co-authored-by: Julien Déramond <juderamond@gmail.com>
Co-authored-by: Mark Otto <markd.otto@gmail.com>
Co-authored-by: Mark Otto <markdotto@gmail.com>
2022-07-11 16:17:53 -07:00
Julien Déramond a1224482f2 Add $display-font-family and $display-font-style (#36711) 2022-07-11 23:16:33 +02:00
Neeraj Kumar Das ac654a0f66 Add CSS custom property: --bs-btn-disabled-border-color to mixin: button-outline-variant 2022-07-11 01:38:05 -07:00
XhmikosR 81aa8e0713 Update devDependencies (#36715)
* eslint                 ^8.18.0  →  ^8.19.0
* lockfile-lint           ^4.7.5  →   ^4.7.6
* nodemon                ^2.0.18  →  ^2.0.19
* postcss-cli             ^9.1.0  →  ^10.0.0
* rollup                 ^2.75.7  →  ^2.76.0
2022-07-11 11:18:49 +03:00
Julien Déramond 5235f8eb04 Fix 'Remove from map' Sass description 2022-07-11 00:59:42 -07:00
Mark Otto 270344a0d5 Remove headings-color CSS variable due to backward compatibility issues 2022-07-11 00:56:26 -07:00
Julien Déramond 3eb6265b65 Docs: fix description on how to alter display values (#36712) 2022-07-10 08:37:47 +02:00
Julien Déramond 59a285ff3c Docs: Add 'Icons' link in footer 2022-07-08 17:05:39 -07:00
Julien Déramond 2bf383c596 Add missing CSS vars for .navbar-nav 2022-07-07 14:32:35 -07:00
Julien Déramond a396d9cd12 Replace JS Bin refs by CodePen or StackBlitz references 2022-07-07 14:28:08 -07:00
Christian Oliff 6f10bdc99c add type="button" to Bootstrap versions dropdown (#36696)
minor accessibility issue fix reported by webhint.io browser extension
2022-07-07 13:14:24 +01:00
Julien Déramond 6cf72530ed Docs: add indeterminate disabled checkbox example (#36674) 2022-07-06 07:43:38 +02:00
Julien Déramond 22c7503c88 Docs: alphabetical reorder of some events/methods in tables (#36669) 2022-07-06 07:33:28 +02:00
Nathan Walters 3f324eed02 Handle non-empty whitespace textContent in Tooltip trigger (#36588) 2022-07-06 07:15:50 +02:00
Julien Déramond 7d0b224df4 Revert db61cf3 for $text-muted default value (#36680) 2022-07-06 06:22:30 +02:00
Christian Oliff f0f8107d05 remove dead link from translations 2022-07-05 14:43:53 -10:00
Julien Déramond 547aa099ea Docs: fix some ScrollSpy HTML copyable codes (#36672) 2022-07-05 13:45:30 +02:00
Julien Déramond c1813ef2bc ref(tests): Minor fix to use self-closing input HTML tag (#36667) 2022-07-04 14:12:10 +03:00
Vipin Mishra a13f432db4 Fix a typo in the documentation masthead (#36658)
Co-authored-by: Vipin MIshra <vipin@digiqt.com>
2022-07-02 06:17:55 +00:00
Neeraj Kumar Das f2692b1c58 Added examples for Radios in List Group (#36644)
* Add examples for Radios in List Group
* Reduce the number of checkboxes and radios to 3 for consistency
Drop aria-label on inputs and use label
Use class stretched-link on labels to cover the whole list group item
Check the first radio by default
Remove radios from streched link examples


Co-authored-by: Julien Déramond <juderamond@gmail.com>
2022-06-30 22:58:28 +03:00
Aleksander Machniak 505e0235b9 Fix interoperability issue regarding Event properties (#36386)
* Fix interoperability issue regarding Event properties

- make possible to re-set read-only event properties
- use hydrateObj() to set delegateTarget property

Fixes #36207

Co-authored-by: GeoSot <geo.sotis@gmail.com>
Co-authored-by: Julien Déramond <julien.deramond@orange.com>
2022-06-30 22:52:47 +03:00
Christian Oliff 4082a3b52d update Lighthouse URL
saves a HTTP redirect :-)
2022-06-30 22:25:32 +03:00
Julien Déramond 9400b8f2f9 Fix tooltip/badge border radius when rounded disabled 2022-06-29 13:41:33 -07:00
Tech Vanity d4aee02458 Fix dashboard example so that the sticky sidebar has scrollable content (#36608) 2022-06-29 18:33:23 +02:00
XhmikosR 7f70fcab0f Update devDependencies (#36640)
* @babel/cli               ^7.17.10  →  ^7.18.6
* @babel/core               ^7.18.5  →  ^7.18.6
* @babel/preset-env         ^7.18.2  →  ^7.18.6
* @rollup/plugin-commonjs   ^22.0.0  →  ^22.0.1
* eslint                    ^8.17.0  →  ^8.18.0
* hugo-bin                  ^0.88.2  →  ^0.89.0
* karma-jasmine              ^5.0.1  →   ^5.1.0
* nodemon                   ^2.0.16  →  ^2.0.18
* rollup                    ^2.75.6  →  ^2.75.7
* sass                      ^1.52.3  →  ^1.53.0
2022-06-28 09:07:31 +03:00
Julien Déramond 828034f26f Fix search modal z-index to be on top of all docs showcased components (#36627) 2022-06-28 07:41:15 +02:00
Julien Déramond 9cf0e9b735 Fix StackBlitz examples needing docs CSS (#36637) 2022-06-28 07:31:47 +02:00
GeoSot 4f4b42dd14 Force tooltip and popover to recreate content every time it opens (#35679) 2022-06-27 12:58:27 +03:00
GeoSot f14c58f494 ref(tab): remove show from panels dependent-less they have .fade class or not (simplify checks) (#36622) 2022-06-27 12:43:11 +03:00
Julien Déramond 8de0488330 Docs: update clipboard.js to v2.0.11 2022-06-25 16:06:07 +03:00
Julien Déramond eea1b1e1fd Use 'needs-example' label to trigger live demo bot message (#36624) 2022-06-22 22:53:28 +02:00
GeoSot d05c42a397 fix: change dismiss handler, listening to key down, instead of click (#36401) 2022-06-21 11:03:57 +03:00
Julien Déramond a877c5d04a Fix popover live demo to use data-bs-title instead of title (#36613) 2022-06-21 07:39:15 +02:00
Julien Déramond cfabeb71fa Fix StackBlitz Popovers and Tooltips examples (#36449)
* Fix StackBlitz Popovers and Tooltips examples

* Rename shortcode example parameters

* Reorder example shortcode doc params + fix Cspell

* Remove 'stackblitz' param + use data-bs-title instead of title

* Update site/layouts/partials/callout-warning-data-bs-title-vs-title.md

Co-authored-by: Mark Otto <markd.otto@gmail.com>

Co-authored-by: Mark Otto <markd.otto@gmail.com>
2022-06-20 07:19:47 -07:00
Julien Déramond 22503d6b21 Update Code of Conduct with Contributor Covenant 2.1 (#36548)
Signed-off-by: Julien Déramond <juderamond@gmail.com>
2022-06-16 06:52:36 +02:00
Mark Otto 24d79fe74c Add example of dark navbar and offcanvas to docs (#36510) 2022-06-15 07:41:39 -07:00
Mark Otto ac0b87b207 Don't style readonly inputs as disabled (#36499)
* Don't style readonly inputs as disabled

Also remove the Chrome-specific focus styling from readonly plaintext

* Update some docs comments
2022-06-14 07:25:49 -07:00
XhmikosR dfe7472431 Regenerate package-lock.json 2022-06-14 16:33:00 +03:00
dependabot[bot] 7dc4fa932f Bump lockfile-lint from 4.7.4 to 4.7.5 (#36570)
Bumps [lockfile-lint](https://github.com/lirantal/lockfile-lint) from 4.7.4 to 4.7.5.
- [Release notes](https://github.com/lirantal/lockfile-lint/releases)
- [Commits](https://github.com/lirantal/lockfile-lint/compare/lockfile-lint@4.7.4...lockfile-lint@4.7.5)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-14 16:31:29 +03:00
dependabot[bot] c57625b4d4 Bump karma from 6.3.20 to 6.4.0 (#36573)
Bumps [karma](https://github.com/karma-runner/karma) from 6.3.20 to 6.4.0.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v6.3.20...v6.4.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-14 16:22:27 +03:00
dependabot[bot] 8d29e86ff4 Bump sass from 1.52.2 to 1.52.3 (#36572)
Bumps [sass](https://github.com/sass/dart-sass) from 1.52.2 to 1.52.3.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.52.2...1.52.3)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-14 16:19:44 +03:00
dependabot[bot] 1656b07ed5 Bump rollup from 2.75.5 to 2.75.6 (#36571)
Bumps [rollup](https://github.com/rollup/rollup) from 2.75.5 to 2.75.6.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.75.5...v2.75.6)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-14 16:19:21 +03:00
GeoSot fc24f8788f Carousel: Remove redundant reference to interval=false from docs (#36545)
* docs: remove redundant reference to `interval=false`

* docs: remove redundant reference to `interval=false` from tests

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-06-14 16:17:28 +03:00
dependabot[bot] 13f109e542 Bump hugo-bin from 0.88.1 to 0.88.2 (#36569)
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.88.1 to 0.88.2.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.88.1...v0.88.2)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-14 16:14:59 +03:00
dependabot[bot] 147d3b0c9a Bump terser from 5.14.0 to 5.14.1 (#36568)
Bumps [terser](https://github.com/terser/terser) from 5.14.0 to 5.14.1.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.14.0...v5.14.1)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-14 16:14:36 +03:00
dependabot[bot] 06f0cca502 Bump stylelint from 14.8.5 to 14.9.1 (#36567)
Bumps [stylelint](https://github.com/stylelint/stylelint) from 14.8.5 to 14.9.1.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/14.8.5...14.9.1)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-14 16:14:09 +03:00
dependabot[bot] 4d91157e39 Bump @babel/core from 7.18.2 to 7.18.5 (#36566)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.18.2 to 7.18.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.18.5/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-14 16:13:24 +03:00
GeoSot ec8166a90f fix: fix possible bug on event handler. (#36561)
some browsers validate the empty object as `true`, so is safer to use an explicit check
2022-06-14 08:33:53 +03:00
Mark Otto 5f75413735 Generate local CSS variables on utilities when using state option 2022-06-13 14:07:13 -07:00
Sam Magura 1b31f84916 Document BootstrapVue being outdated 2022-06-13 08:41:50 -07:00
Mark Otto a9ef305b81 Fixes #36550 2022-06-13 08:31:59 -07:00
Jeremy Thompson 0a3864641b Add .active navbar breaking change to 5.0 docs 2022-06-08 15:44:29 -07:00
Mark Otto d16a16258c Manually set hover and active backgrounds and borders for dark and light buttons 2022-06-08 15:32:05 -07:00
Julien Déramond ae3442041c Fix typo in dropdown unit test 2022-06-08 15:23:03 -07:00
GeoSot 37cf7d11b9 Scrollspy: enable smooth-scroll behavior (#36528) 2022-06-08 22:35:09 +03:00
XhmikosR 90021886f6 Update devDependencies (#36513)
* eslint                           ^8.16.0  →  ^8.17.0
* sass                             ^1.52.1  →  ^1.52.2
* stylelint-config-twbs-bootstrap   ^3.2.0  →   ^4.0.0
2022-06-07 07:33:32 +03:00
Patrick H. Lauke af0c1d8618 Improve accessible name of version dropdown in docs navbar (#36495)
- add `aria-hidden="true"` to the "Bootstrap" text that is hidden on large screens
- add separate visually-hidden "Bootstrap", which will be part of the accessible name regardless of whether the other string is visible or not (on large screen)
- extra visually-hidden text to give some context - that the dropdown is about switching versions
- remove the redundant id/aria-labelledby for the dropdown
2022-06-05 09:59:41 +01:00
Julien Déramond 5b0bf3f49a Docs: Add a Vite Getting Started guide (#36412)
* Docs: Add a Vite Getting Started guide

* Fix npm run docs temporarily

* Fix cspell and lint

* Uncomment the 2nd part

* .

* Make it work without dist

* Updates after merges of Parcel/Webpack guides rewriting

* Update images

* Replace dev images

* Compress the new images better

* Update site/content/docs/5.2/customize/optimize.md

Co-authored-by: Mark Otto <otto@github.com>

* Update site/content/docs/5.2/getting-started/vite.md

Co-authored-by: Mark Otto <markdotto@gmail.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: Mark Otto <otto@github.com>
2022-06-04 09:42:32 -07:00
Patrick H. Lauke 8965b11dd5 Remove confusing unnecessary id/aria-labelledby for dropdown menus (#36487)
see https://github.com/twbs/bootstrap/discussions/35755

Note that even the APG guide for disclosure widgets doesn't use this optional "nice-to-have" extra bit https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/ (though they do use `aria-controls`, which in most current browser/AT combos is borked though)
2022-06-03 11:18:22 +01:00
Patrick H. Lauke 3102b4a3e9 Update some WCAG links, expand sass.md contrast explanation (#36489) 2022-06-03 10:42:49 +01:00
Julien Déramond 6d5a70340d Docs: fix some ARIA Authoring Practices Guides broken links (#36488)
* Docs: fix some ARIA Authoring Practices Guides broken link
2022-06-02 22:10:22 +01:00
louismaxime.piton c137d11aa2 Re-ordering js default objects 2022-06-01 19:24:45 -07:00
Mark Otto 824c5a077b Fix .dropdown-item border-radius when -padding-y is 0 2022-06-01 18:41:26 -07:00
Julien Déramond ac89c3692b Docs: remove unused _algolia.scss 2022-06-01 14:24:08 -07:00
Julien Déramond 29766b2db2 Docs: fix Reboot Horizontal rules using border utilities 2022-06-01 14:14:06 -07:00
XhmikosR eb17d3d760 Update devDependencies (#36481)
* hugo-bin                         ^0.87.1  →  ^0.88.1
* rollup                           ^2.74.1  →  ^2.75.5
* stylelint-config-twbs-bootstrap   ^3.1.0  →   ^3.2.0
2022-06-01 18:19:32 +03:00
dependabot[bot] 83cb588f94 Bump streetsidesoftware/cspell-action from 1 to 2 (#36473)
Bumps [streetsidesoftware/cspell-action](https://github.com/streetsidesoftware/cspell-action) from 1 to 2.
- [Release notes](https://github.com/streetsidesoftware/cspell-action/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell-action/compare/v1...v2)

---
updated-dependencies:
- dependency-name: streetsidesoftware/cspell-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-05-31 17:52:57 +03:00
dependabot[bot] dcb4d5e1df Bump stylelint from 14.8.3 to 14.8.5 (#36472)
Bumps [stylelint](https://github.com/stylelint/stylelint) from 14.8.3 to 14.8.5.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/14.8.3...14.8.5)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-05-31 17:51:01 +03:00
dependabot[bot] 753698fea0 Bump @babel/preset-env from 7.18.0 to 7.18.2 (#36470)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.18.0 to 7.18.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.18.2/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-31 17:48:37 +03:00
dependabot[bot] f5dd354a25 Bump @babel/core from 7.18.0 to 7.18.2 (#36469)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.18.0 to 7.18.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.18.2/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-05-31 17:43:18 +03:00
dependabot[bot] e9b901785a Bump terser from 5.13.1 to 5.14.0 (#36468)
Bumps [terser](https://github.com/terser/terser) from 5.13.1 to 5.14.0.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.13.1...v5.14.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-05-31 17:39:58 +03:00
dependabot[bot] 28b1bc67b1 Bump karma-jasmine-html-reporter from 1.7.0 to 2.0.0 (#36467)
Bumps [karma-jasmine-html-reporter](https://github.com/dfederm/karma-jasmine-html-reporter) from 1.7.0 to 2.0.0.
- [Release notes](https://github.com/dfederm/karma-jasmine-html-reporter/releases)
- [Commits](https://github.com/dfederm/karma-jasmine-html-reporter/compare/v1.7.0...v2.0.0)

---
updated-dependencies:
- dependency-name: karma-jasmine-html-reporter
  dependency-type: direct:development
  update-type: version-update:semver-major
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-31 17:36:30 +03:00
Louis-Maxime Piton d388bd6e1b JS: tests fixes & standardization of spies usage (#36398)
* Fix carousel spec typo
* Change carousel test name in align with testing method
* Make the spies declarations the same everywhere
2022-05-31 11:18:32 +03:00
mcoms 78c0ad8044 fix alert border radius 2022-05-30 09:26:41 -07:00
Julien Déramond ef3ecaf997 Docs: Use example shortcode for all Button groups (#36450) 2022-05-30 07:27:48 +02:00
GeoSot 651dae6d0f Add some details on "javascript" page (#36363)
* docs: Add more details on "getting-started -> javascript" page & group jQuery stuff

* Update after feedback

* Rewrite some content

- Shorten copy here and there
- Reduce some callouts that are entire sections with h2 headings
- Re-arrange a couple things

Co-authored-by: Mark Otto <markdotto@gmail.com>
Co-authored-by: Mark Otto <markd.otto@gmail.com>
2022-05-27 19:06:07 -07:00
Julien Déramond 8b85267739 Fix StackBlitz examples by embedding snippets.js when needed (#36352)
* Fix StackBlitz examples by embedding snippets.js when needed

* Fix Popovers

* Fix tooltips

* Fix Toasts

* Add comment sections

* Fix Alerts

* Indeterminate heckboxes + classes handling

* Nothing to do for links

* Fix modals

* Nothing to do for Offcanvas

* Remove correctly .bd-example

* Add body .p-3 for all StackBlitz examples
2022-05-26 14:29:08 -07:00
Mark Otto 4a3c004c34 Update Sass for computing .table-group-divider border (#36446)
* Update Sass for computing .table-group-divider border

* Remove stylelint rule
2022-05-26 14:23:54 -07:00
Mark Otto 23c4a96726 Update import order for utilities API docs (#36444)
* Update import order for utilities API docs

* Add more complex examples, clarify things

* typo
2022-05-26 14:11:27 -07:00
XhmikosR 0c5cc1bc28 Docs: improve image compression (#36346) 2022-05-25 09:41:15 +03:00
Mark Otto 461596e5ea Add docs info for using JS w/ ESM shim (#36414)
* Docs: dependencies mgmt for vanilla ESM in browser

Doc change for https://github.com/twbs/bootstrap/issues/31944

* Update javascript.md

* Update javascript.md

* Update .cspell.json

* Update javascript.md

* Update javascript.md

* rewrite

* Add link

* edit

* eslint-skip

Co-authored-by: Caspar MacRae <earcam@gmail.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-05-24 10:52:46 -07:00
Louis-Maxime Piton dea14df8ca CSS: doc fixes (#36425)
* Remove unused attributes

* Use utilities rather than using new CSS

* Removed unused class

* Change StackBlitz icon `aria-label` + small inconsistency
2022-05-24 10:39:57 -07:00
dependabot[bot] afef596f20 Bump stylelint-config-twbs-bootstrap from 3.0.1 to 3.1.0 (#36428)
* Bump stylelint-config-twbs-bootstrap from 3.0.1 to 3.1.0

Bumps [stylelint-config-twbs-bootstrap](https://github.com/twbs/stylelint-config-twbs-bootstrap) from 3.0.1 to 3.1.0.
- [Release notes](https://github.com/twbs/stylelint-config-twbs-bootstrap/releases)
- [Commits](https://github.com/twbs/stylelint-config-twbs-bootstrap/compare/v3.0.1...v3.1.0)

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

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

* Update .stylelintrc

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-05-24 09:47:44 +03:00
XhmikosR 39b609431b Update devDependencies (#36427)
* @babel/core        ^7.17.10  →  ^7.18.0
* @babel/preset-env  ^7.17.10  →  ^7.18.0
* eslint              ^8.15.0  →  ^8.16.0
* eslint-config-xo    ^0.40.0  →  ^0.41.0
* hugo-bin            ^0.86.0  →  ^0.87.1
* postcss             ^8.4.13  →  ^8.4.14
* rollup              ^2.72.1  →  ^2.74.1
* sass                ^1.51.0  →  ^1.52.1
* stylelint           ^14.8.2  →  ^14.8.3
2022-05-24 07:24:28 +03:00
Mark Otto 427c089961 Stylelint: Disable custom-property-empty-line-before 2022-05-22 19:58:14 -07:00
Mark Otto d17fe26dcf Rewrite Parcel guide (#36411)
* Rewrite Parcel guide

* update to match latest webpack guide, add images

* eslint-skip

* Apply suggestions from code review

Co-authored-by: Julien Déramond <julien.deramond@orange.com>

* match parcel to webpack, share footer, consistent use of no ;

* Update site/content/docs/5.2/getting-started/parcel.md

Co-authored-by: Julien Déramond <julien.deramond@orange.com>

* edits from code review

* Add custom images

* add image compression action from blog

Co-authored-by: Julien Déramond <julien.deramond@orange.com>
2022-05-22 17:47:01 -07:00
HDPham 7ed1a5f821 Truncate text to prevent multiline floating label 2022-05-21 10:47:34 -07:00
汪心禾 8d87997303 Remove is-invalid from textarea validation example 2022-05-21 10:18:16 -07:00
Mark Otto 3a327c9015 Rewrite Webpack guide (#36382)
* Rewrite Webpack guide

Co-Authored-By: GeoSot <geo.sotis@gmail.com>
Co-Authored-By: Julien Déramond <17381666+julien-deramond@users.noreply.github.com>

* rewrite some pieces

* eslint-skip

Co-authored-by: GeoSot <geo.sotis@gmail.com>
Co-authored-by: Julien Déramond <17381666+julien-deramond@users.noreply.github.com>
2022-05-20 13:43:30 -07:00
Ryan Berliner 27261bd495 add back focus box shadow on btn link 2022-05-20 11:19:17 -07:00
Mark Otto eaf760e4bc Update form-control-color sizing and styles (#36156) 2022-05-20 11:02:32 -07:00
Louis-Maxime Piton e2e107fc72 CSS: few proposals (#36406)
* Something to try about `!important` in color-bg helper

* Better understanding border utility `.border-*-0`

* Having rounded numbers of px
2022-05-20 10:28:31 -07:00
Louis-Maxime Piton 8959bf3f0b Docs: quick fixes for HTML (#36395)
* Using the new helper in the doc

* Remove input from `Tab` access

* Change scrollspy code examples

* Reordering tables for JS

* Fix for parcel file

* Center align all the code example texts in layout

* Alphabetical reorder the helpers
2022-05-20 10:21:48 -07:00
Liam 73e45ee36c Update introduction.md
Juste a quotation mark.
2022-05-20 09:38:34 -07:00
Julien Déramond 416f4905f1 Fix missing Swag Store URL 2022-05-17 07:51:58 -07:00
GeoSot b5a956781f Assorted Event handler patches (#36171)
* EventHandler: rename functions & variables

* EventHandler: export event hydration to function

* EventHandler: rename variable

* EventHandler: simplify checks and make use of one variable

Move check of falsie delegated-selector, caused by tooltip.js

* EventHandler: more renaming

* Update event-handler.js

* bump bunldewatch

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-05-16 07:59:50 -07:00
Christian Oliff da541014cb Correct rounded sizes number 2022-05-16 07:14:42 -07:00
Mark Otto e12e0806fb Update search box styling and position 2022-05-15 14:22:33 -07:00
Justin Kruit bb4f9d74fb Offcanvas not showing with .showing (#36353)
The transform of .showing was being overridden by .offcanvas.offcanvas-start, while .show wasn't. This resulted in an illusion of the offcanvas waiting for the backdrop, reported in #36347. Moving the show classes below the position classes fixes this problem.
2022-05-14 21:36:01 +03:00
Mark Otto 46bb9e78d7 Fix homepage npm install snippet 2022-05-13 20:16:05 +03:00
XhmikosR ab37f63b3d docs: add the version in npm/yarn commands 2022-05-13 20:16:05 +03:00
XhmikosR fca04c0713 Dist 2022-05-13 19:44:01 +03:00
Mark Otto eacee3ad3f Add Fathom Analytics 2022-05-13 19:44:01 +03:00
Mark Otto f7e8ca91e0 Prepare v5.2.0-beta1 2022-05-13 19:44:01 +03:00
Julien Déramond 8d016c6cf9 Fix a11y keyboard access to docs navigation (#36340)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-05-13 19:28:55 +03:00
XhmikosR 5f8383a136 docs: link to the root page for the homepage (#36344) 2022-05-13 19:28:18 +03:00
XhmikosR bd84449330 Update devDependencies and regenerate package-lock.json (#36342)
* karma          ^6.3.19  →  ^6.3.20
* karma-jasmine   ^5.0.0  →   ^5.0.1
2022-05-13 19:27:17 +03:00
XhmikosR ce650e7c7d docs: drop Scratch usage (#36337) 2022-05-13 18:49:49 +03:00
XhmikosR 6c10d60711 tooltip: ignore $tooltip-margin warning for core 2022-05-13 08:38:24 -07:00
GeoSot b167420bdf Revert backdrop utilization, handling clicks over modal (#36324)
* refactor(Modal.js): stop using backdrop class to handle clicks over modal

* Revert #35554 and backdrop callback usage
  Explanation: In order to bypass `.modal`, was applied a css rule `pointer-events:none` which caused the side effect, and user couldn't scroll "long content modals"

* Update .bundlewatch.config.json

Co-authored-by: Mark Otto <markd.otto@gmail.com>
2022-05-12 21:20:04 -07:00
Julien Déramond 88a6610895 Minor changes in 'Usage with JavaScript frameworks' description 2022-05-11 12:06:48 -07:00
Julien Déramond bbda152cd9 Remove unused .border-right rule from modal example CSS file 2022-05-11 11:29:26 -07:00
Julien Déramond dd19bf2657 Doc: fix text overflow example 2022-05-11 08:28:35 -07:00
cccabinet 795167d822 Fix contents.md 2022-05-10 15:17:29 -07:00
dependabot[bot] 3cac119930 Bump terser from 5.12.1 to 5.13.1 (#36267)
Bumps [terser](https://github.com/terser/terser) from 5.12.1 to 5.13.1.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.12.1...v5.13.1)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-05-10 11:38:12 +03:00
dependabot[bot] 124bdfa4c1 Bump ip from 1.1.5 to 2.0.0 (#36316)
Bumps [ip](https://github.com/indutny/node-ip) from 1.1.5 to 2.0.0.
- [Release notes](https://github.com/indutny/node-ip/releases)
- [Commits](https://github.com/indutny/node-ip/compare/v1.1.5...v2.0.0)

---
updated-dependencies:
- dependency-name: ip
  dependency-type: direct:development
  update-type: version-update:semver-major
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 11:22:52 +03:00
dependabot[bot] a9f8feb90b Bump nodemon from 2.0.15 to 2.0.16 (#36320)
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.15 to 2.0.16.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.15...v2.0.16)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 10:27:45 +03:00
dependabot[bot] 0e2fe9c8d1 Bump @rollup/plugin-node-resolve from 13.2.1 to 13.3.0 (#36319)
Bumps [@rollup/plugin-node-resolve](https://github.com/rollup/plugins/tree/HEAD/packages/node-resolve) from 13.2.1 to 13.3.0.
- [Release notes](https://github.com/rollup/plugins/releases)
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/node-resolve/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/node-resolve-v13.3.0/packages/node-resolve)

---
updated-dependencies:
- dependency-name: "@rollup/plugin-node-resolve"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 10:10:18 +03:00
dependabot[bot] ceb94d07fa Bump @babel/core from 7.17.9 to 7.17.10 (#36318)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.17.9 to 7.17.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.10/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 10:02:47 +03:00
dependabot[bot] 8070e2da9d Bump hugo-bin from 0.85.3 to 0.86.0 (#36317)
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.85.3 to 0.86.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.85.3...v0.86.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-05-10 09:59:10 +03:00
dependabot[bot] 7db2b16bea Bump eslint from 8.13.0 to 8.15.0 (#36315)
Bumps [eslint](https://github.com/eslint/eslint) from 8.13.0 to 8.15.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.13.0...v8.15.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 09:51:00 +03:00
dependabot[bot] 003fcac619 Bump stylelint from 14.7.1 to 14.8.2 (#36313)
Bumps [stylelint](https://github.com/stylelint/stylelint) from 14.7.1 to 14.8.2.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/14.7.1...14.8.2)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 09:49:44 +03:00
dependabot[bot] 63d4c509b7 Bump rollup from 2.70.2 to 2.72.1 (#36314)
Bumps [rollup](https://github.com/rollup/rollup) from 2.70.2 to 2.72.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.70.2...v2.72.1)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-05-10 09:48:44 +03:00
dependabot[bot] 78e49f5127 Bump postcss from 8.4.12 to 8.4.13 (#36321)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.12 to 8.4.13.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.12...8.4.13)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-05-10 09:41:48 +03:00
dependabot[bot] 6ca83e81b0 Bump @babel/cli from 7.17.6 to 7.17.10 (#36265)
Bumps [@babel/cli](https://github.com/babel/babel/tree/HEAD/packages/babel-cli) from 7.17.6 to 7.17.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.10/packages/babel-cli)

---
updated-dependencies:
- dependency-name: "@babel/cli"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 09:36:18 +03:00
dependabot[bot] b2477d5c1e Bump autoprefixer from 10.4.4 to 10.4.7 (#36264)
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.4.4 to 10.4.7.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.4.4...10.4.7)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 09:35:36 +03:00
dependabot[bot] 6ac37c9bb2 Bump karma from 6.3.18 to 6.3.19 (#36227)
Bumps [karma](https://github.com/karma-runner/karma) from 6.3.18 to 6.3.19.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v6.3.18...v6.3.19)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 09:34:12 +03:00
dependabot[bot] 314a9dd949 Bump github/codeql-action from 1 to 2 (#36230)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1 to 2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v1...v2)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 09:33:45 +03:00
dependabot[bot] fb20700a90 Bump @rollup/plugin-commonjs from 21.1.0 to 22.0.0 (#36226)
Bumps [@rollup/plugin-commonjs](https://github.com/rollup/plugins/tree/HEAD/packages/commonjs) from 21.1.0 to 22.0.0.
- [Release notes](https://github.com/rollup/plugins/releases)
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/commonjs/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/commonjs-v22.0.0/packages/commonjs)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 09:33:19 +03:00
dependabot[bot] 224b02e6e7 Bump sass from 1.50.1 to 1.51.0 (#36225)
Bumps [sass](https://github.com/sass/dart-sass) from 1.50.1 to 1.51.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.50.1...1.51.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-05-10 09:32:35 +03:00
dependabot[bot] 68f5965f42 Bump @babel/preset-env from 7.16.11 to 7.17.10 (#36266)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.16.11 to 7.17.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.10/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 09:25:25 +03:00
Julien Déramond 4207544c0e Fix search with xs to md breakpoints 2022-05-08 20:08:03 -07:00
Mark Otto 619a65c55a Remove leftover abbr styles in Reboot for tooltips
/cc @GeoSot
2022-05-08 20:01:25 -07:00
GeoSot 4a682ab00a Toast: provide isShown method (#36272)
* feat(Toast): provide `isShown` method

* Update site/content/docs/5.1/components/toasts.md

Co-authored-by: Julien Déramond <julien.deramond@orange.com>

Co-authored-by: Julien Déramond <julien.deramond@orange.com>
2022-05-06 21:29:21 -07:00
GeoSot 92e6856235 Docs(Scrollspy): minor changes to be aligned with new version of javascript (#36260)
* Docs(Scrollspy): minor changes to be aligned with new version of javascript code

* first example: add proper root-margin
* 'nested nav' example: add more content to sections & enable smooth-scroll

* fix typo

* Changes after feedback

* Update examples and docs to streamline some things and improve how it works section

Co-authored-by: Mark Otto <markdotto@gmail.com>
2022-05-06 21:23:49 -07:00
GeoSot f02bdf7c52 docs: add proper markup on modal's page tooltips ands popovers 2022-05-06 20:44:06 -07:00
amirhossein-karimi f82b2ba20d Fix color-adjust with autoprefixer 10.4.6 (#36258)
Co-authored-by: Mark Otto <markd.otto@gmail.com>
2022-05-06 19:36:04 -07:00
Mark Otto 6b49d26b21 v5.2.0: Migrate to DocSearch 3 (#36176)
* Migrate to DocSearch v3

Fixes #33338

* initialize `siteDocsVersion` const after the proper check

* Update site/layouts/partials/stylesheet.html

Co-authored-by: GeoSot <geo.sotis@gmail.com>

* Update header.html

* code review changes

* Update search.js

* Fix contrast issue, tweak some styles

* Fix some navbar changes

* temporary safari fix for docsearch3

Co-authored-by: GeoSot <geo.sotis@gmail.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-05-06 16:56:43 -07:00
GeoSot d2497b0384 ref(Docs assets): Separate js assets 2022-05-05 21:42:14 -07:00
Mark Otto bca99232b8 Iterate on border utilities (#36239)
* Remove `--bs-border-opacity: 1` from `.border-*` utilities

We set `--bs-border-opacity: 1` globally at the `:root` level, so redeclaring it on every `.border-*` utility doesn't make much sense. I think we can drop this.

* Remove global border-opacity var, restore on .border-color classes, move .border-color utils down the list to fix some specificity issues

* Add some demos of border utils to the docs
2022-05-05 21:32:02 -07:00
Julien Déramond 5d9500bdfd Handle disabled focused tabs with tab JavaScript plugin (#36169)
* Handle disabled tabs

* Fix after feedback

* Update js/src/tab.js

Co-authored-by: GeoSot <geo.sotis@gmail.com>

* Update js/src/tab.js

Co-authored-by: GeoSot <geo.sotis@gmail.com>

* Commit suggestions via GitHub broke the thing

* Add some unit tests

* Remove temp doc modification

* Add tests for left arrow

* Add disabled tabs in JavaScript Behavior section

* Compact 4 tests to 2 tests

* Compact 4 tests to 2 tests

* Add 'disabled' attribute for all buttons

* Change the disabled pane position only for the vertical version

* Change ids for the confusing first example in JavaScript behavior

* Use disabled attribute instead of the class for buttons in tabs

Co-authored-by: GeoSot <geo.sotis@gmail.com>
2022-05-05 19:26:15 -07:00
louismaxime.piton cca801683d Fix proposal 2022-05-05 19:15:04 -07:00
Mark Otto 51535cd95a Improve version picker for new pages in v5.2.x 2022-04-30 12:55:27 -07:00
Mark Otto 2ba73d2c80 bundlewatch 2022-04-30 12:55:27 -07:00
Mark Otto a078b5e0b9 include in migration guide 2022-04-30 12:55:27 -07:00
Mark Otto 1ac2997cf6 Update badges, cards, and toasts to use new helpers 2022-04-30 12:55:27 -07:00
Mark Otto 8cd3c3e3bc Add new text-bg-color utilities 2022-04-30 12:55:27 -07:00
Julien Déramond ec41392717 Doc: remove role="group" from some split drop* buttons 2022-04-30 11:35:44 -07:00
Mark Otto 55be3c3fc2 Update new docs version picker to work on home and examples pages (#36245)
* Update new docs version picker to work on home and examples pages

* Add addd key to opacity page

* Add more added frontmatter

* Update picker to fix migration guide links, but still work for docs and examples
2022-04-30 10:53:54 -07:00
汪心禾 207ddbee49 Update path to @popperjs/core in parcel.md
-│   └── popper.js/
+│   └── @popperjs/
+|       └── core/
2022-04-30 10:41:18 -07:00
Mark Otto 7745730e41 Revert border-color change (#36238)
* Revert `border-color` change

* Add new border-color-translucent for when we want optional alpha-transparency in our border-color

Apply to drodpowns, modals, offcanvas, popovers, and toasts

* bundlewatch
2022-04-29 13:59:41 -07:00
Sam Magura ebb1f485d3 Document incompatibilities between Bootstrap JS and React/.etc (#36217)
* Document incompatibilities between Bootstrap JS and React/.etc

Closes #35665.

* Remove link to reactstrap

* Update javascript.md

Co-authored-by: Mark Otto <otto@github.com>
2022-04-29 13:38:30 -07:00
Mark Otto 544cf8df48 Add input-disabled-color Sass variable 2022-04-28 23:26:38 -07:00
Julien Déramond 54e0af0303 Clean up last $variable-prefix usages 2022-04-28 21:56:46 -07:00
Julien Déramond 3143824ea4 Doc: mention Popper instead of Popper.js 2022-04-28 18:37:01 -07:00
Julien Déramond a2edb2afb8 Doc: fix offset content for examples page 2022-04-28 18:32:22 -07:00
GeoSot 00d45b11e7 Docs: update documentation js examples, using es6 (#36203)
* Docs: update components documentation using es6

* Docs: update js blocks around docs, using es6

* Docs: update components documentation using es6

* Test linter
2022-04-26 09:38:41 -07:00
GeoSot 3edead4ffe EventHandler: change check method for custom events, avoiding regex 2022-04-25 19:52:27 -07:00
Mark Otto 9a614a7e1d Add .show class to offcanvas example, and disable it's normal behavior in our JS 2022-04-21 19:56:05 -07:00
GeoSot 554736834d Carousel: Fix not used option (ride), simplify cycle method (#35983)
* Fix not used option (`ride`)  (according to docs), continuing of #35753 a247fe9
* separate concept of  `programmatical cycle`  vs `maybe cycle after click` functionality
2022-04-21 22:42:17 +03:00
GeoSot 584600bda3 Manipulator: Add JSON parse support (#35077)
Support parsing JSON from each component's main element using the `data-bs-config` attribute.

The `bs-config` attribute will be reserved and omitted during `getDataAttributes` parsing.

With this commit, every component, will create its config object, using:

* defaults
* data-bs-config
* the rest of data attributes
* configuration object given during instance initialization

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: Mark Otto <markd.otto@gmail.com>
Co-authored-by: Mark Otto <markdotto@gmail.com>
2022-04-21 21:41:43 +03:00
Julien Déramond 01cffa6822 Doc: minor modifications in Scrollspy (#36195)
Doc: minor modifications in Scrollspy
2022-04-21 19:20:24 +03:00
Mark Otto fc87624a50 Rewrite Getting Started > Introduction page to be more guide-like (#36204)
* Rewrite Getting Started > Introduction page to be more guide-like

* Add tabs, mention offcanvas for navbar
2022-04-20 22:27:28 -07:00
louismaxime.piton 1dc59b0d4e Minor fixes 2022-04-20 12:35:26 -07:00
Metadavid 9ccee925fb Update _breakpoints.scss 2022-04-20 11:24:43 -07:00
Mohammed Alkebsi d6064264fe Update CODE_OF_CONDUCT.md
I fixed a grammatical mistake. The word "to making" in line 3 has been changed to "to make".
2022-04-19 13:10:03 -07:00
Mark Otto e089aef00f Refactor some docs examples CSS (#36194)
* Fix some more borders and margins

* Flex utilities docs: remove .bd-highlight class from snippets

* Explicit close target

* Reorder to keep base class up top

* Fix custom position example

* Tooltips: add code snippet, use scss-docs ref for custom tooltip

* Tweak text for pagination examples

* Modals: move custom styles to utilities

* Grid docs: Combine selectors and share coloring

* Refactor tons of little things
2022-04-19 11:21:43 -07:00
Julien Déramond 9ec51f4499 Realign Cheatsheet nav tabs example rendering with the examples in the doc 2022-04-19 10:51:52 +03:00
XhmikosR c1eab89238 Update devDependencies (#36193)
* @rollup/plugin-commonjs      ^21.0.3  →  ^21.1.0
* @rollup/plugin-node-resolve  ^13.2.0  →  ^13.2.1
* globby                       ^11.0.4  →  ^11.1.0
* hugo-bin                     ^0.84.0  →  ^0.85.3
* rollup                       ^2.70.1  →  ^2.70.2
* sass                         ^1.50.0  →  ^1.50.1
* stylelint                    ^14.6.1  →  ^14.7.1
2022-04-19 08:33:54 +03:00
Mark Otto 2aad1696f1 One more code snippet fix 2022-04-18 21:49:31 -07:00
Mark Otto 3362c8cf13 Do some CSS and Migration guide cleanup (#36191)
* Do some CSS and Migration guide cleanup

- More code snippet tweaks
- Fix some homepage hero bugs
- Do a cleanup on Migration guide content to highlight more changes and fix some issues from merge conflicts
2022-04-18 20:56:18 -07:00
Mark Otto 3990ff04a0 Fix spacing of code snippets 2022-04-18 18:19:01 -07:00
Toto 5602093c7b change .border-right to .border-end 2022-04-18 16:56:11 +03:00
Mark Otto 195440f2fb v5.2.0 design refresh, plus responsive offcanvas classes (#35736)
* Add responsive offcanvas classes

- Updates navbar-expand classes to de-dupe some styles—these shouldn't interfere now.
- Adds some JS to the offcanvas component to help with responsiveness

Co-Authored-By: GeoSot <geo.sotis@gmail.com>

* Redesign homepage, docs, and examples

Homepage:

- New Bootstrap purple navbar
- Redesigned masthead
- Rewrote and redesigned homepage content
- Replace Copy text with icons like Bootstrap Icons site across all ClipboardJS instances
- Fixed padding issues in site footer
- Match homepage button styles to examples page, use gap instead of tons of responsive margin utils

Docs:

- New navbar, no more subnav. Migrated search and version picker into the main navbar and refreshed the design of it all, including the responsive toggles.
- New sidebar navigation is always expanded, and now features Bootstrap Icons alongside section headings
- Sidebar navigation autoscrolls to active link for better usability
- Subnav and navbar padding issues ironed out
- Enhanced the version picker in anticipation of v5.2: we can now link right to the same page in the previous version.
- Redesign callouts to add more color to our pages
- Collapse table of contents on mobile
- Cleanup and redesign button styles with CSS variables
- Update design for subnav version dropdown
- Update highlight and example to be full-width until md
- Improve the Added In badges
- Turn the ToC into a well on mobile
- Redesign code snippets to better house two action buttons

Examples:

- Redesign Examples page layout
- Add new example for responsive offcanvases in navbars

* Convert offcanvas to CSS vars

* Feat: add resize handler to Offcanvas.js.

If we could use as default the `.offcanvas` class without modifiers, we then, could add a simplified selector
The selector itself, ignores the .offcanvas class as it doesn't have any responsive behavior
The `aria-modal` addon is to protect us, selection backdrop elements

* Separate examples code, Add some selectors, fix stackblitz btn

Co-authored-by: GeoSot <geo.sotis@gmail.com>
2022-04-17 22:17:50 -07:00
MelanieL 26ea6f1649 Fix containers page in docs to re-order list so it matches sections below it. 2022-04-16 22:37:11 -07:00
louismaxime.piton fa0adc979d Minor fixes 2022-04-16 10:06:13 -07:00
Julien Déramond fb21233098 Fix Chroma line highlight style 2022-04-14 23:40:32 -07:00
dependabot[bot] 7a8459641f Bump karma-jasmine from 4.0.2 to 5.0.0 (#36162)
Bumps [karma-jasmine](https://github.com/karma-runner/karma-jasmine) from 4.0.2 to 5.0.0.
- [Release notes](https://github.com/karma-runner/karma-jasmine/releases)
- [Changelog](https://github.com/karma-runner/karma-jasmine/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma-jasmine/compare/v4.0.2...v5.0.0)

---
updated-dependencies:
- dependency-name: karma-jasmine
  dependency-type: direct:development
  update-type: version-update:semver-major
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-04-14 08:44:15 +03:00
Julien Déramond d059c1d5ba Doc: Uniformization of nav tabs content panes (#36163)
* Doc: Uniformization of nav tabs content panes

* Fix after review
2022-04-13 14:56:29 -07:00
GeoSot ece1601227 Revamp Scrollspy using Intersection observer (#33421)
* Revamp scrollspy to use IntersectionObserver

* Add smooth scroll support

* Update scrollspy.js/md

* move functionality to method

* Update scrollspy.js

* Add SmoothScroll to docs example

* Refactor Using `Maps` and smaller methods

* Update scrollspy.md/js

* Update scrollspy.spec.js

* Support backwards compatibility

* minor optimizations

* Merge activation functionality

* Update scrollspy.md

* Update scrollspy.js

* Rewording some of the documentation changes

* Update scrollspy.js

* Update scrollspy.md

* tweaking calculation functionality & drop text that suggests, to deactivate target when wrapper is not visible

* tweak calculation

* Fix lint

* Support scrollspy in body & tests

* change doc example to a more valid solution

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: Patrick H. Lauke <redux@splintered.co.uk>
2022-04-13 10:29:13 -07:00
GeoSot cfd2f3f778 Update dropdown.js
minor refactoring
2022-04-13 08:41:03 -07:00
dependabot[bot] 87da34014a Bump karma from 6.3.17 to 6.3.18 (#36161)
Bumps [karma](https://github.com/karma-runner/karma) from 6.3.17 to 6.3.18.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v6.3.17...v6.3.18)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-13 09:06:08 +03:00
Anthony Perez 1fed10dfb1 Update parcel.md
Following the Parcel v1 installation guide seems to install the latest version of Parcel (v2), which makes several instructions in this guide throw errors. Therefore, I have updated the guide to work with version 2 of Parcel.

Change Details:
1) Update the URL to point to the latest doc pages.
2) Use the `type="module"` HTML attribute to reference a module [migration](https://parceljs.org/getting-started/migration/#code-changes)
3) The `--out-dir <dir>` CLI parameter has been changed to `--dist-dir <dir>` [CLI](https://parceljs.org/features/cli/#parameters)
4)  For a reason I'm unsure of, `--experimental-scope-hoisting` throws the following error: `error: unknown option '--experimental-scope-hoisting'`, so I removed it to get the build to work.
2022-04-12 21:14:54 -07:00
Ryan Buckley 74be17edef Add black to colors map 2022-04-12 20:49:36 -07:00
Julien Déramond 7ff974b4ce Fix space between popover's arrow and triggering element (#35976)
* Fix margin between popover arrow and triggering element

* Oups-use .25 increment for bundlewatch

Co-authored-by: Mark Otto <markd.otto@gmail.com>
2022-04-12 18:53:17 -07:00
louismaxime.piton 3984ebb407 Fix proposal 2022-04-12 18:36:50 -07:00
louismaxime.piton 36e75f6355 Changing the CSS var management 2022-04-12 18:25:04 -07:00
GeoSot 8aaeb3cb6b Remove tooltip and popover styling as it is handled by Popper (#34627)
* Remove not needed css form tooltip & popover as it is made by popper
Remove tooltip margin variable, as popper needs margin to be zero

* Remove popover left/top initializers as they are handled by popper

* nullify `margin` variable and add deprecation message

* Document change in migration guide

* Update _variables.scss

Co-authored-by: Mark Otto <markdotto@gmail.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-04-12 18:16:18 -07:00
Anton 33992b7d5b Change second example dropdown form (#36137)
To check cases as #36135
2022-04-12 18:08:12 +03:00
Tiger Oakes fe257823ec Use Babel and ES6 in docs JS files (#31607)
* Pass docs js through Babel

* Use ES6 in docs js

* Only run babel on src files

* Allow babel in Hugo

* Update scripts.html

* Inherit from the root .eslintrc.json

* Use `Array.from`

* Drop Babel from docs

* Prefer template

* replace IIFE with arrow functions

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: GeoSot <geo.sotis@gmail.com>
2022-04-12 18:07:25 +03:00
dependabot[bot] f6cb4b64b5 Bump @rollup/plugin-node-resolve from 13.1.3 to 13.2.0 (#36153)
Bumps [@rollup/plugin-node-resolve](https://github.com/rollup/plugins/tree/HEAD/packages/node-resolve) from 13.1.3 to 13.2.0.
- [Release notes](https://github.com/rollup/plugins/releases)
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/node-resolve/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/node-resolve-v13.2.0/packages/node-resolve)

---
updated-dependencies:
- dependency-name: "@rollup/plugin-node-resolve"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-12 17:16:39 +03:00
dependabot[bot] f7312f7f3a Bump eslint from 8.12.0 to 8.13.0 (#36154)
Bumps [eslint](https://github.com/eslint/eslint) from 8.12.0 to 8.13.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.12.0...v8.13.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-12 17:16:18 +03:00
Mark Otto e206a6021b Update docs syntax colors head of dark mode (#35984)
* update syntax colors in preparation for dark mode changes

* Improve color contrast
2022-04-11 18:43:18 -07:00
Julien Déramond a58d894a5b Improve use of CSS vars in Toasts 2022-04-11 15:36:10 -07:00
Julien Déramond 10f2830805 Add CSS vars for accordions (#36148)
* Add CSS vars for accordions

* Fix Bundlewatch
2022-04-11 15:33:18 -07:00
Julien Déramond 3c78f772d5 Doc: fix modals and navs CSS vars description 2022-04-11 09:46:20 -07:00
XhmikosR 7648848e04 Update devDependencies (#36120)
* Update devDependencies

* @babel/core                ^7.17.8  →  ^7.17.9
* @popperjs/core             ^2.11.4  →  ^2.11.5
* clean-css-cli               ^5.5.2  →   ^5.6.0
* eslint-plugin-import       ^2.25.4  →  ^2.26.0
* find-unused-sass-variables  ^4.0.3  →   ^4.0.4
* karma-rollup-preprocessor   ^7.0.8  →   ^7.0.7
* sass                      ^1.49.11  →  ^1.50.0
* stylelint                   14.2.0  →  ^14.6.1

* Fix currentcolor case
2022-04-08 09:17:00 +03:00
Mark Otto dab026fc2b Revert border-color utilities to use the CSS property instead of the variable 2022-04-07 09:37:04 -07:00
Julien Déramond 5b31463e35 Doc: Reorder alphabetically lists of components 2022-04-06 16:48:08 -07:00
GeoSot 135b9cdff2 Revamp tabs & follow ARIA 1.1 practices (#33079)
* Tab: Revamp tab.js & add support Aria features

* Tab: Add tab support, just to keep backwards compatibility. Better to remove it on v6

* Revert "Tab: Add tab support, just to keep backwards compatibility. Better to remove it on v6"

* Support arrow down/up functionality

* add prevent default to avoid scrolling the page during up/down keys handling

* remove panel tabindex handling

* Expand documentation text for JS plugin

* Rearrange new docs to specifically call out a11y

* properly place section

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: Patrick H. Lauke <redux@splintered.co.uk>
Co-authored-by: Mark Otto <markdotto@gmail.com>
2022-04-06 16:36:08 -07:00
louismaxime.piton 238afd94b3 New CSS var 2022-04-06 13:27:56 -07:00
Mark Otto 0323fe99d2 Fix for missing CSS variables on .navbar-nav (#36105)
* Fix for missing CSS variables on .navbar-nav

* Document new CSS vars on .navbar-nav
2022-04-06 13:08:07 -07:00
Neeraj Kumar Das a7153567e1 Bring back webkit calendar picker indicator for datalists (#35406)
* Bring back webkit calendar picker indicator for datalists

* Replace webkit datalist indicator with Bootstrap Icons

* Use default datalist icons on date or time inputs in Chrome
Remove the dropdown arrow from text type inputs

* Bundlewatch

Co-authored-by: Mark Otto <markdotto@gmail.com>
2022-04-06 10:37:54 -07:00
dependabot[bot] f948974ca3 Bump @babel/core from 7.17.7 to 7.17.8 (#36053)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.17.7 to 7.17.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.8/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-05 18:26:22 +03:00
dependabot[bot] d70f3afd4a Bump postcss from 8.4.8 to 8.4.12 (#36056)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.8 to 8.4.12.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.8...8.4.12)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-05 18:25:55 +03:00
dependabot[bot] a787f3c2ac Bump eslint-plugin-unicorn from 41.0.0 to 42.0.0 (#36117)
Bumps [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) from 41.0.0 to 42.0.0.
- [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases)
- [Commits](https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v41.0.0...v42.0.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-05 18:23:30 +03:00
dependabot[bot] 8b17ac6821 Bump autoprefixer from 10.4.2 to 10.4.4 (#36057)
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.4.2 to 10.4.4.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.4.2...10.4.4)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-05 18:22:56 +03:00
dependabot[bot] 51463f3889 Bump hugo-bin from 0.82.2 to 0.84.0 (#36076)
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.82.2 to 0.84.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.82.2...v0.84.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-05 18:19:14 +03:00
dependabot[bot] bd420d570c Bump @rollup/plugin-commonjs from 21.0.2 to 21.0.3 (#36078)
Bumps [@rollup/plugin-commonjs](https://github.com/rollup/plugins/tree/HEAD/packages/commonjs) from 21.0.2 to 21.0.3.
- [Release notes](https://github.com/rollup/plugins/releases)
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/commonjs/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/commonjs-v21.0.3/packages/commonjs)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-05 18:18:20 +03:00
dependabot[bot] 4eeaee78aa Bump eslint from 8.11.0 to 8.12.0 (#36079)
Bumps [eslint](https://github.com/eslint/eslint) from 8.11.0 to 8.12.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.11.0...v8.12.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-05 18:18:02 +03:00
dependabot[bot] aa4e707f03 Bump sass from 1.49.9 to 1.49.11 (#36118)
Bumps [sass](https://github.com/sass/dart-sass) from 1.49.9 to 1.49.11.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.49.9...1.49.11)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-05 18:17:45 +03:00
dependabot[bot] 384075582b Bump minimist from 1.2.5 to 1.2.6 (#36119)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-05 18:15:19 +03:00
dependabot[bot] 159dc4b1fb Bump karma-jasmine from 4.0.1 to 4.0.2 (#36116)
Bumps [karma-jasmine](https://github.com/karma-runner/karma-jasmine) from 4.0.1 to 4.0.2.
- [Release notes](https://github.com/karma-runner/karma-jasmine/releases)
- [Changelog](https://github.com/karma-runner/karma-jasmine/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma-jasmine/compare/v4.0.1...v4.0.2)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-05 18:10:28 +03:00
Louis-Maxime Piton 0ceaad3ab4 Use new CSS vars (#36098)
* Proposal to use new CSS var when it could be used.

* Bundlewatch

Co-authored-by: Mark Otto <markdotto@gmail.com>
2022-04-04 13:51:21 -07:00
Mathias Brodala 55c541f5bc Move "Navbar" before "Navs & Tabs" in sidebar
This ensures consistent alphabetic ordering.
2022-04-04 10:43:17 -07:00
louismaxime.piton f789c2cc92 Adding CSS var to list-group-item-action 2022-04-04 10:37:42 -07:00
Julien Déramond 2fccd1c1e4 Fix CSpell by adding 'Analyser' 2022-04-04 10:29:17 -07:00
louismaxime.piton 273ebad151 Changing to btnTitle and btnEdit 2022-04-01 11:26:32 +03:00
louismaxime.piton 00d028e646 Adding @include everytime it's not the case 2022-03-31 14:41:02 -07:00
louismaxime.piton 8006203e47 Doc fixes 2022-03-31 14:27:09 -07:00
Julien Déramond 53fe10716a Reuse all breadcrumb CSS vars available 2022-03-31 14:16:36 -07:00
Julien Déramond d0714817f8 Fix duplicate border radius CSS var definition 2022-03-31 14:12:14 -07:00
Julien Déramond 16711ff5b1 Fix duplicate .rounded-* and .fw-semibold defs in examples 2022-03-31 14:00:10 -07:00
Julien Déramond bef4f3b6c6 Fix StackBlitz edit feature by selecting the closest example 2022-03-31 14:04:57 +03:00
Julien Déramond 6b4bdcc657 Fix typo for StackBlitz edit button's tooltip (#36073) 2022-03-29 18:16:11 +03:00
Mark Otto e342142b61 Train PR: CSS variables for accordion, cards, navs, and modals (#36071)
* Convert accordion to CSS vars

* Update accordion.md

* Convert navs to CSS variables

* Split up CSS vars

* bundlewatch

* fix vars

* Convert cards to CSS vars

* Convert modals to CSS variables

* Bundlewatch

Co-authored-by: Geremia Taglialatela <tagliala.dev@gmail.com>
2022-03-28 15:05:37 -07:00
Julien Déramond 7f35bc5b65 Define Pagination font size CSS var (#35917)
Co-authored-by: Mark Otto <markd.otto@gmail.com>
2022-03-24 21:14:42 -07:00
Mark Otto 0eb808015f Convert list group to CSS variables (#35862)
* Convert list-group to CSS vars

* bundlewatch
2022-03-22 10:02:12 -07:00
Mark Otto 9e73b6a13c v5.2.0 migration updates (#36038) 2022-03-19 11:58:22 -07:00
Ryan Buckley fbf64406df Fix migration guide typos (#36040)
* Correct font-weight semibold utility class name

* Tiny sentence correction
2022-03-19 11:18:45 -07:00
louismaxime.piton 0e5cd69c02 No propagating escape event in an open dropdown. 2022-03-19 01:43:43 +02:00
Mark Otto 88bd287b27 Convert progress bars to CSS variables (#35962)
* Convert progress bars to CSS variables

* bundlewatch
2022-03-18 09:02:03 -07:00
Mark Otto b165f35f78 Add another list-group snippet example 2022-03-17 14:52:29 -07:00
Mark Otto a4841afa26 Convert toasts to CSS variables (#35961)
* Convert toasts to CSS variables

* bundlewatch
2022-03-17 14:48:36 -07:00
Mark Otto 71582eabff Convert spinners to CSS variables (#35960)
* Convert spinners to CSS variables

* bundlewatch
2022-03-17 13:49:57 -07:00
Mark Otto 8182fd9430 Revert #35759, fixes #35869 2022-03-17 13:39:17 -07:00
Mark Otto 11751c613f Fixes #36015: Fix pagination link border-radius if statement 2022-03-17 13:39:17 -07:00
Mark Otto 91f6a01c69 Fixes #36016: Update .dropdown-item padding 2022-03-17 13:39:17 -07:00
XhmikosR 33827d24a4 Update devDependencies (#36024)
* @babel/core                ^7.17.5  →  ^7.17.7
* @popperjs/core             ^2.11.2  →  ^2.11.4
* eslint                     ^8.10.0  →  ^8.11.0
* hugo-bin                   ^0.81.3  →  ^0.82.2
* karma-chrome-launcher       ^3.1.0  →   ^3.1.1
* lockfile-lint               ^4.6.2  →   ^4.7.4
* rollup                     ^2.70.0  →  ^2.70.1
* terser                     ^5.12.0  →  ^5.12.1
2022-03-15 10:24:21 +02:00
Mark Otto a9a89debc7 Rewrite docs tables in Markdown with table shortcode (#31337)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: GeoSot <geo.sotis@gmail.com>
2022-03-14 09:38:04 +02:00
Sabrus 8fe82c7176 Remove duplicate entry in migration.md 2022-03-13 18:37:32 -07:00
Mark Otto 70cb00c349 Add v5.1.0 to migration guide, update v5.2.0 additions 2022-03-13 10:16:42 -07:00
Mark Otto acf6ea74a7 Add additional root variables, rename $variable-prefix to $prefix (#35981)
* Add additional root variables, rename $variable-prefix to $prefix

- Adds new root CSS variables for border-radius, border-width, border-color, and border-style
- Adds new root CSS variables for heading-color, link-colors, code color, and highlight color
- Replaces most instances of Sass variables (for border-radius, border-color, border-style, and border-width) for CSS variables inside _variables.scss
- Updates $mark-padding to be an even pixel number
- Renames $variable-prefix to $prefix throughout

* Bundlewatch
2022-03-13 10:13:09 -07:00
Mark Otto 7c966f5848 Convert added in badges to shortcode (#36007) 2022-03-12 07:27:58 +02:00
Mark Otto 1936e0c5ea Bundlewatch 2022-03-11 12:59:55 -08:00
Mark Otto e567d511d4 Convert breadcrumb to CSS variables 2022-03-11 12:59:55 -08:00
Mark Otto d16088d5d1 Redesign the "Added in" badges in the docs (#35980)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-03-11 21:29:52 +02:00
A Web Artisan ce655ee6f2 Allow to set active and disabled class also to .page-link (#35804)
Sometimes we can set `.active` class only to link tag and not parent.
Since active status style is applied only to `.page-link` and not `.page-item`, would also make more sense to just add the active class to `.page-link` itself.

The other way to set `.active` class to `.page-item` still remain, so there is not BC.

Allow to set also `.disabled` class to `.page-link`

Co-authored-by: Gaël Poupard <ffoodd@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: Mark Otto <markd.otto@gmail.com>
2022-03-11 21:25:41 +02:00
Mark Otto 58ac9a9a5c Set opacity on dropdown-divider for now 2022-03-11 09:46:03 -08:00
Mark Otto e72a090aee Updates -color to use rgba() 2022-03-11 09:15:33 -08:00
XhmikosR ea7ff1eab9 Update .cspell.json 2022-03-11 09:10:37 -08:00
Mark Otto c73480c636 Adjust border-radius values and add some new utilities
- Updates global border-radius values for a more modern appearance
- New .fw-semibold
- New .rounded-4 and .rounded-5
2022-03-11 09:10:37 -08:00
Mark Otto 63145c8bc6 Fix some instances of lazy Sass math when multiplying new CSS var based border-width 2022-03-11 09:04:13 -08:00
GeoSot 05c6e7dd66 Fix docs error after #35644 (#36002) 2022-03-11 17:56:57 +02:00
Julien Déramond 5bdd5e02a4 docs: add missing .dropup in dropup centered example (#35948) 2022-03-11 16:04:41 +02:00
XhmikosR d21a51a2ea Ignore warning for .navbar-light deprecation (#35995) 2022-03-10 20:32:48 +02:00
GeoSot 6e904341c9 Carousel: change class check as it can only exist if carousel is sliding
Also, fix the corresponding test
2022-03-10 15:22:14 +02:00
GeoSot 3673933fe7 Carousel: rename private property 2022-03-10 15:22:14 +02:00
GeoSot ec0e1c220e Carousel: add comment for future fixes 2022-03-10 15:22:14 +02:00
GeoSot 88da704eed Carousel: omit redundant checks as we are always transforming the right values 2022-03-10 15:22:14 +02:00
GeoSot 28f150d720 Carousel: omit config merging in jQueryInterface after we create the instance
This is already done inside `getOrCreateInstance` method
2022-03-10 15:22:14 +02:00
Ihor Sychevskyi 3ef6a435be update google material icons link (#35942) 2022-03-09 17:36:50 +02:00
Puru Vijay 645f955845 docs: add a StackBlitz "Try It" button in code examples (#35644)
Co-authored-by: GeoSot <geo.sotis@gmail.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-03-09 17:32:58 +02:00
GeoSot 7e5a8016ba Carousel: return early in _slide method 2022-03-09 17:25:47 +02:00
GeoSot d4e87d28cd Carousel: small refactoring, remove unnecessary checks 2022-03-09 17:25:47 +02:00
GeoSot dd93551914 Carousel: refactor using inline function and move variables to the proper place 2022-03-09 17:25:47 +02:00
GeoSot 699402bee5 Carousel: refactor _slide method te accept only order as first argument 2022-03-09 17:25:47 +02:00
GeoSot fcc2c80976 Carousel: add a getItems helper 2022-03-09 17:25:47 +02:00
GeoSot b7cce49dbc Carousel: use combined selector and drop variable used once 2022-03-09 17:25:47 +02:00
GeoSot a8142497c7 Carousel: reorder variables and refactor method to use it inline 2022-03-09 17:25:47 +02:00
GeoSot e77ae50311 Carousel: cleanup jQueryInterface
Drop chained else ifs and unused variable.

Since we were checking for `typeof config === 'string'` in both places, action was never `_config.slide`.
2022-03-09 17:25:47 +02:00
dependabot[bot] 21fa2cfc12 Bump rollup from 2.68.0 to 2.70.0 (#35972)
Bumps [rollup](https://github.com/rollup/rollup) from 2.68.0 to 2.70.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.68.0...v2.70.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-03-09 17:21:34 +02:00
dependabot[bot] 298cb9194b Bump postcss from 8.4.7 to 8.4.8 (#35971)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.7 to 8.4.8.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.7...8.4.8)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-03-09 17:14:22 +02:00
dependabot[bot] 55fb59c074 Bump hugo-bin from 0.81.0 to 0.81.3 (#35974)
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.81.0 to 0.81.3.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.81.0...v0.81.3)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-03-09 16:55:43 +02:00
Mark Otto 3a57da425b bundlewatch 2022-03-08 14:53:53 -08:00
Mark Otto 488e426141 Add migration guide mention 2022-03-08 14:53:53 -08:00
Mark Otto 2e75ec3c41 Convert popovers to CSS variables 2022-03-08 14:53:53 -08:00
Mark Otto 91312486b2 Deprecate the tooltip-arrow-bg color since we're using CSS variables to set tooltip colors 2022-03-08 14:53:53 -08:00
Mark Otto a68e1af2d5 Document new CSS vars in tooltip docs 2022-03-08 14:53:53 -08:00
Mark Otto fdcbbe3d92 Convert tooltips to CSS vars 2022-03-08 14:53:53 -08:00
louismaxime.piton 6c40476af9 Fix dropdowns 2022-03-08 14:37:44 -08:00
Julien Déramond 2d11c1c28a Add missing root border opacity CSS var 2022-03-07 16:24:53 -08:00
AlexKoala e84aadb36c docs: Update Japanese translation 2022-03-06 13:22:55 -08:00
cccabinet a9b3445060 fix:border-width 2022-03-02 15:19:21 -08:00
dependabot[bot] c766904aa2 Bump actions/checkout from 2 to 3 (#35933)
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-03-02 16:51:46 +02:00
Louis-Maxime Piton 050b69b9a2 Remove unneeded classes from toasts docs (#35931) 2022-03-02 16:47:03 +02:00
Jann Westermann 8d7358f231 Add static backdrop to offcanvas (#35832)
* Add static backdrop option,  to offcanvas
* Trigger prevented event on esc with keyboard=false
* Change offcanvas doc , moving backdrop examples to examples section
2022-03-02 02:20:37 +02:00
Gaël Poupard d788d2efac docs(example): fix RTL carousel example 2022-03-01 13:01:00 -08:00
Mark Otto 9030f57db7 Split CSS vars for padding values (#35921)
* Split CSS vars for padding values

Make these few components consistent with where we're heading with other components. Had to add some new Sass variables to handle the dropdown-header element, but not a huge deal. This ensures we can drop the combined variable in v6 when we're ready.

* Update scss/_dropdown.scss

Co-authored-by: Julien Déramond <julien.deramond@orange.com>

* Deprecate dropdown-header-padding var

Co-authored-by: Gaël Poupard <ffoodd@users.noreply.github.com>
Co-authored-by: Julien Déramond <julien.deramond@orange.com>
2022-03-01 12:52:00 -08:00
dependabot[bot] b59b1080e1 Bump terser from 5.11.0 to 5.12.0 (#35927)
Bumps [terser](https://github.com/terser/terser) from 5.11.0 to 5.12.0.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.11.0...v5.12.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-03-01 18:34:44 +02:00
GeoSot 63f30ac8ee Modal: refactor listeners to reduce some code noise (#35902) 2022-03-01 17:08:12 +02:00
GeoSot c644f09d88 Carousel: simplify carousel items selection
We already know that carousel's parent is the carousel element, so we can use it explicitly
2022-03-01 16:56:33 +02:00
GeoSot eb8d5b43ce Carousel: move carouselInterface inside jqueryInterface 2022-03-01 16:56:33 +02:00
GeoSot 13042d25ca Carousel: move logic of dataApiClickHandler 2022-03-01 16:56:33 +02:00
GeoSot 631cec4f70 Carousel: refactor dataApiKeyHandler to avoid use of carouselInterface 2022-03-01 16:56:33 +02:00
dependabot[bot] 7d9423d21c Bump find-unused-sass-variables from 4.0.2 to 4.0.3 (#35928)
Bumps [find-unused-sass-variables](https://github.com/XhmikosR/find-unused-sass-variables) from 4.0.2 to 4.0.3.
- [Release notes](https://github.com/XhmikosR/find-unused-sass-variables/releases)
- [Commits](https://github.com/XhmikosR/find-unused-sass-variables/compare/v4.0.2...v4.0.3)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-01 16:47:19 +02:00
XhmikosR c864bdc7cb Revert "README: About release planning" (#35923)
This reverts commit da9c007139.
2022-03-01 16:09:51 +02:00
GeoSot bb7664db0a Dropdown: Simplify dataKeyApiHandler (#35870)
* Dropdown.js: Remove duplicated check for `Not Shown` instance

* Dropdown.js: Rearrange `dataApiKeydownHandler` checks

* Dropdown: do some fixup inside `dataApiKeydownHandler`

* Update dropdown.js

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-03-01 15:53:07 +02:00
dependabot[bot] 5051bbb82d Bump actions/setup-node from 2 to 3 (#35925)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 2 to 3.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-01 15:19:34 +02:00
XhmikosR b7b376cec1 Update devDependencies (#35922)
* @rollup/plugin-babel         ^5.3.0  →   ^5.3.1
* @rollup/plugin-commonjs     ^21.0.1  →  ^21.0.2
* @rollup/plugin-replace       ^3.1.0  →   ^4.0.0
* eslint                       ^8.9.0  →  ^8.10.0
* find-unused-sass-variables   ^4.0.1  →   ^4.0.2
* hugo-bin                    ^0.80.2  →  ^0.81.0
* karma                       ^6.3.16  →  ^6.3.17
* postcss                      ^8.4.6  →   ^8.4.7
* sass                        ^1.49.8  →  ^1.49.9
2022-03-01 10:37:05 +02:00
Gaël Poupard 954f6e54d3 fix(forms): color input with validation icon 2022-02-28 19:34:34 -08:00
Gaël Poupard a9d1ab2d3f fix(tooltips|popovers): RTL arrows 2022-02-28 19:27:47 -08:00
Julien Déramond abe9d310ba Site assets: .bd-bg-purple-bright.bd-bg-violet and drop unused .bd-text-purple-bright 2022-02-28 15:17:37 -08:00
louismaxime.piton 76d9cd4e7a . 2022-02-28 14:50:37 -08:00
louismaxime.piton 6e2b21c200 Use the new CSS variable in dropdown menu. 2022-02-28 14:50:37 -08:00
Mark Otto 7a74f2c302 add tests 2022-02-28 14:02:51 -08:00
Mark Otto c0f30366ac Add centered dropdown and dropup options 2022-02-28 14:02:51 -08:00
Mark Otto efc5914667 Replace instances of Sass vars for CSS variable versions of border-color and border-width 2022-02-28 11:40:32 -08:00
Mark Otto c1ab3eccd7 bump bundlewatch 2022-02-28 11:40:32 -08:00
Mark Otto de0dfca9a1 Convert border utilities to CSS variables
- Updates the utilities mixin to check for specific CSS variable names via `css-variable`
- Bonus fix: we now prevent local variables for `0` value utilities (e.g., `.border-top-0` no longer sets `--bs-border-opacity: 1`
- Adds new `.border-opacity-*` classes
- Adds new root variables: `--bs-border-color`, `--bs-border-style`, `--bs-border-width`
- Documents the new variable changes
2022-02-28 11:40:32 -08:00
Mark Otto e35980d009 Update migration.md 2022-02-28 11:21:53 -08:00
Mark Otto 12d49f19b0 Remove thicker border on table thead elements
Use the new .table-group-divider to create your own dividers as desired. Would love to find a better way to handle border-color for this, but for now, this is at least opt-in.

I've applied it by default in another way for our docs tables to help differentiate our content vs our components.

Fixes #35342
2022-02-28 11:21:53 -08:00
Mark Otto 0cf36335d6 Update release-drafter.yml 2022-02-26 15:00:54 -08:00
Arhell f988381365 update ionic link 2022-02-26 10:45:12 -08:00
Erik Faye-Lund 4ee1465acf Prefer Linux-specific fonts over Arial
Some Linux distributions (like Debian) have fontconfig aliases for Arial
that picks specific fonts. But such generic aliases might be less
desirable than the known-good Linux specific fonts.

This fixes a problem on my setup where Liberation Sans is aliased as
Arial, even when Noto Sans is available. Liberation Sans doesn't support
a weight of 500, so we end up rendering headers at the normal weight of
400, which makes them stand out less. Reordering the Arial fallback
makes us instead pick Noto Sans over Lieration Sans, which does support
a weight of 500, and makes headers stand out again.

While we're at it, fixup the reboot documentation to match, and change
the comment about Helvetica Neue; that's not a "Basic web-fallback" font,
it's the UI font on older iOS and macOS versions.
2022-02-25 18:16:26 -08:00
maks d74870a749 move theme-colors (vars+map) after color tints definitions
In this way we can use color tints other than grays in our custom theme, w/o having to extend it later (e.g `$primary: $indigo-600;` ). This could be done in the project variables file, but i believe most developers just include a full local copy of  `scss/_variables.scss` before the the original `default` file and change the values the need (maybe also removing the !default flag) so that it's easier to track changes and custom values during upgrades.
2022-02-25 14:59:15 -08:00
Paweł Kuna fd9db1758b docs: add Tabler Icons to list of icon packs (#35497)
* Add Tabler Icons to list of icons

* Update site/data/icons.yml

Co-authored-by: Mark Otto <otto@github.com>
Co-authored-by: Mark Otto <markd.otto@gmail.com>
2022-02-25 13:38:23 -08:00
Julien Déramond d0b8114462 Remove border of disabled calendar buttons in Dropdowns example 2022-02-25 12:37:27 -08:00
Дилян Палаузов e4b62a920a src/tooltip.js Optimization
Util.findShadowRoot() returns either null or an object.

It cannot return falsy, which allows this optimization.
2022-02-25 09:01:49 -08:00
Mark Otto 28d9aaf670 Add z-index for .toast-container (#35859)
* Add z-index for .toast-container

- Adds positioning and z-index to toast container so that it has a system-declared layer in relation to other components.
- Updates docs to use the class better

Fixes $34028

* Remove unnecessary z-index from docs examples
2022-02-25 08:49:02 -08:00
Julien Déramond 2c5a16ff8b Use all dropdowns CSS variables 2022-02-25 08:43:47 -08:00
Mark Otto 1c5ec4c310 Separate override for hr's in component examples 2022-02-25 08:37:38 -08:00
Mark Otto db61cf3d6a Base .text-muted on body color 2022-02-24 13:24:34 -08:00
Richard Giraud 3aaaa01ffa media-breakpoint-only now passes $breakpoints int breakpoint-max. Fixes #35084. 2022-02-24 13:18:16 -08:00
Mark Otto f1a89bf0d5 Mention form height change in migration guide 2022-02-24 13:14:38 -08:00
Julien Déramond 333d89e498 Docs: replace CSS by utilities in examples (#35699)
* Drop .opacity-50 and .opacity-75 redefinition in examples

* Drop unused .card-img-right from blog example CSS files

* Use line-height utilities when possible

* Use rounded-* utilities in examples

* Replace .nav-underline by .nav-scroller and use it in examples.html default

* Use .mb-1 for .blog-post-title

* Remove unused CSS rule and use .fw-* utilities for carousels examples

* Use utilities for cheatsheet examples

* Extract some CSS to utilities for .nav-masthead .nav-link in cover example

* Dashboard group of minor modifications

* Dropdowns example: refactoring

* Dropdowns example refactoring: fix linting by removing selector by id

* Features example refactoring

* Headers example refactoring

* List groups example refactoring

* Sidebars example refactoring

* Sign-in example refactoring

* Starter template refactoring

* Fix RTL examples

Co-authored-by: Mark Otto <markd.otto@gmail.com>
2022-02-23 10:31:18 -08:00
Julien Déramond 36765912c6 Replace non-existent --bs-btn-padding by --bs-btn-padding-{x|y} 2022-02-23 10:24:50 -08:00
chefarbeiter a381ee320b Fix modal doc 2022-02-22 15:12:20 +02:00
Gaël Poupard 37f3977e6d Rely on border-width for <hr> size (#35491)
* fix(reboot): revert hr styles to v4 implementation

* docs(cheatsheet): add a hr example

* fix(reboot): currentColor is the initial border-color value

* Document hr element in Reboot docs

* Update migration guide

* Update scss/_variables.scss

Co-authored-by: Mark Otto <markd.otto@gmail.com>
2022-02-22 10:02:47 +02:00
xrkffgg 0804c0043f CI: add issues-helper (#35846) 2022-02-22 09:55:29 +02:00
Christian Oliff 9ac8e80660 remove opacity utlitilies from example CSS (#35877)
These are included in Bootstrap itself now

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-02-22 09:39:57 +02:00
XhmikosR 3a9b0b8b6f Update devDependencies and pin karma-rollup-preprocessor (#35868)
* @babel/cli                 ^7.17.0  →  ^7.17.6
* @babel/core                ^7.17.2  →  ^7.17.5
* eslint-plugin-unicorn      ^40.1.0  →  ^41.0.0
* rollup                     ^2.67.2  →  ^2.68.0
* sass                       ^1.49.7  →  ^1.49.8
* terser                     ^5.10.0  →  ^5.11.0
2022-02-22 09:35:36 +02:00
GeoSot cb8726d9e7 Dropdown: use a better selector to avoid triggering click if button is disabled (#35866) 2022-02-19 16:22:32 +02:00
GeoSot 353ad45b4b Dropdown: use a combined selector to filter foreign not shown instances iteration (#35766) 2022-02-19 16:16:51 +02:00
GeoSot 4b17868fb4 tests: revisit all tests using Promise.reject instead of throwing an error (#35765) 2022-02-19 16:08:16 +02:00
XhmikosR ae12d645ef Replace AnchorJS with a Hugo render hook (#32953)
* Replace AnchorJS with a Hugo render hook

* docs(anchors): improve aria-label on anchor links

* docs(anchors): show anchor link when ed

* docs(anchors): add hash in pseudo-element

Co-authored-by: Gaël Poupard <ffoodd@users.noreply.github.com>
2022-02-19 15:16:23 +02:00
GeoSot 407af8ac7f Make event name helper and use it on tooltip & popover to reduce dist sizes (#35856)
* feat: create eventName getter function in baseComponent

* refactor: use `eventName` getter on tooltip & popover
2022-02-19 15:10:47 +02:00
GeoSot 642d756eea Carousel: remove one more call to ActiveIndex 2022-02-19 14:52:36 +02:00
GeoSot d52f6c9de1 Carousel: change argument to _setActiveIndicatorElement, from element to index 2022-02-19 14:52:36 +02:00
GeoSot 928bdcadc5 Carousel: make direct triggering of slid event, instead of using a callback 2022-02-19 14:52:36 +02:00
GeoSot d97125475b Carousel: merge slide functionality, regardless of whether it is animated or not 2022-02-19 14:52:36 +02:00
GeoSot a247fe9b27 Carousel: simplify initialization on document load, using getOrCreateInstance 2022-02-19 14:52:36 +02:00
GeoSot ccba6a3589 Carousel: remove redundant config merge on dataApiClickHandler, as it is done by default in the constructor 2022-02-19 14:52:36 +02:00
Jann Westermann 546e34cf85 Apply list group numbering to all items (#35822) 2022-02-18 01:17:37 +02:00
Mark Otto f7f450ec59 Add null modal-footer-bg variable (#35858)
Fixes #35782
2022-02-18 01:14:18 +02:00
Louis-Maxime Piton d82602063a New CSS variable for Navbars (#35829)
* Adding a brand new CSS var

* Update scss/_variables.scss

Co-authored-by: Gaël Poupard <ffoodd@users.noreply.github.com>
2022-02-17 11:25:01 -08:00
Nudasoft 999bfaa036 Add !important property to colored links. (#35740)
* Add !important property to colored links.

* Apply suggestions from code review

Co-authored-by: Mark Otto <otto@github.com>
2022-02-17 11:20:44 -08:00
Alan Christian 5565c64bde code indentation in readme 2022-02-17 10:23:18 -08:00
Mark Otto 63f75bccd8 Rename dropdown-shadow to dropdown-box-shadow for consistency 2022-02-16 10:36:01 -08:00
Mark Otto 48a7160cf4 Convert pagination component to CSS variables (#35399)
* Convert pagination component to CSS variables

* Use RFS mixin

* Remove the useless fallback
2022-02-16 10:26:24 -08:00
Eugene Kopyov 2a09f10676 Fixed border radius var name and .show target 2022-02-16 08:48:54 -08:00
XhmikosR 42da2b9556 Update devDependencies (#35841)
* Update devDependencies

* @babel/core             ^7.17.0  →  ^7.17.2
* @rollup/plugin-replace   ^3.0.1  →   ^3.1.0
* eslint                   ^8.8.0  →   ^8.9.0
* eslint-config-xo        ^0.39.0  →  ^0.40.0
* hugo-bin                ^0.80.1  →  ^0.80.2
* karma                   ^6.3.15  →  ^6.3.16
* rollup                  ^2.67.1  →  ^2.67.2

* Fix new ESLint errors
2022-02-15 08:50:37 +02:00
Mark Otto d568e029da Convert dropdowns to CSS variables 2022-02-14 19:11:35 -08:00
Mark Otto 3e6265ac55 Rewrite custom docs buttons
- Use CSS variables wherever possible
- Rename purple-bright to violet for brevity, add CSS vars versions
- Rename download to accent
2022-02-14 19:00:59 -08:00
Mark Otto 85938bb2ed Tighten bundlewatch 2022-02-14 19:00:59 -08:00
Mark Otto ef9d8538a0 Convert .btn and mixins to use CSS variables 2022-02-14 19:00:59 -08:00
Mark Otto 918a86b425 Correct the horizontal padding on grid containers (#35825)
* Correct the horizontal padding on grid containers

* Don't halve the container-padding-x variable
2022-02-14 15:07:17 -08:00
vpakati a163ed76d4 Update reboot.md
Add the missing right parenthesis.
2022-02-14 15:03:05 -08:00
Julien Déramond daefd34693 Fix typo in Badges CSS variables description 2022-02-14 16:10:42 +02:00
Mark Otto 48807758af Fixes #32082
Remove sentence in docs that's no longer needed. Fixes #32082.
2022-02-11 10:06:15 -08:00
Mark Otto a7942190c7 Bump version callout 2022-02-10 19:51:23 -08:00
Mark Otto f2d33b2a1e Bump bundlewatch 2022-02-10 19:51:23 -08:00
Mark Otto 7e71fe7bae Convert .badge to CSS variables 2022-02-10 19:51:23 -08:00
Julien Déramond d3babf7d7f Remove remaining .navbar-light classes (#35814)
* Fix typo in CSS variables documentation

* Drop remaining .navbar-light classes
2022-02-09 21:12:08 +02:00
Fabián Karaben d19c635f16 Add Spanish translation
The translation of version 5 of Bootstrap is added, by the Esdocu project.
2022-02-08 17:14:29 -08:00
Anton 761c4ff235 Fix overriding styles of .list-group-item-action
~~~html
<style>
.list-group-item-action {color: blue;}
.list-group-item {color: red;}
</style>
<p class="list-group-item">red text!</p>
<p class="list-group-item list-group-item-action">still red text!</p>
~~~
because `.list-group-item` declared after `.list-group-item-action` (order in attribute `class` no effect)
2022-02-08 17:11:46 -08:00
Christopher Yeleighton da9c007139 README: About release planning 2022-02-08 17:03:45 -08:00
Sebastian Podjasek 0853778eba Support floating labels on .form-control-plaintext (#32840)
* Support floating labels on `.form-control-plaintext`

* Update floating-labels.md

* Apply suggestions from code review

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: Mark Otto <otto@github.com>
2022-02-08 12:38:29 -08:00
Mark Otto 4308b67e59 Add .form-check-reverse modifier class (#33606)
* Add .form-check-reverse modifier class

* Update checks-radios.md

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-02-08 12:33:39 -08:00
Mark Otto 71a211f2bd bundlewatch 2022-02-08 10:39:58 -08:00
Mark Otto 27a0f40dc8 Add deprecation notice for .navbar-light 2022-02-08 10:39:58 -08:00
Mark Otto c9cec89764 Convert navbar to CSS variables
Co-Authored-By: Gaël Poupard <ffoodd@users.noreply.github.com>
2022-02-08 10:39:58 -08:00
XhmikosR 8f11c52919 Update devDependencies (#35798)
* @babel/cli                  ^7.16.8  →  ^7.17.0
* @babel/core                ^7.16.12  →  ^7.17.0
* karma                       ^6.3.13  →  ^6.3.15
* karma-rollup-preprocessor    ^7.0.7  →   ^7.0.8
* postcss                      ^8.4.5  →   ^8.4.6
* rollup                      ^2.66.1  →  ^2.67.1
* sass                        ^1.49.4  →  ^1.49.7
2022-02-08 09:21:59 +02:00
Anton a805330f63 Optimize jQueryInterface in Collapse (#35689)
extracts config initialization from cycle
2022-02-07 10:50:26 +02:00
XhmikosR 77e02a07c7 package.json: add GitHub Sponsors and reorder properties (#35451) 2022-02-07 10:15:17 +02:00
GeoSot 96c67a7ff7 Fix empty content of tooltip after 'copy' action in docs (#35773)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-02-07 10:05:43 +02:00
The Fake Cake ff2472becc Set cursor: default on disabled .form-check-label (#35082)
Fixes #35056
2022-02-07 09:55:44 +02:00
Macinto5h d2986daa12 Add zebra striping for table columns
Co-Authored-By: Macallan Camara <44030647+Macinto5h@users.noreply.github.com>
Co-Authored-By: XhmikosR <xhmikosr@gmail.com>
2022-02-06 15:59:18 -08:00
Ty Mick 43a9216a7f Move gap utility API from "Flex" to "Spacing"
The `gap` utility is described on the [Spacing page][1] but is not
actually mentioned on the [Flex page][2] (apart from the [API
section][3]).

[1]: https://getbootstrap.com/docs/5.1/utilities/spacing/
[2]: https://getbootstrap.com/docs/5.1/utilities/flex/
[3]: https://getbootstrap.com/docs/5.1/utilities/flex/#utilities-api
2022-02-06 15:45:22 -08:00
Sigurd Moland Wahl 4dc4108460 Fixed typo in docs 2022-02-06 14:31:59 -08:00
Florian Lacreuse 957c1dd6ea Fix dropdown docs about autoclose and esc key. 2022-02-03 18:20:47 +02:00
Gaël Poupard a5483a8a96 Breadcrumb docs: drop confusing currentColor and add new callout (#35434) 2022-02-01 15:37:33 +02:00
XhmikosR dc09509193 Update find-unused-sass-variables to v4.0.1 (#35761) 2022-02-01 13:03:48 +02:00
XhmikosR cf7fec8a2e event-handler.js: remove unneeded return statement 2022-02-01 12:43:19 +02:00
GeoSot a1e924c4da Event-handler: use Array.find instead of for 2022-02-01 12:43:19 +02:00
GeoSot fc7c5fcb7a Event-handler: initialize variable properly 2022-02-01 12:43:19 +02:00
GeoSot 3f7b31e0e0 Fix Popover test that randomly fails on BrowserStack (#35757)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-02-01 10:33:18 +02:00
GeoSot c44d99f55c Dropdown: use destructured variables in dataApyKeydownHandler 2022-02-01 08:58:46 +02:00
GeoSot c14fc989df Dropdown: dropdown doesn't document data-bs-target option & parentNode is ALWAYS the wrapper for toggle & menu 2022-02-01 08:58:46 +02:00
GeoSot d105439235 Dropdown: merge instance identification in dataApiKeydownHandler
As we use the `dataApiKeydownHandler` only for events that are triggered on `[data-bs-toggle="dropdown"]` or on `.dropdown-menu`, we can ensure that their `parentNode` will ALWAYS be the `.dropdown` wrapper
2022-02-01 08:58:46 +02:00
Toby Zerner 22bbff0b03 Remove incorrect statement about the disabled attribute on <form> (#35713)
> You can disable every form element within a form with the `disabled` attribute on the `<form>`.

I really want to be mistaken, because this would be a very useful feature! But I don't believe it's true. I can't find anything about this on MDN Web Docs, and adding the `disabled` attribute to a `<form>` does nothing on any browser in my testing.

The `disabled` attribute on a `<fieldset>` does disable all descendant form controls – perhaps that's where the mixup has come from.
2022-02-01 08:40:59 +02:00
XhmikosR 9d44b603d5 Update devDependencies (#35743)
* clean-css-cli   ^5.5.0  →   ^5.5.2
* cspell         ^5.16.0  →  ^5.17.0
* eslint          ^8.7.0  →   ^8.8.0
* hugo-bin       ^0.80.0  →  ^0.80.1
* karma          ^6.3.12  →  ^6.3.13
* rollup         ^2.66.0  →  ^2.66.1
* sass           ^1.49.0  →  ^1.49.4
2022-02-01 08:35:01 +02:00
Quy 76802e2d47 Change X to Extra 2022-01-30 18:09:48 -08:00
GeoSot 7f04f84bf8 Dropdown: use only one check for shown state 2022-01-30 18:01:09 +02:00
GeoSot 5f1c542d67 Dropdown: get dropdown's parent in one place 2022-01-30 18:01:09 +02:00
GeoSot 74f24cdf24 More tooltip refactoring (#35546)
* Tooltip.js: move `shown` check to method

* Tooltip.js: move Popper's creation to method

* Tooltip.js: merge checks before `hide`

* Tooltip.js: minor refactoring on `toggle` method
2022-01-30 17:39:03 +02:00
XhmikosR e1020a43a5 Move cspell to Actions (#35593)
* Move cspell to Actions

* Remove the now unused `docs-spellcheck` npm script
2022-01-30 16:39:30 +02:00
GeoSot 882185bbde Change selector-engine.js parents method to utilize better js native methods (#35684)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-01-30 16:24:03 +02:00
XhmikosR 89f88762c5 Fix visual tests (#35585)
* Fix visual tests

They broke in #34509

* load bundle.js in visual tests

Co-authored-by: GeoSot <geo.sotis@gmail.com>
2022-01-30 16:12:24 +02:00
XhmikosR f77a58b381 Update cspell config (#35680)
* use `en-US`
* scan all markdown files
* ignore dist, rtl and tests files
2022-01-30 16:11:38 +02:00
GeoSot dcbe7b6f31 Modal.js: remove unnecessary checks from test 2022-01-30 15:39:34 +02:00
GeoSot 28c9002573 Modal: handle click event from backdrop callback 2022-01-30 15:39:34 +02:00
GeoSot aa650f0f1e tests: replace 'done' callback with 'Promise' to fix deprecation errors (#35659)
Reference:

https://jasmine.github.io/tutorials/async

'DEPRECATION: An asynchronous function called its 'done' callback more than once. This is a bug in the spec, beforeAll, beforeEach, afterAll, or afterEach function in question. This will be treated as an error in a future version. See<https://jasmine.github.io/tutorials/upgrading_to_Jasmine_4.0#deprecations-due-to-calling-done-multiple-times> for more information.
2022-01-30 14:30:04 +02:00
GeoSot d092817059 Event handler: merge new Event with new CustomEvent 2022-01-30 14:15:17 +02:00
GeoSot fa93995123 Event handler: replace deprecated initEvent 2022-01-30 14:15:17 +02:00
XhmikosR 640542e606 Move linkinator to GitHub Actions. (#35573)
* Move linkinator to GitHub Actions.

* Remove `docs-linkinator` npm script since it's no longer used
2022-01-29 14:42:56 +02:00
Dimitri Papadopoulos Orfanos eb2fda2110 docs: fix a couple typos found with codespell (#35733)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-01-29 13:30:02 +02:00
XhmikosR 0840105d7f SelectorEngine: remove moot space 2022-01-29 13:25:30 +02:00
XhmikosR 558002f3dc Return early in more places 2022-01-29 13:25:30 +02:00
XhmikosR 7d3bc44bb0 dropdown: Move constant 2022-01-29 13:25:30 +02:00
GeoSot a8887ea8a8 collapse: merge class toggling 2022-01-29 13:25:30 +02:00
XhmikosR b5147ec218 event-handler.js: use for...of 2022-01-29 13:25:30 +02:00
XhmikosR 62d86c07f8 Rename variables 2022-01-29 13:25:30 +02:00
XhmikosR 3ac4451d47 backdrop.js: cache _getElement calls 2022-01-29 13:25:30 +02:00
XhmikosR 0c3dfe104b Remove a few unneeded variables 2022-01-29 13:25:30 +02:00
A Web Artisan 2964c12bb9 docs: remove moot autocomplete attributes (#35741) 2022-01-29 13:20:01 +02:00
Neeraj Kumar Das d122f40526 Remove duplicate Octicons entry in icons list
Update Octicons website
2022-01-25 15:22:00 -08:00
Kirill Zdornyy c1222d6952 Fix spelling mistake in footer example (#35704) 2022-01-25 12:06:50 +02:00
XhmikosR 1411181b1b Update devDependencies (#35712)
* @babel/core        ^7.16.7  →  ^7.16.12
* @babel/preset-env  ^7.16.8  →  ^7.16.11
* cspell             ^5.15.2  →   ^5.16.0
* karma              ^6.3.11  →   ^6.3.12
* rollup             ^2.64.0  →   ^2.66.0
* sass               ^1.48.0  →   ^1.49.0
2022-01-25 12:03:42 +02:00
Julien Déramond 520cc8de92 Docs: group together reusable CSS for examples in a single stylesheet (#35649)
* Docs: group together examples reusable CSS in a stylesheet

* Use pointer-events utility in sidebars example

* Remove @import and move the content into _default/examples.html. Handle 2 sorts of dividers

* Remove footers.css extra css declaration

* Fix modals example

* Review: remove .b-example-hr

Co-authored-by: Gaël Poupard <ffoodd@users.noreply.github.com>
2022-01-19 13:27:57 +02:00
XhmikosR cd208341a1 Update devDependencies (#35686)
* bundlewatch             ^0.3.2  →   ^0.3.3
* cspell                 ^5.15.1  →  ^5.15.2
* eslint                  ^8.6.0  →   ^8.7.0
* eslint-plugin-unicorn  ^40.0.0  →  ^40.1.0
* hugo-bin               ^0.79.2  →  ^0.80.0
* karma                  ^6.3.10  →  ^6.3.11
* rollup                 ^2.63.0  →  ^2.64.0
* sass                   ^1.47.0  →  ^1.48.0
2022-01-18 07:09:40 +02:00
XhmikosR f0e1220970 README.md: mention Netlify (#35683)
* README.md: mention Netlify

* Update README.md

Co-authored-by: Gaël Poupard <ffoodd@users.noreply.github.com>
2022-01-13 14:52:07 +02:00
XhmikosR c99fa6ca26 build-plugins.js: use globby package (#35586)
We already use it in the change-version.js file
2022-01-13 13:12:10 +02:00
Ryan Berliner 14c7dc1e88 Fix: isVisible function behavior in case of a <details> element, on chrome 97 (#35682) 2022-01-13 10:55:05 +02:00
XhmikosR d581737f78 Update cspell config (#35647)
* specify the files to scan in the config
* enable `useGitignore` option
* remove a few unneeded suppressions
2022-01-11 11:17:12 +02:00
XhmikosR 17260410ba Update devDependencies (#35678)
* @babel/cli                   ^7.16.7  →  ^7.16.8
* @babel/preset-env            ^7.16.7  →  ^7.16.8
* @popperjs/core               ^2.11.0  →  ^2.11.2
* @rollup/plugin-node-resolve  ^13.1.2  →  ^13.1.3
* autoprefixer                 ^10.4.1  →  ^10.4.2
* cspell                       ^5.14.0  →  ^5.15.1
* karma                         ^6.3.9  →  ^6.3.10
* rollup                       ^2.62.0  →  ^2.63.0
* sass                         ^1.45.2  →  ^1.47.0
* shelljs                       ^0.8.4  →   ^0.8.5
2022-01-11 10:32:18 +02:00
Arslan Kalwar e8f4cba9a0 fixed button text (#35656)
Added button missing text
2022-01-05 19:44:22 +02:00
Sakurai Kenji 0dbec67514 Fix custom-checkbox and custom-radio in migration doc (#35609) 2022-01-05 19:24:59 +02:00
Patrick H. Lauke 0d054bb0f1 Remove explicit use of aria-hidden for offcanvas when closed (#35589)
Remove explicit use of aria-hidden & visibility for offcanvas when closed, handling it with css

Co-authored-by: GeoSot <geo.sotis@gmail.com>
Co-authored-by: Gaël Poupard <ffoodd@users.noreply.github.com>
2022-01-05 19:20:15 +02:00
Neeraj Kumar Das f7a1b18320 Fix offcanvas title in 'Enable body scrolling' example (#35621) 2022-01-05 19:01:05 +02:00
zhangchenglin 670e12dd0d Remove the useless class of the close button .text-reset 2022-01-05 18:40:15 +02:00
XhmikosR cebb8436c7 Update nuget/bootstrap.png (#35641) 2022-01-04 09:40:53 +02:00
XhmikosR 0b57c44056 Update devDependencies (#35640)
* @babel/cli                   ^7.16.0  →  ^7.16.7
* @babel/core                  ^7.16.5  →  ^7.16.7
* @babel/preset-env            ^7.16.5  →  ^7.16.7
* @rollup/plugin-node-resolve  ^13.1.1  →  ^13.1.2
* @rollup/plugin-replace        ^3.0.0  →   ^3.0.1
* autoprefixer                 ^10.4.0  →  ^10.4.1
* cspell                       ^5.13.4  →  ^5.14.0
* eslint                        ^8.5.0  →   ^8.6.0
* eslint-plugin-import         ^2.25.3  →  ^2.25.4
* eslint-plugin-unicorn        ^39.0.0  →  ^40.0.0
* sass                         ^1.45.1  →  ^1.45.2
2022-01-04 09:26:50 +02:00
XhmikosR 9680e17456 Bump copyright year to 2022 (#35639) 2022-01-03 15:03:42 +02:00
Anton 2c9ecd0b8d Update api.md (#35486)
* Wording tweak

* Tweak wording

Co-authored-by: Patrick H. Lauke <redux@splintered.co.uk>
2021-12-28 14:38:35 +02:00
XhmikosR 33c7f9fe69 Update devDependencies (#35591)
* hugo-bin                         ^0.79.0  →  ^0.79.2
* linkinator                        ^3.0.2  →   ^3.0.3
* rollup                           ^2.61.1  →  ^2.62.0
* stylelint                        ^14.1.0  →  ^14.2.0
* stylelint-config-twbs-bootstrap   ^3.0.0  →   ^3.0.1
2021-12-28 08:16:16 +02:00
XhmikosR deb8e3febd Add note to carousel crossfade docs about bg color (#35587)
Fixes #35181

Co-authored-by: Mark Otto <markdotto@gmail.com>
Co-authored-by: Gaël Poupard <ffoodd@users.noreply.github.com>
2021-12-23 14:38:43 +02:00
Patrick H. Lauke f171d3e9f7 Strengthen and expand note about dynamic tabs with dropdown menus (#35588)
following on from https://github.com/twbs/bootstrap/pull/35213 this

- expands the note, making it clear it's not supported
- makes it a callout
2021-12-23 09:15:36 +02:00
GeoSot 0d4213bde3 Carousel: move repeated code to a method 2021-12-21 17:37:24 +02:00
GeoSot b8ee68cfa0 Carousel: remove always true visibilityState check
According to https://developer.mozilla.org/en-US/docs/Web/API/Document/visibilityState `visibilityState` is always a string, so the check was always true
2021-12-21 17:37:24 +02:00
GeoSot ff4bf4a458 Carousel: move carousel default interval to _getConfig() and simplify it 2021-12-21 17:37:24 +02:00
GeoSot 6f79721c82 Carousel: return early and drop a loop.
We can achieve the same thing by querying the specific selector directly
2021-12-21 17:37:24 +02:00
GeoSot d60f146507 Carousel: add a helper to get the active element 2021-12-21 17:37:24 +02:00
GeoSot 65cf77ae3e Popover/Tooltip: Fix vertical alignment on arrow of tip elements (#35527)
Regression of #32692

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-21 17:19:29 +02:00
Kyle Tsang aec213711a docs: add reference to sticky-xxl utils (#35579)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-21 09:22:58 +02:00
Julien Déramond 32401fdc37 fix(docs): typo in Alerts CSS Variables description (#35575)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-21 09:09:43 +02:00
XhmikosR 8ccb27a213 Update devDependencies (#35545)
* cspell                                ^5.13.3  →  ^5.13.4
* eslint                                 ^8.4.1  →   ^8.5.0
* hugo-bin                              ^0.78.1  →  ^0.79.0
* linkinator                            ^2.16.2  →   ^3.0.2
* sass                                  ^1.45.0  →  ^1.45.1
* stylelint-config-twbs-bootstrap  ^3.0.0-beta1  →   ^3.0.0
2021-12-21 08:39:43 +02:00
Gaël Poupard a2c056e1f6 fix(alerts): ensure color is set and used (#35571) 2021-12-20 14:22:29 +02:00
Louis-Maxime Piton 42162546f2 docs: A fix for CSS Variables and some proposal (#35563)
* docs: Fix CSS variables sections

* Minor fix for dropdowns

* Minor fixes for URLs

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-18 13:53:36 +02:00
Phil E. Taylor c2db7108c2 Fix typo in comment (#35564)
s/moddal/modal
2021-12-18 07:58:31 +02:00
Mark Otto f729e4c7d1 Convert alerts to CSS variables (#35401)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-17 07:16:24 +02:00
Andy Jiang 4a66f229ed Add missing border-radius for btn-group (#35467)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-16 10:43:30 +02:00
Florian Lacreuse d17801265e Add sticky bottom utility (#35518)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-16 10:27:00 +02:00
Julien Déramond 2d07383e32 docs: Use param to set Bootstrap version in Contents page (#35556) 2021-12-16 10:20:48 +02:00
XhmikosR a22694da13 build/postcss.config.js: minor tweaks (#35506) 2021-12-15 10:52:49 +02:00
GeoSot e0960b08e0 Tooltip: remove extraneous call to _getConfig() (#35540)
BaseClass already initializes the config

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-15 10:47:32 +02:00
GeoSot d40fae456e Popover.js: Accept empty content through data-bs-content (#35514)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-15 10:41:31 +02:00
XhmikosR cd04fe015f Scrollspy: minor refactoring (#35512)
* reorder variables
* join lines
* use `filter(Boolean)` since it's clearer
* use `for...of`
2021-12-15 09:38:06 +02:00
XhmikosR cb46ad633c Reprocess inline SVGs with the latest SVGO (#35484) 2021-12-15 09:29:17 +02:00
Ty Mick 28f7c94475 docs: Add responsive variations for align-content-between (#35532)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-14 22:29:35 +02:00
XhmikosR 8cdb6c40bd Update stylelint and stylelint-config-twbs-bootstrap (#35438) 2021-12-14 09:51:31 +02:00
XhmikosR cd50942831 Update devDependencies (#35498)
* @babel/core                  ^7.16.0  →  ^7.16.5
* @babel/preset-env            ^7.16.4  →  ^7.16.5
* @rollup/plugin-node-resolve  ^13.0.6  →  ^13.1.1
* clean-css-cli                 ^5.4.2  →   ^5.5.0
* cspell                       ^5.13.2  →  ^5.13.3
* hugo-bin                     ^0.77.4  →  ^0.78.1
* postcss                       ^8.4.4  →   ^8.4.5
* postcss-cli                   ^9.0.2  →   ^9.1.0
* rollup                       ^2.60.2  →  ^2.61.1
* sass                         ^1.44.0  →  ^1.45.0
2021-12-14 09:26:43 +02:00
GeoSot 886b940796 Extract Component config functionality to a separate class (#33872)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-10 18:18:18 +02:00
XhmikosR 68f226750d JS tests: only test one Node.js version (#35481) 2021-12-10 16:40:32 +02:00
XhmikosR 63d38b1974 Tab: minor refactoring (#35511)
* remove unneeded parentheses
* move variable
2021-12-10 07:51:57 +02:00
XhmikosR 871c8bdd3f util/index.js: minor refactoring (#35510)
* rename variables
* remove an unused variable
* be more explicit
* reuse variable
2021-12-10 07:48:04 +02:00
XhmikosR eaa801c899 Toast: join multiple classList calls (#35507) 2021-12-10 07:42:08 +02:00
XhmikosR 94d4fa3b10 Fix tests fixture type (#35501)
Previously we were adding an Array instead of a String
2021-12-09 16:01:29 +02:00
GeoSot 28a5a72ed5 Scrollbar - remove margin/padding properties properly (#35388)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-09 15:49:28 +02:00
GeoSot c376cb0763 Dropdown: fix toggle focus after dropdown is hidden using the ESC button (#35500) 2021-12-09 15:34:17 +02:00
GeoSot 4fd5539c75 ScrollBar.js. Minor refactoring and add test (#35492) 2021-12-09 15:05:50 +02:00
Alexander Gitter 2a7015e630 Fix variable name in form overview docs (#35468)
These variables are called $input-btn-*, the documentation was erroneously talking about $btn-input-*.

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-07 20:51:50 +02:00
Anton e45111fb74 Replace inline styles in example "Dropdowns" (#35483) 2021-12-07 20:45:56 +02:00
GeoSot 328f723008 Tooltip: remove title attribute before show & add tests (#35456) 2021-12-07 15:51:56 +02:00
Alexander Gitter ba7863a5bb Fix typo in $purples (#35466)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-07 12:34:16 +02:00
dependabot[bot] b2200c3b24 Bump cspell from 5.13.1 to 5.13.2 (#35473)
Bumps [cspell](https://github.com/streetsidesoftware/cspell) from 5.13.1 to 5.13.2.
- [Release notes](https://github.com/streetsidesoftware/cspell/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell/blob/main/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell/compare/v5.13.1...v5.13.2)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-07 12:06:12 +02:00
XhmikosR a75d2098eb Update devDependencies (#35472) 2021-12-07 10:39:09 +02:00
Mark Otto a780d74b28 Docs offcanvas navbar (#34487)
* Redesign docs navbar to use offcanvas, tweak overall padding while I'm here

* Match code snippets to new gutter width

* Replace value with docs-specific variable

Opted not to do a CSS variable here since on .bd-content it would be inherited into our examples

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-03 10:08:01 +02:00
XhmikosR 6eef480e1e CI: add workflow_dispatch (#35454) 2021-12-02 23:02:11 +02:00
XhmikosR 2ff1eb0daa README.md: wrap file contents in a details element (#35452)
Co-authored-by: Mark Otto <markd.otto@gmail.com>
2021-12-02 22:53:12 +02:00
Louis-Maxime Piton d8999dd566 Tests: Minor fixes (#35455) 2021-12-02 12:01:11 +02:00
GeoSot 385fea49e8 Tooltip/Popover: add underscore prefix to protected functions 2021-12-01 18:00:36 +02:00
GeoSot bd79d69a73 Tooltip: a simple code-block position change 2021-12-01 18:00:36 +02:00
GeoSot 1f7b83203d Tooltip: simplify popper check 2021-12-01 18:00:36 +02:00
GeoSot 9b9372e8dd Tooltip: refactor _hoverState to Boolean to achieve better control 2021-12-01 18:00:36 +02:00
GeoSot 8eacbaa08b Tooltip: merge timeout functionality 2021-12-01 18:00:36 +02:00
GeoSot c69ccba08c Tooltip: Change _enter & _leave to work without arguments 2021-12-01 18:00:36 +02:00
GeoSot a20e4203fe Tooltip: Remove redundant config.delay check
`config.delay` is always an object after initialization
2021-12-01 18:00:36 +02:00
GeoSot 724663b3cd Tooltip: Remove Data.set usage for dynamically created tip
This is not used any further, so we were just setting it.
2021-12-01 18:00:36 +02:00
GeoSot 3baeb0a5c1 Tooltip: merge isAnimated checks 2021-12-01 18:00:36 +02:00
GeoSot 53c77c0203 Tooltip: refactor jQueryInterface 2021-12-01 18:00:36 +02:00
GeoSot a5945369bd Dropdown: change doc for data-bs-popper=none 2021-12-01 17:10:39 +02:00
GeoSot dd07c1ff9e Dropdown: clearMenus is always an event callback 2021-12-01 17:10:39 +02:00
GeoSot f71640f048 Dropdown: Clean more 2021-12-01 17:10:39 +02:00
GeoSot 21e5618ba7 Dropdown: rename vars 2021-12-01 17:10:39 +02:00
GeoSot 0686fa00f0 Dropdown: Remove redundant Space check 2021-12-01 17:10:39 +02:00
GeoSot a14a552d83 Dropdown: Deduplicate complex check 2021-12-01 17:10:39 +02:00
GeoSot bff95d55af Dropdown: Remove redundant check since the show method already does it 2021-12-01 17:10:39 +02:00
GeoSot 2d32802f53 Dropdown: Change constant to the way we use it 2021-12-01 17:10:39 +02:00
GeoSot fb5921dec4 Dropdown: Merge display='static' & isNavbar functionality activating static popper with no styles attached 2021-12-01 17:10:39 +02:00
GeoSot 137b324930 Dropdown: Remove static method used once 2021-12-01 17:10:39 +02:00
GeoSot 8b308b76f0 Dropdown tests: Use a function to improve readability (#35448) 2021-12-01 16:49:02 +02:00
XhmikosR 01b08d958c Remove the now outdated build/svgo.yml (#35447) 2021-12-01 15:16:24 +02:00
GeoSot cab62af2e6 Fix popover arrow & tooltip template after the setContent addition (#35441) 2021-12-01 15:10:10 +02:00
GeoSot 44a6cd724c Tooltip: remove leftover method (#35440)
Remove a leftover after #32692

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-01 14:53:56 +02:00
Ethan Clevenger 2fe90d8b16 Update edge-to-edge design instructions (#35446)
Add note about margins to prevent overflow.
2021-12-01 14:34:03 +02:00
XhmikosR e5d8256e42 tests/unit/util/scrollbar.spec.js: rename function
`parseInt` is a global one.
2021-12-01 14:30:49 +02:00
XhmikosR 11ce6c2dcd tests: fix a few typos 2021-12-01 14:30:49 +02:00
XhmikosR f8f9dc3b5c tests: remove extra spaces, unneeded arrays and add missing newlines 2021-12-01 14:30:49 +02:00
XhmikosR eb54e1a1ce tests: tweak Jasmine's matchers usage
Use:

* toBeNull
* toEqual
* toBeTrue
* toBeFalse
* toHaveSize
* toHaveClass
2021-12-01 14:30:49 +02:00
XhmikosR 5739bf7637 tests/browsers.js: remove unneeded export 2021-12-01 14:30:49 +02:00
Christopher Boik 2a51370e92 Fix variable name in customizing comment (#35414)
Correct table lightening variable to match the variable name defined and described in the loop variable section above
2021-11-30 16:41:08 +02:00
XhmikosR d13b5ca2a5 Update devDependencies (#35421)
* @popperjs/core  ^2.10.2  →  ^2.11.0
* cspell          ^5.13.0  →  ^5.13.1
* postcss         ^8.3.11  →   ^8.4.4
* rollup          ^2.60.1  →  ^2.60.2
* sass            ^1.43.4  →  ^1.44.0
2021-11-30 08:36:39 +02:00
GeoSot 1692fc6b4b Alert: add a couple more tests (#35419)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-11-29 14:32:11 +02:00
GeoSot 3129ff075b BaseComponent: add a couple more tests (#35410)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-11-29 14:27:03 +02:00
François Karman 5290080d4d Update typography.md
remove a unnecessary <abbr> tag
2021-11-25 14:08:52 -10:00
Travis Risner 45eb70e03c Correctly implement RFS in :root CSS variable for $body-font-size (#35326)
* rfs fix

* Update scss/_root.scss

* Update _reboot.scss

Co-authored-by: Mark Otto <otto@github.com>
Co-authored-by: Mark Otto <markd.otto@gmail.com>
2021-11-25 14:01:19 -10:00
Si Nguyen 3c8fbb6581 Update _close.scss 2021-11-25 13:56:32 -10:00
GeoSot 6f077ff7bc Clean tooltip component unneeded functionality (#32692) 2021-11-25 20:08:11 +02:00
GeoSot 374eeecfbc tooltip.js: use array.includes instead of for iteration (#35127) 2021-11-25 19:39:13 +02:00
GeoSot 91ad255e07 Change adjustDialog's if conditions to improve readability 2021-11-25 19:23:49 +02:00
GeoSot 569bca54d2 Add test for modal-content 2021-11-25 19:23:49 +02:00
GeoSot 0f9fd75d6c Respect modal's initial overflowY 2021-11-25 19:23:49 +02:00
GeoSot cc3e5789ec Remove some uncovered code that seems to be unused 2021-11-25 19:23:49 +02:00
GeoSot 92e664c921 Change check for dynamic modal 2021-11-25 19:23:49 +02:00
GeoSot fc33ce4b46 Tweak methods
Name them to be more descriptive and have agnostic functionality
2021-11-25 19:23:49 +02:00
GeoSot 79e01c3bad Some refactoring on modal, to improve readability and generic functionality 2021-11-25 19:23:49 +02:00
GeoSot 94a596fbcb Add a template factory helper to handle all template cases (#34519)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-11-25 19:14:02 +02:00
XhmikosR fa33e83f25 build/change-version.js: fix wrong map usage (#35395) 2021-11-24 10:49:35 +02:00
GeoSot 58ffe2334a build: read & dynamically resolve imports on plugins build (#34509)
Our individual js/dist files are now deduplicated properly thus resulting in a size reduction, which varies from ~25% to ~60% depending on the components used. The average savings are 20% uncompressed and ~15% with gzip.

This will mostly benefit cases that more than one component is imported from js/dist. In all other cases it doesn't have any effect.

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-11-23 17:37:14 +02:00
Neeraj Kumar Das 1ee058adf5 Make footer examples responsive to mobile screens (#35365) 2021-11-23 16:15:46 +02:00
Julien Déramond 7edad9453c Add missing scss/maps imports (#35373)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-11-23 10:06:33 +02:00
XhmikosR 8ddc42f584 Update devDependencies (#35368)
* @babel/preset-env      ^7.16.0  →  ^7.16.4
* cspell                 ^5.12.6  →  ^5.13.0
* eslint                  ^8.2.0  →   ^8.3.0
* eslint-plugin-unicorn  ^38.0.1  →  ^39.0.0
* hugo-bin               ^0.77.2  →  ^0.77.4
* karma                   ^6.3.8  →   ^6.3.9
* rollup                 ^2.60.0  →  ^2.60.1
2021-11-23 09:58:35 +02:00
XhmikosR 9c0163329f Update devDependencies (#35356)
* eslint-plugin-import  ^2.25.2  →  ^2.25.3
* linkinator            ^2.14.5  →  ^2.16.2
* nodemon               ^2.0.14  →  ^2.0.15
* rollup                ^2.59.0  →  ^2.60.0
* terser                 ^5.9.0  →  ^5.10.0
2021-11-16 08:10:32 +02:00
Mark Otto 9f099d3e4f Move reassigned Sass maps for colors to another stylesheet (#34942) 2021-11-15 13:03:48 +02:00
Tobias Nießen 96dcc150d5 Fix typo in vertical alignment of table cells (#35348) 2021-11-15 12:52:06 +02:00
XhmikosR 367caea501 Update devDependencies (#35322)
* cspell                 ^5.12.4  →  ^5.12.6
* eslint                  ^8.1.0  →   ^8.2.0
* eslint-plugin-unicorn  ^37.0.1  →  ^38.0.1
* hugo-bin               ^0.76.1  →  ^0.77.2
* karma                   ^6.3.7  →   ^6.3.8
* linkinator             ^2.14.4  →  ^2.14.5
* postcss-cli             ^9.0.1  →   ^9.0.2
* rtlcss                  ^3.4.0  →   ^3.5.0
2021-11-09 08:02:36 +02:00
Scott O'Hara e958cd2637 floating-labels: remove aria-label in the select example (#35327)
While it is understood that this is just an example, the visible text (label) of "Works with selects" and the `aria-label="Floating label select example"` created a [WCAG 2.5.3 Label in name](https://www.w3.org/WAI/WCAG21/quickref/#label-in-name) failure.  

As the `aria-label` isn't necessary here since this `select` is already provided an accessible name by its `label` element, removing the unnecessary `aria-label` seems the best course of action as:
* removing it solves the WCAG issue 
* it removes the potential implication to developers that they'd even _need_ an `aria-label` here, let alone indirectly suggesting that it's ok for the visible text and accessible name to be out of alignment
2021-11-09 07:54:42 +02:00
Julien Déramond 31998dfd1e Fix spacing utility classes mentioned in navbar supported content documentation (#35328)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-11-05 20:36:56 +02:00
Christian Oliff 98889f2144 README.md remove broken "David DM" dependency badges (#35313) 2021-11-03 14:36:39 +02:00
Mark Otto 6c706e947d Update import stacks required for modifying utilities (#35320) 2021-11-03 14:31:21 +02:00
kyletsang 889286cef1 Add top placement info to offcanvas docs 2021-11-02 13:56:47 -07:00
XhmikosR 05f1b15dda Update devDependencies (#35270)
* @babel/cli                ^7.15.7  →  ^7.16.0
* @babel/core               ^7.15.8  →  ^7.16.0
* @babel/preset-env         ^7.15.8  →  ^7.16.0
* autoprefixer              ^10.3.7  →  ^10.4.0
* cspell                    ^5.12.3  →  ^5.12.4
* eslint                     ^8.0.1  →   ^8.1.0
* karma                      ^6.3.5  →   ^6.3.7
* karma-firefox-launcher     ^2.1.1  →   ^2.1.2
* rollup                    ^2.58.0  →  ^2.59.0
* sass                      ^1.43.2  →  ^1.43.4
2021-11-02 08:09:33 +02:00
Michael Sørensen 44ea0d6925 make-col-ready(): remove the unused $gutter variable (#34334)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: Mark Otto <markd.otto@gmail.com>
2021-11-01 08:59:21 +02:00
Mark Otto 0c449b8b82 Always set the CSS variables for gutters in containers (#34644)
We already do this in rows, so to best support our containers, we need
to do it at the container level as well.

Fixes #32658, fixes #34614, closes #32658.

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-11-01 08:39:48 +02:00
Julien Déramond 328a29162d Add missing role="search" and type="search" in navbar doc and examples (#35223)
* Add missing `role="search"` and `type="search"` in navbar doc and examples

* Update site/content/docs/5.1/components/navbar.md

* Remove warning callout about ensuring correct search role in navbar doc

Co-authored-by: Gaël Poupard <ffoodd@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-11-01 08:33:39 +02:00
Christian Oliff 8ed1218294 update grid example docs (#35308) 2021-11-01 08:29:31 +02:00
Gaël Poupard 989de20bae Don't override CSS direction in code elements (#35230)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-10-29 09:00:36 +03:00
Gaël Poupard 600a9ee521 Ensure sufficient contrast in accordion-item (#35231)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-10-29 08:53:42 +03:00
Gaël Poupard 7a9a3ab50f Drop prefixed version of ::file-selector-button (#35232)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-10-29 08:47:24 +03:00
Barabas 2e87f9aef0 images.md: remove zero-width space (#35234)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-10-28 14:22:32 +03:00
Oxydent dc06b9966e fix(offcanvas): Adding titles class where missing (#35264)
Co-authored-by: louismaximepiton <louismaxime.piton@orange.com>
2021-10-26 14:37:45 +03:00
XhmikosR 5771fcc4a9 Update devDependencies (#35233)
* @rollup/plugin-commonjs      ^21.0.0  →  ^21.0.1
* @rollup/plugin-node-resolve  ^13.0.5  →  ^13.0.6
* clean-css-cli                 ^5.4.1  →   ^5.4.2
* eslint                        ^8.0.0  →   ^8.0.1
* karma                         ^6.3.4  →   ^6.3.5
* nodemon                      ^2.0.13  →  ^2.0.14
* postcss                       ^8.3.9  →  ^8.3.11
* rtlcss                        ^3.3.0  →   ^3.4.0
* sass                         ^1.42.1  →  ^1.43.2
2021-10-21 16:40:29 +03:00
Gaël Poupard a0fd92ed2b Fix typo in RTL Hello World! sentence (#35236)
* docs(RTL): fix typo in Hello World! sentence

* chore(docs): Cspell arabic words update
2021-10-21 16:33:29 +03:00
GeoSot b991a6b851 tests: try to fix a few random failures (#35184)
* Change `Swipe` dispose spy on EventHandler
* Modal hide spy on backdrop hide
2021-10-13 17:45:39 +03:00
GeoSot 9640e2d5dd Change the way collapse handles its children on opening 2021-10-13 16:38:27 +03:00
GeoSot 1eea132866 collapse: extract duplicate code to a function 2021-10-13 16:38:27 +03:00
XhmikosR 99f6cf509d Update devDependencies (#35174)
* eslint                 ^7.32.0  →    ^8.0.0
* eslint-plugin-import   ^2.24.2  →   ^2.25.2
* eslint-plugin-unicorn  ^36.0.0  →   ^37.0.1
* vnu-jar                21.10.8  →  21.10.12
2021-10-13 15:56:37 +03:00
XhmikosR 45bba10714 Switch to Node.js 16 and npm 8. (#35178) 2021-10-13 15:26:48 +03:00
XhmikosR e8f702666f JS: minor refactoring (#35183)
* add missing comments
* shorten block comments
* reorder constants
* reorder public/private methods
* sort exports alphabetically in util/index.js
* fix a couple of typos
2021-10-13 15:19:28 +03:00
GeoSot db44392bda Swipe: add test to ensure that it ignores pinch events (#35161) 2021-10-12 15:48:19 +03:00
Jesse Mandel d7dec124eb Update nuget docs to specify only .NET Framework projects are supported. (#35124)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-10-11 19:31:53 +03:00
XhmikosR 1fe4acc270 Update devDependencies (#35155)
* @babel/core                  ^7.15.5  →  ^7.15.8
* @babel/preset-env            ^7.15.6  →  ^7.15.8
* cspell                       ^5.12.0  →  ^5.12.3
* linkinator                   ^2.14.3  →  ^2.14.4
* vnu-jar                       21.9.2  →  21.10.8
2021-10-11 19:07:43 +03:00
Geremia Taglialatela 5b124f647f Add color and border-color css variables to tables (#35055) 2021-10-11 17:41:43 +03:00
GeoSot 8ec6c94522 Extract Carousel's swipe functionality to a separate Class (#32999) 2021-10-11 17:04:43 +03:00
Mark Otto b21c7ccbb7 Reset z-index on .navbar-expand .offcanvas, plus prevent box-shadow issues (#35153) 2021-10-10 14:56:35 +03:00
XhmikosR 24e3ca2474 tooltip.js: ignore a LGTM error (#35147)
The code on this line is either sanitized or the user chose to not sanitize it.
2021-10-10 14:49:41 +03:00
XhmikosR c44d64ed71 Merge remote-tracking branch 'remotes/origin/v513' 2021-10-09 18:28:28 +03:00
XhmikosR 1a6fdfae6b Bump version to 5.1.3. 2021-10-09 09:43:19 +03:00
Mark Otto 09f73a6a12 Revert "Add align-self: center to buttons for improved rendering in flex containers" (#35143)
This reverts commit 94c80ff613.
2021-10-09 09:41:51 +03:00
XhmikosR ec62be2724 ESLint: disable no-negated-condition rule (#35137) 2021-10-08 12:47:55 +03:00
XhmikosR a260967a55 tests: minor cleanup (#35138)
* tests: minor cleanup

* tests: use the util noop function
2021-10-08 12:32:11 +03:00
XhmikosR eb0f705621 scrollspy.js: chain functions (#35139) 2021-10-08 12:28:05 +03:00
XhmikosR 64e13162fa Sanitizer: fix logic and add a test. (#35133)
This was broken in 2596c97 inadvertently.
Added a test so that we don't hit this in the future.
2021-10-07 17:48:36 +03:00
Chris Midgley 9ff87f5f0e docs: remove 'and' in middle of list (#35113) 2021-10-07 16:42:22 +03:00
devhoussam c331a150cd Add Sass variables for hr background-color and border
Co-Authored-By: Houssam Hammouda <11141564+devhoussam@users.noreply.github.com>
2021-10-05 15:49:35 -07:00
XhmikosR 2596c97034 util/sanitizer.js: use Array.every() (#35120) 2021-10-06 00:23:14 +03:00
GeoSot 598b4c59a6 Use for...of in visual tests too 2021-10-05 19:52:11 +03:00
XhmikosR 3afe4b8c7d Enable unicorn/numeric-separators-style rule.
This is taken care of by babel via @babel/plugin-proposal-numeric-separator
2021-10-05 19:52:11 +03:00
XhmikosR 567a41347e Fix a unicorn/no-array-callback-reference issue 2021-10-05 19:52:11 +03:00
XhmikosR 666fe596bf Enable unicorn/no-array-for-each rule 2021-10-05 19:52:11 +03:00
XhmikosR 2b4d0d166b Enable unicorn/no-for-loop rule 2021-10-05 19:52:11 +03:00
XhmikosR 9f1579aa04 Enable unicorn/prefer-prototype-methods rule 2021-10-05 19:52:11 +03:00
Mark Otto 57d80fcd32 Separate container classes from $enable-grid-classes option (#35005)
* Separate container classes from enable-grid-classes optoin

* Document the new option

* Mention in migration guide

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-10-05 19:46:33 +03:00
dependabot[bot] cf2f7cfbe5 Bump postcss from 8.3.8 to 8.3.9 (#35110)
Bumps [postcss](https://github.com/postcss/postcss) from 8.3.8 to 8.3.9.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.3.8...8.3.9)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-05 19:37:30 +03:00
dependabot[bot] 71e334e41a Bump autoprefixer from 10.3.6 to 10.3.7 (#35109)
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.3.6 to 10.3.7.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.3.6...10.3.7)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-10-05 19:31:48 +03:00
dependabot[bot] 7bd4c9b79e Bump linkinator from 2.14.0 to 2.14.3 (#35119)
Bumps [linkinator](https://github.com/JustinBeckwith/linkinator) from 2.14.0 to 2.14.3.
- [Release notes](https://github.com/JustinBeckwith/linkinator/releases)
- [Commits](https://github.com/JustinBeckwith/linkinator/compare/v2.14.0...v2.14.3)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-05 19:26:27 +03:00
XhmikosR 5ecef8ac01 Release v5.1.2 (#35114) 2021-10-05 18:50:18 +03:00
Kyle Tsang a2aa8c5a6e Add workaround for dart sass compile error (#35033)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: Mark Otto <otto@github.com>
2021-10-05 18:40:44 +03:00
Christian Oliff 6b8cf0912a Add cSpell custom dictionary and docs-spellcheck script (#34940) 2021-10-05 18:00:48 +03:00
Julien Déramond fc21dcf758 Fix capitalization after period in contents.md (#35111) 2021-10-05 17:46:08 +03:00
XhmikosR c81c645394 rollup: specify generatedCode: 'es2015' (#35070)
This will make use of `const` and modern features (which we are already using in our code) in the generated rollup code.
2021-10-04 19:46:07 +03:00
XhmikosR 78e9b402df Revert "Bundlewatch: stop ignoring dependabot branches (#33192)" (#35069)
This reverts commit 5560c86070.
2021-10-04 19:34:47 +03:00
XhmikosR c8e5de6e7d Update devDependencies (#35102)
* @popperjs/core                   ^2.10.1  →  ^2.10.2
* @rollup/plugin-commonjs          ^20.0.0  →  ^21.0.0
* clean-css-cli                     ^5.3.3  →   ^5.4.1
* eslint-config-xo                 ^0.38.0  →  ^0.39.0
* rollup                           ^2.57.0  →  ^2.58.0
* stylelint-config-twbs-bootstrap   ^2.2.3  →   ^2.2.4
2021-10-04 19:29:05 +03:00
dependabot[bot] ae16dbbb50 Bump autoprefixer from 10.2.6 to 10.3.6 (#35076)
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.2.6 to 10.3.6.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.2.6...10.3.6)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-10-04 19:10:09 +03:00
Priyansh 49df44d43e README.md: fix capitalization after period 2021-10-01 17:12:45 +03:00
XhmikosR 4ffdef397f Update terser to v5.9.0 (#34995) 2021-09-29 09:20:04 +03:00
XhmikosR 759fc89f4b sanitizer: add sms in the SAFE_URL_PATTERN (#35074) 2021-09-29 07:41:06 +03:00
Mark Otto 9437973e58 Update README.md 2021-09-28 18:35:13 -07:00
béla 9da749bc33 update readme github issue new links 2021-09-28 18:35:13 -07:00
Mark Otto c67bcdee62 Fix syntax error, update description 2021-09-28 16:08:17 -07:00
GeoSot 7da7e8a558 Change from issue templates to issue forms
Co-Authored-By: XhmikosR <xhmikosr@gmail.com>
Co-Authored-By: GeoSot <geo.sotis@gmail.com>
2021-09-28 16:02:20 -07:00
dependabot[bot] a0d3ddc87b Bump postcss-cli from 9.0.0 to 9.0.1 (#35075)
Bumps [postcss-cli](https://github.com/postcss/postcss-cli) from 9.0.0 to 9.0.1.
- [Release notes](https://github.com/postcss/postcss-cli/releases)
- [Changelog](https://github.com/postcss/postcss-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss-cli/compare/9.0.0...9.0.1)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-28 19:04:23 +03:00
Alex Gibson 630d2707a3 docs: remove data-bs-dismiss="modal" leftover (#35042) 2021-09-28 18:46:09 +03:00
XhmikosR fee1dc52ee Regenerate package-lock.json (#35071) 2021-09-28 18:38:31 +03:00
Geremia Taglialatela 4fffcf7232 Use Sass variable instead of RGB components (#35017)
All other `rgba()` calls use a Sass variable, except for the ones fixed in this commit
2021-09-28 18:18:02 +03:00
Grey Li 69fedf203b docs: fix Popper version number in config (#35067)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-09-28 13:52:57 +03:00
dependabot[bot] 556fd4bbd4 Bump rollup from 2.56.3 to 2.57.0 (#35065)
Bumps [rollup](https://github.com/rollup/rollup) from 2.56.3 to 2.57.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.56.3...v2.57.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-28 13:38:31 +03:00
dependabot[bot] 143dafdc93 Bump sass from 1.42.0 to 1.42.1 (#35064)
Bumps [sass](https://github.com/sass/dart-sass) from 1.42.0 to 1.42.1.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.42.0...1.42.1)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-09-28 13:14:38 +03:00
dependabot[bot] 70f55cfb52 Bump postcss from 8.3.6 to 8.3.8 (#35063)
Bumps [postcss](https://github.com/postcss/postcss) from 8.3.6 to 8.3.8.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.3.6...8.3.8)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-28 12:53:40 +03:00
dependabot[bot] 9845a38f97 Bump postcss-cli from 8.3.1 to 9.0.0 (#35061)
Bumps [postcss-cli](https://github.com/postcss/postcss-cli) from 8.3.1 to 9.0.0.
- [Release notes](https://github.com/postcss/postcss-cli/releases)
- [Changelog](https://github.com/postcss/postcss-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss-cli/compare/8.3.1...9.0.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-09-28 12:48:46 +03:00
dependabot[bot] c7dd486527 Bump @rollup/plugin-node-resolve from 13.0.4 to 13.0.5 (#35060)
Bumps [@rollup/plugin-node-resolve](https://github.com/rollup/plugins/tree/HEAD/packages/node-resolve) from 13.0.4 to 13.0.5.
- [Release notes](https://github.com/rollup/plugins/releases)
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/node-resolve/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/node-resolve-v13.0.5/packages/node-resolve)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-09-28 12:42:08 +03:00
dependabot[bot] ae51525389 Bump glob from 7.1.7 to 7.2.0 (#35059)
Bumps [glob](https://github.com/isaacs/node-glob) from 7.1.7 to 7.2.0.
- [Release notes](https://github.com/isaacs/node-glob/releases)
- [Changelog](https://github.com/isaacs/node-glob/blob/master/changelog.md)
- [Commits](https://github.com/isaacs/node-glob/compare/v7.1.7...v7.2.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-09-28 12:36:33 +03:00
Rohit Sharma 337447c5cc Add offcanvas to the components requiring JavaScript (#35013)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-09-28 12:33:33 +03:00
Julien Déramond b1e27a456b examples: Add role="switch" to switches (#35022) 2021-09-28 12:28:30 +03:00
dependabot[bot] d610a3c484 Bump nodemon from 2.0.12 to 2.0.13 (#35066)
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.12 to 2.0.13.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.12...v2.0.13)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-28 12:24:13 +03:00
XhmikosR 60d3eb34f8 Update devDependencies (#35026)
* @babel/cli    ^7.15.4  →  ^7.15.7
* sass          ^1.41.0  →  ^1.42.0
2021-09-21 09:10:09 +03:00
dependabot[bot] 93e82f11b9 Bump nth-check from 2.0.0 to 2.0.1 (#35025)
Bumps [nth-check](https://github.com/fb55/nth-check) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/fb55/nth-check/releases)
- [Commits](https://github.com/fb55/nth-check/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: nth-check
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-21 09:02:51 +03:00
GeoSot bdfb4cc54d Fix Collapse regression of handling toggling between sibling chilldren (#34951) 2021-09-15 15:33:19 +03:00
XhmikosR 8f2e678424 Minor refactoring (#34980)
Rename variables and remove a temporary one
2021-09-15 14:34:24 +03:00
XhmikosR c5d03d93fc Rename e to event (#34979) 2021-09-15 14:27:46 +03:00
dependabot[bot] 1d484b5737 Bump sass from 1.40.1 to 1.41.0 (#34977)
Bumps [sass](https://github.com/sass/dart-sass) from 1.40.1 to 1.41.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.40.1...1.41.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-15 08:47:47 +03:00
dependabot[bot] c54cd6a070 Bump sass from 1.39.0 to 1.40.1 (#34974)
Bumps [sass](https://github.com/sass/dart-sass) from 1.39.0 to 1.40.1.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.39.0...1.40.1)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-14 15:04:09 +03:00
dependabot[bot] 6bd842bd66 Bump eslint-plugin-unicorn from 35.0.0 to 36.0.0 (#34970)
Bumps [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) from 35.0.0 to 36.0.0.
- [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases)
- [Commits](https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v35.0.0...v36.0.0)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-09-14 09:32:51 +03:00
dependabot[bot] 89630c54fc Bump @babel/preset-env from 7.15.4 to 7.15.6 (#34973)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.15.4 to 7.15.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.15.6/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-14 09:24:31 +03:00
XhmikosR 8b0b34e92e Update CodeQL workflow (#34961) 2021-09-14 09:07:59 +03:00
cdalexndr 55a352d023 Fix responsive img docs
https://github.com/twbs/bootstrap/issues/34885
2021-09-13 22:19:13 -06:00
GeoSot c9af4565fd tests: fix lint warning (#34950) 2021-09-13 10:57:17 +03:00
Christian Oliff 8c4f66733e Changes some latin/dummy text to English (#34946)
Changes some latin/dummy text to English so spellcheck linter passes
2021-09-10 14:02:58 +03:00
Kitty Giraudel 1df098361c Update a URL mentioning dead name (#34937) 2021-09-09 14:42:45 +03:00
Christian Oliff cb87ed2a79 docs: Add role="switch" to switches (#34824)
* docs: Add role="switch" to switches

* Tweak/expand explanation about assistive technologies

Co-authored-by: Patrick H. Lauke <redux@splintered.co.uk>
2021-09-09 14:37:52 +03:00
Christian Oliff f7c361f553 replace dummy text with English for Text truncation page (#34936) 2021-09-09 14:30:41 +03:00
Gaël Poupard 2a925d6fd8 Separator for table direct children (#34861)
* fix(tables): separator for table direct children

* fix(tables): drop universal selectors

* fix(tables): trying the lobotomized owl selector

* fix(tables): get closer to v4

* fix(tables): ensure borderless are borderless
2021-09-09 09:50:55 +03:00
Christian Oliff 8db02e24d6 Non-blocking typo fix (#34935) 2021-09-09 09:44:44 +03:00
Christian Oliff 24daa47131 Fix Backdroped typo (#34920) 2021-09-08 10:55:01 -07:00
Julien Déramond 499485589f Remove remaining "master" branch references (#34932) 2021-09-08 17:58:50 +03:00
Christian Oliff de68df20cd fix utilities typo (#34923) 2021-09-08 16:59:17 +03:00
bavoco 00a230a6a7 fix custom property values of row overrides individual cell (#34799) 2021-09-08 09:07:22 +03:00
XhmikosR 395b50a5b5 docs: Update RFS version & move "v" prefix to config.yml (#34918) 2021-09-08 09:03:04 +03:00
Christian Oliff acc0836f08 fix predefined typo (#34922) 2021-09-08 08:59:27 +03:00
Christian Oliff 7e1aa85fad Fix JavaScript typo (#34921) 2021-09-08 08:55:43 +03:00
Dominik Crha dbe0ad49ab Add border-radius sizes to small and large .form-selects (#34853)
Fixes #34852

Co-authored-by: Dominik Crha <crha@havit.cz>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: Mark Otto <markd.otto@gmail.com>
2021-09-07 13:35:35 -07:00
Zaid Jawed 94c80ff613 Add align-self: center to buttons for improved rendering in flex containers
Fixes #34834
2021-09-07 13:21:57 -07:00
651 changed files with 51636 additions and 44630 deletions
+22 -22
View File
@@ -2,59 +2,59 @@
"files": [
{
"path": "./dist/css/bootstrap-grid.css",
"maxSize": "7.25 kB"
"maxSize": "7.5 kB"
},
{
"path": "./dist/css/bootstrap-grid.min.css",
"maxSize": "6.5 kB"
"maxSize": "6.75 kB"
},
{
"path": "./dist/css/bootstrap-reboot.css",
"maxSize": "2.5 kB"
"maxSize": "2.75 kB"
},
{
"path": "./dist/css/bootstrap-reboot.min.css",
"maxSize": "2.35 kB"
"maxSize": "2.5 kB"
},
{
"path": "./dist/css/bootstrap-utilities.css",
"maxSize": "7.75 kB"
"maxSize": "8.5 kB"
},
{
"path": "./dist/css/bootstrap-utilities.min.css",
"maxSize": "6.85 kB"
"maxSize": "7.75 kB"
},
{
"path": "./dist/css/bootstrap.css",
"maxSize": "25.5 kB"
"maxSize": "29.5 kB"
},
{
"path": "./dist/css/bootstrap.min.css",
"maxSize": "23.25 kB"
},
{
"path": "./dist/js/bootstrap.bundle.js",
"maxSize": "42.5 kB"
},
{
"path": "./dist/js/bootstrap.bundle.min.js",
"maxSize": "22.25 kB"
},
{
"path": "./dist/js/bootstrap.esm.js",
"maxSize": "27.5 kB"
},
{
"path": "./dist/js/bootstrap.bundle.js",
"maxSize": "44.55 kB"
},
{
"path": "./dist/js/bootstrap.bundle.min.js",
"maxSize": "23.75 kB"
},
{
"path": "./dist/js/bootstrap.esm.js",
"maxSize": "29.75 kB"
},
{
"path": "./dist/js/bootstrap.esm.min.js",
"maxSize": "18.25 kB"
"maxSize": "19.25 kB"
},
{
"path": "./dist/js/bootstrap.js",
"maxSize": "28 kB"
"maxSize": "30.5 kB"
},
{
"path": "./dist/js/bootstrap.min.js",
"maxSize": "15.75 kB"
"maxSize": "16.75 kB"
}
],
"ci": {
+130
View File
@@ -0,0 +1,130 @@
{
"version": "0.2",
"words": [
"affordance",
"allowfullscreen",
"Analyser",
"autohide",
"autohiding",
"autoplay",
"autoplays",
"blazingly",
"Blockquotes",
"Bootstrappers",
"borderless",
"Brotli",
"browserslist",
"browserslistrc",
"btncheck",
"btnradio",
"callout",
"callouts",
"camelCase",
"clearfix",
"Codesniffer",
"combinator",
"Contentful",
"Cpath",
"Crossfade",
"crossfading",
"cssgrid",
"Csvg",
"Datalists",
"Deque",
"discoverability",
"docsearch",
"docsref",
"dropend",
"dropleft",
"dropright",
"dropstart",
"dropup",
"errorf",
"favicon",
"favicons",
"fieldsets",
"flexbox",
"fullscreen",
"getbootstrap",
"Grayscale",
"Hoverable",
"hreflang",
"hstack",
"importmap",
"jsdelivr",
"Jumpstart",
"keyframes",
"libera",
"libman",
"Libsass",
"lightboxes",
"Lowercased",
"markdownify",
"mediaqueries",
"minifiers",
"misfunction",
"mkdir",
"monospace",
"mouseleave",
"navbars",
"navs",
"Neue",
"noindex",
"Noto",
"offcanvas",
"offcanvases",
"Packagist",
"popperjs",
"prebuild",
"prefersreducedmotion",
"prepended",
"printf",
"rects",
"relref",
"rgba",
"roboto",
"RTLCSS",
"ruleset",
"screenreaders",
"scrollbars",
"scrollspy",
"Segoe",
"semibold",
"socio",
"srcset",
"stackblitz",
"stickied",
"Stylelint",
"subnav",
"tabbable",
"textareas",
"toggleable",
"topbar",
"touchend",
"twbs",
"unitless",
"unstylable",
"unstyled",
"Uppercased",
"urlize",
"vbtn",
"viewports",
"Vite",
"vstack",
"walkthroughs",
"WCAG",
"zindex"
],
"language": "en-US",
"files": [
"**/*.md"
],
"ignorePaths": [
".cspell.json",
"dist/",
"*.min.*",
"**/*rtl*",
"**/tests/**"
],
"useGitignore": true
}
+2
View File
@@ -3,4 +3,6 @@
**/vendor/
/_site/
/js/coverage/
/js/tests/integration/
/site/static/sw.js
/site/layouts/
+1 -4
View File
@@ -37,6 +37,7 @@
}
],
"no-console": "error",
"no-negated-condition": "off",
"object-curly-spacing": [
"error",
"always"
@@ -51,16 +52,12 @@
],
"unicorn/explicit-length-check": "off",
"unicorn/no-array-callback-reference": "off",
"unicorn/no-array-for-each": "off",
"unicorn/no-array-method-this-argument": "off",
"unicorn/no-for-loop": "off",
"unicorn/no-null": "off",
"unicorn/no-unused-properties": "error",
"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/prefer-spread": "off",
"unicorn/prevent-abbreviations": "off"
+2 -4
View File
@@ -18,9 +18,7 @@ the preferred channel for [bug reports](#bug-reports), [features requests](#feat
and [submitting pull requests](#pull-requests), but please respect the following
restrictions:
* Please **do not** use the issue tracker for personal support requests. Stack
Overflow ([`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5) tag),
[Slack](https://bootstrap-slack.herokuapp.com/) or [IRC](/README.md#community) are better places to get help.
* Please **do not** use the issue tracker for personal support requests. Stack Overflow ([`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5) tag), [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions) or [IRC](/README.md#community) are better places to get help.
* Please **do not** derail or troll issues. Keep the discussion on topic and
respect the opinions of others.
@@ -69,7 +67,7 @@ Guidelines for bug reports:
3. **Isolate the problem** &mdash; ideally create a [reduced test
case](https://css-tricks.com/reduced-test-cases/) and a live example.
[This JS Bin](https://jsbin.com/lolome/edit?html,output) is a helpful template.
These [v4 CodePen](https://codepen.io/team/bootstrap/pen/yLabNQL) and [v5 CodePen](https://codepen.io/team/bootstrap/pen/qBamdLj) are helpful templates.
A good bug report shouldn't leave others needing to chase you up for more
-20
View File
@@ -1,20 +0,0 @@
---
name: Bug report
about: Tell us about a bug you may have identified in Bootstrap.
title: ''
labels: ''
assignees: ''
---
Before opening:
- [Search for duplicate or closed issues](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue)
- [Validate](https://html5.validator.nu/) any HTML to avoid common problems
- Read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md)
Bug reports must include:
- Operating system and version (Windows, macOS, Android, iOS)
- Browser and version (Chrome, Firefox, Safari, Microsoft Edge, Opera, Android Browser)
- A [reduced test case](https://css-tricks.com/reduced-test-cases/) or suggested fix using [CodePen](https://codepen.io/) or [JS Bin](https://jsbin.com/)
+62
View File
@@ -0,0 +1,62 @@
name: Report a bug
description: Tell us about a bug or issue you may have identified in Bootstrap.
title: "Provide a general summary of the issue"
labels: [bug]
assignees: "-"
body:
- type: checkboxes
attributes:
label: Prerequisites
description: Take a couple minutes to help our maintainers work faster.
options:
- label: I have [searched](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue) for duplicate or closed issues
required: true
- label: I have [validated](https://html5.validator.nu/) any HTML to avoid common problems
required: true
- label: I have read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md)
required: true
- type: textarea
id: what-happened
attributes:
label: Describe the issue
description: Provide a summary of the issue and what you expected to happen, including specific steps to reproduce.
validations:
required: true
- type: textarea
id: reduced-test-case
attributes:
label: Reduced test cases
description: Include links [reduced test case](https://css-tricks.com/reduced-test-cases/) links or suggested fixes using CodePen ([v4 template](https://codepen.io/team/bootstrap/pen/yLabNQL) or [v5 template](https://codepen.io/team/bootstrap/pen/qBamdLj)).
validations:
required: true
- type: dropdown
id: os
attributes:
label: What operating system(s) are you seeing the problem on?
multiple: true
options:
- Windows
- macOS
- Android
- iOS
- Linux
validations:
required: true
- type: dropdown
id: browser
attributes:
label: What browser(s) are you seeing the problem on?
multiple: true
options:
- Chrome
- Safari
- Firefox
- Microsoft Edge
- Opera
- type: input
id: version
attributes:
label: What version of Bootstrap are you using?
placeholder: "e.g., v5.1.0 or v4.5.2"
validations:
required: true
+2 -2
View File
@@ -1,4 +1,4 @@
contact_links:
- name: Ask a question
- name: Ask the community
url: https://github.com/twbs/bootstrap/discussions/new
about: Ask and discuss questions with other Bootstrap community members
about: Ask and discuss questions with other Bootstrap community members.
-18
View File
@@ -1,18 +0,0 @@
---
name: Feature request
about: Suggest an idea for a new feature in Bootstrap.
title: ''
labels: feature
assignees: ''
---
Before opening:
- [Search for duplicate or closed issues](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue)
- Read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md)
Feature requests must include:
- As much detail as possible for what we should add and why it's important to Bootstrap
- Relevant links to prior art, screenshots, or live demos whenever possible
@@ -0,0 +1,29 @@
name: Feature request
description: Suggest new or updated features to include in Bootstrap.
title: "Suggest a new feature"
labels: [feature]
assignees: []
body:
- type: checkboxes
attributes:
label: Prerequisites
description: Take a couple minutes to help our maintainers work faster.
options:
- label: I have [searched](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue) for duplicate or closed feature requests
required: true
- label: I have read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md)
required: true
- type: textarea
id: proposal
attributes:
label: Proposal
description: Provide detailed information for what we should add, including relevant links to prior art, screenshots, or live demos whenever possible.
validations:
required: true
- type: textarea
id: motivation
attributes:
label: Motivation and context
description: Tell us why this change is needed or helpful, and what problems it may help solve.
validations:
required: true
+38
View File
@@ -0,0 +1,38 @@
### Description
<!-- Describe your changes in detail -->
### Motivation & Context
<!-- Why is this change required? What problem does it solve? -->
### Type of changes
<!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply. -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Refactoring (non-breaking change)
- [ ] Breaking change (fix or feature that would change existing functionality)
### Checklist
<!-- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] I have read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md)
- [ ] My code follows the code style of the project _(using `npm run lint`)_
- [ ] My change introduces changes to the documentation
- [ ] I have updated the documentation accordingly
- [ ] I have added tests to cover my changes
- [ ] All new and existing tests passed
#### Live previews
<!-- Please add direct links where your modifications can be seen in the documentation -->
* https://deploy-preview-{your pr number}--twbs-bootstrap.netlify.app/
### Related issues
<!-- Please link any related issues here. -->
+1 -1
View File
@@ -6,6 +6,6 @@ See the [contributing guidelines](CONTRIBUTING.md) for sharing bug reports.
For general troubleshooting or help getting started:
- Join [the official Slack room](https://bootstrap-slack.herokuapp.com/).
- Ask and explore [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions).
- Chat with fellow Bootstrappers in IRC. On the `irc.libera.chat` server, in the `#bootstrap` channel.
- Ask and explore Stack Overflow with the [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5) tag.
+3
View File
@@ -7,6 +7,9 @@ categories:
- title: '❗ Breaking Changes'
labels:
- 'breaking-change'
- title: '🚀 Highlights'
labels:
- 'release-highlight'
- title: '🚀 Features'
labels:
- 'new-feature'
+4 -3
View File
@@ -2,10 +2,11 @@ name: BrowserStack
on:
push:
workflow_dispatch:
env:
FORCE_COLOR: 2
NODE: 14
NODE: 16
jobs:
browserstack:
@@ -15,10 +16,10 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v3
with:
node-version: "${{ env.NODE }}"
cache: npm
+6 -3
View File
@@ -2,11 +2,14 @@ name: Bundlewatch
on:
push:
branches-ignore:
- "dependabot/**"
pull_request:
workflow_dispatch:
env:
FORCE_COLOR: 2
NODE: 14
NODE: 16
jobs:
bundlewatch:
@@ -14,10 +17,10 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v3
with:
node-version: "${{ env.NODE }}"
cache: npm
@@ -0,0 +1,24 @@
name: Compress Images
on:
pull_request:
paths:
- '**.jpg'
- '**.jpeg'
- '**.png'
- '**.webp'
jobs:
build:
# Only run on Pull Requests within the same repository, and not from forks.
if: github.event.pull_request.head.repo.full_name == github.repository
name: calibreapp/image-actions
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v3
- name: Compress Images
uses: calibreapp/image-actions@1.1.0
with:
githubToken: ${{ secrets.GITHUB_TOKEN }}
+8 -7
View File
@@ -14,24 +14,25 @@ on:
- "!dependabot/**"
schedule:
- cron: "0 2 * * 5"
workflow_dispatch:
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
uses: github/codeql-action/init@v2
with:
languages: "javascript"
- name: Autobuild
uses: github/codeql-action/autobuild@v1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
uses: github/codeql-action/analyze@v2
+28
View File
@@ -0,0 +1,28 @@
name: cspell
on:
push:
branches-ignore:
- "dependabot/**"
pull_request:
workflow_dispatch:
env:
FORCE_COLOR: 2
NODE: 16
jobs:
cspell:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Run cspell
uses: streetsidesoftware/cspell-action@v2
with:
config: ".cspell.json"
files: "**/*.md"
inline: error
incremental_files_only: false
+4 -3
View File
@@ -5,10 +5,11 @@ on:
branches-ignore:
- "dependabot/**"
pull_request:
workflow_dispatch:
env:
FORCE_COLOR: 2
NODE: 14
NODE: 16
jobs:
css:
@@ -16,10 +17,10 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v3
with:
node-version: "${{ env.NODE }}"
cache: npm
+17 -5
View File
@@ -5,10 +5,11 @@ on:
branches-ignore:
- "dependabot/**"
pull_request:
workflow_dispatch:
env:
FORCE_COLOR: 2
NODE: 14
NODE: 16
jobs:
docs:
@@ -16,10 +17,10 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v3
with:
node-version: "${{ env.NODE }}"
cache: npm
@@ -29,5 +30,16 @@ jobs:
- name: Install npm dependencies
run: npm ci
- name: Test docs
run: npm run docs
- name: Build docs
run: npm run docs-build
- name: Validate HTML
run: npm run docs-vnu
- name: Run linkinator
uses: JustinBeckwith/linkinator-action@v1
with:
paths: _site
recurse: true
verbosity: error
skip: "^(?!http://localhost)"
+19
View File
@@ -0,0 +1,19 @@
name: Close Issue Awaiting Reply
on:
schedule:
- cron: "0 0 * * *"
jobs:
issue-close-require:
runs-on: ubuntu-latest
if: github.repository == 'twbs/bootstrap'
steps:
- name: awaiting reply
uses: actions-cool/issues-helper@v3
with:
actions: "close-issues"
labels: "awaiting-reply"
inactive-day: 14
body: |
As the issue was labeled with `awaiting-reply`, but there has been no response in 14 days, this issue will be closed. If you have any questions, you can comment/reply.
+19
View File
@@ -0,0 +1,19 @@
name: Issue Labeled
on:
issues:
types: [labeled]
jobs:
issue-labeled:
if: github.repository == 'twbs/bootstrap'
runs-on: ubuntu-latest
steps:
- name: awaiting reply
if: github.event.label.name == 'needs-example'
uses: actions-cool/issues-helper@v3
with:
actions: "create-comment"
token: ${{ secrets.GITHUB_TOKEN }}
body: |
Hello @${{ github.event.issue.user.login }}. Bug reports must include a **live demo** of the issue. Per our [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md), please create a reduced test case on [CodePen](https://codepen.io/) or [StackBlitz](https://stackblitz.com/) and report back with your link, Bootstrap version, and specific browser and Operating System details.
+6 -10
View File
@@ -5,28 +5,25 @@ on:
branches-ignore:
- "dependabot/**"
pull_request:
workflow_dispatch:
env:
FORCE_COLOR: 2
NODE: 16
jobs:
run:
name: Node ${{ matrix.node }}
name: JS Tests
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node: [12, 14, 16]
steps:
- name: Clone repository
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
node-version: ${{ env.NODE }}
cache: npm
- name: Install npm dependencies
@@ -40,7 +37,6 @@ jobs:
- name: Run Coveralls
uses: coverallsapp/github-action@1.1.3
if: matrix.node == 14
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
path-to-lcov: "./js/coverage/lcov.info"
+4 -3
View File
@@ -5,10 +5,11 @@ on:
branches-ignore:
- "dependabot/**"
pull_request:
workflow_dispatch:
env:
FORCE_COLOR: 2
NODE: 14
NODE: 16
jobs:
lint:
@@ -16,10 +17,10 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v3
with:
node-version: "${{ env.NODE }}"
cache: npm
+4 -3
View File
@@ -5,10 +5,11 @@ on:
branches-ignore:
- "dependabot/**"
pull_request:
workflow_dispatch:
env:
FORCE_COLOR: 2
NODE: 14
NODE: 16
jobs:
css:
@@ -16,10 +17,10 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v3
with:
node-version: "${{ env.NODE }}"
+1
View File
@@ -4,6 +4,7 @@ on:
push:
branches:
- main
workflow_dispatch:
jobs:
update_release_draft:
+2 -1
View File
@@ -1,7 +1,8 @@
# Ignore docs files
/_site/
# Hugo resources folder
# Hugo files
/resources/
/.hugo_build.lock
# Numerous always-ignore extensions
*.diff
+1 -1
View File
@@ -1,6 +1,6 @@
{
"extends": [
"stylelint-config-twbs-bootstrap/scss"
"stylelint-config-twbs-bootstrap"
],
"rules": {
"declaration-property-value-disallowed-list": {
+109 -20
View File
@@ -2,42 +2,131 @@
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
Examples of behavior that contributes to a positive environment for our
community include:
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior by participants include:
Examples of unacceptable behavior include:
- The use of sexualized language or imagery and unwelcome sexual attention or advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
* The use of sexualized language or imagery, and sexual attention or advances of
any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
## Enforcement Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at mdo@getbootstrap.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
mdo@getbootstrap.com.
All complaints will be reviewed and investigated promptly and fairly.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series of
actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within the
community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 1.4, available at <https://www.contributor-covenant.org/version/1/4/code-of-conduct/>
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations
+2 -2
View File
@@ -1,7 +1,7 @@
The MIT License (MIT)
Copyright (c) 2011-2021 Twitter, Inc.
Copyright (c) 2011-2021 The Bootstrap Authors
Copyright (c) 2011-2022 Twitter, Inc.
Copyright (c) 2011-2022 The Bootstrap Authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+75 -68
View File
@@ -1,6 +1,6 @@
<p align="center">
<a href="https://getbootstrap.com/">
<img src="https://getbootstrap.com/docs/5.1/assets/brand/bootstrap-logo-shadow.png" alt="Bootstrap logo" width="200" height="165">
<img src="https://getbootstrap.com/docs/5.2/assets/brand/bootstrap-logo-shadow.png" alt="Bootstrap logo" width="200" height="165">
</a>
</p>
@@ -9,12 +9,12 @@
<p align="center">
Sleek, intuitive, and powerful front-end framework for faster and easier web development.
<br>
<a href="https://getbootstrap.com/docs/5.1/"><strong>Explore Bootstrap docs »</strong></a>
<a href="https://getbootstrap.com/docs/5.2/"><strong>Explore Bootstrap docs »</strong></a>
<br>
<br>
<a href="https://github.com/twbs/bootstrap/issues/new?template=bug_report.md">Report bug</a>
<a href="https://github.com/twbs/bootstrap/issues/new?assignees=-&labels=bug&template=bug_report.yml">Report bug</a>
·
<a href="https://github.com/twbs/bootstrap/issues/new?template=feature_request.md">Request feature</a>
<a href="https://github.com/twbs/bootstrap/issues/new?assignees=&labels=feature&template=feature_request.yml">Request feature</a>
·
<a href="https://themes.getbootstrap.com/">Themes</a>
·
@@ -46,27 +46,24 @@ Our default branch is for development of our Bootstrap 5 release. Head to the [`
Several quick start options are available:
- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.1.1.zip)
- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.2.2.zip)
- Clone the repo: `git clone https://github.com/twbs/bootstrap.git`
- Install with [npm](https://www.npmjs.com/): `npm install bootstrap`
- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap`
- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.1.1`
- Install with [npm](https://www.npmjs.com/): `npm install bootstrap@v5.2.2`
- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap@v5.2.2`
- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.2.2`
- Install with [NuGet](https://www.nuget.org/): CSS: `Install-Package bootstrap` Sass: `Install-Package bootstrap.sass`
Read the [Getting started page](https://getbootstrap.com/docs/5.1/getting-started/introduction/) for information on the framework contents, templates and examples, and more.
Read the [Getting started page](https://getbootstrap.com/docs/5.2/getting-started/introduction/) for information on the framework contents, templates, examples, and more.
## Status
[![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com/)
[![Build Status](https://img.shields.io/github/workflow/status/twbs/bootstrap/JS%20Tests/main?label=JS%20Tests&logo=github)](https://github.com/twbs/bootstrap/actions?query=workflow%3AJS+Tests+branch%3Amain)
[![npm version](https://img.shields.io/npm/v/bootstrap)](https://www.npmjs.com/package/bootstrap)
[![Gem version](https://img.shields.io/gem/v/bootstrap)](https://rubygems.org/gems/bootstrap)
[![Meteor Atmosphere](https://img.shields.io/badge/meteor-twbs%3Abootstrap-blue)](https://atmospherejs.com/twbs/bootstrap)
[![Packagist Prerelease](https://img.shields.io/packagist/vpre/twbs/bootstrap)](https://packagist.org/packages/twbs/bootstrap)
[![NuGet](https://img.shields.io/nuget/vpre/bootstrap)](https://www.nuget.org/packages/bootstrap/absoluteLatest)
[![peerDependencies Status](https://img.shields.io/david/peer/twbs/bootstrap)](https://david-dm.org/twbs/bootstrap?type=peer)
[![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap)](https://david-dm.org/twbs/bootstrap?type=dev)
[![Coverage Status](https://img.shields.io/coveralls/github/twbs/bootstrap/main)](https://coveralls.io/github/twbs/bootstrap?branch=main)
[![CSS gzip size](https://img.badgesize.io/twbs/bootstrap/main/dist/css/bootstrap.min.css?compression=gzip&label=CSS%20gzip%20size)](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css)
[![CSS Brotli size](https://img.badgesize.io/twbs/bootstrap/main/dist/css/bootstrap.min.css?compression=brotli&label=CSS%20Brotli%20size)](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css)
@@ -79,71 +76,75 @@ Read the [Getting started page](https://getbootstrap.com/docs/5.1/getting-starte
## What's included
Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this:
Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations.
```text
bootstrap/
├── css/
│ ├── bootstrap-grid.css
│ ├── bootstrap-grid.css.map
│ ├── bootstrap-grid.min.css
│ ├── bootstrap-grid.min.css.map
│ ├── bootstrap-grid.rtl.css
│ ├── bootstrap-grid.rtl.css.map
│ ├── bootstrap-grid.rtl.min.css
│ ├── bootstrap-grid.rtl.min.css.map
│ ├── bootstrap-reboot.css
│ ├── bootstrap-reboot.css.map
│ ├── bootstrap-reboot.min.css
│ ├── bootstrap-reboot.min.css.map
│ ├── bootstrap-reboot.rtl.css
│ ├── bootstrap-reboot.rtl.css.map
│ ├── bootstrap-reboot.rtl.min.css
│ ├── bootstrap-reboot.rtl.min.css.map
│ ├── bootstrap-utilities.css
│ ├── bootstrap-utilities.css.map
│ ├── bootstrap-utilities.min.css
│ ├── bootstrap-utilities.min.css.map
│ ├── bootstrap-utilities.rtl.css
│ ├── bootstrap-utilities.rtl.css.map
│ ├── bootstrap-utilities.rtl.min.css
│ ├── bootstrap-utilities.rtl.min.css.map
│ ├── bootstrap.css
│ ├── bootstrap.css.map
│ ├── bootstrap.min.css
│ ├── bootstrap.min.css.map
│ ├── bootstrap.rtl.css
│ ├── bootstrap.rtl.css.map
│ ├── bootstrap.rtl.min.css
│ └── bootstrap.rtl.min.css.map
└── js/
├── bootstrap.bundle.js
├── bootstrap.bundle.js.map
├── bootstrap.bundle.min.js
├── bootstrap.bundle.min.js.map
├── bootstrap.esm.js
├── bootstrap.esm.js.map
├── bootstrap.esm.min.js
├── bootstrap.esm.min.js.map
├── bootstrap.js
├── bootstrap.js.map
├── bootstrap.min.js
└── bootstrap.min.js.map
```
<details>
<summary>Download contents</summary>
We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). [source maps](https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Bundled JS files (`bootstrap.bundle.js` and minified `bootstrap.bundle.min.js`) include [Popper](https://popper.js.org/).
```text
bootstrap/
├── css/
│ ├── bootstrap-grid.css
│ ├── bootstrap-grid.css.map
│ ├── bootstrap-grid.min.css
│ ├── bootstrap-grid.min.css.map
│ ├── bootstrap-grid.rtl.css
│ ├── bootstrap-grid.rtl.css.map
│ ├── bootstrap-grid.rtl.min.css
│ ├── bootstrap-grid.rtl.min.css.map
│ ├── bootstrap-reboot.css
│ ├── bootstrap-reboot.css.map
│ ├── bootstrap-reboot.min.css
│ ├── bootstrap-reboot.min.css.map
│ ├── bootstrap-reboot.rtl.css
│ ├── bootstrap-reboot.rtl.css.map
│ ├── bootstrap-reboot.rtl.min.css
│ ├── bootstrap-reboot.rtl.min.css.map
│ ├── bootstrap-utilities.css
│ ├── bootstrap-utilities.css.map
│ ├── bootstrap-utilities.min.css
│ ├── bootstrap-utilities.min.css.map
│ ├── bootstrap-utilities.rtl.css
│ ├── bootstrap-utilities.rtl.css.map
│ ├── bootstrap-utilities.rtl.min.css
│ ├── bootstrap-utilities.rtl.min.css.map
│ ├── bootstrap.css
│ ├── bootstrap.css.map
│ ├── bootstrap.min.css
│ ├── bootstrap.min.css.map
│ ├── bootstrap.rtl.css
│ ├── bootstrap.rtl.css.map
│ ├── bootstrap.rtl.min.css
│ └── bootstrap.rtl.min.css.map
└── js/
├── bootstrap.bundle.js
├── bootstrap.bundle.js.map
├── bootstrap.bundle.min.js
├── bootstrap.bundle.min.js.map
├── bootstrap.esm.js
├── bootstrap.esm.js.map
├── bootstrap.esm.min.js
├── bootstrap.esm.min.js.map
├── bootstrap.js
├── bootstrap.js.map
├── bootstrap.min.js
└── bootstrap.min.js.map
```
</details>
We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). [Source maps](https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Bundled JS files (`bootstrap.bundle.js` and minified `bootstrap.bundle.min.js`) include [Popper](https://popper.js.org/).
## Bugs and feature requests
Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new).
Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new/choose).
## Documentation
Bootstrap's documentation, included in this repo in the root directory, is built with [Hugo](https://gohugo.io/) and publicly hosted on GitHub Pages at <https://getbootstrap.com/>. The docs may also be run locally.
Documentation search is powered by [Algolia's DocSearch](https://community.algolia.com/docsearch/). Working on our search? Be sure to set `debug: true` in `site/assets/js/search.js`.
Documentation search is powered by [Algolia's DocSearch](https://docsearch.algolia.com/). Working on our search? Be sure to set `debug: true` in `site/assets/js/search.js`.
### Running documentation locally
@@ -176,7 +177,7 @@ Get updates on Bootstrap's development and chat with the project maintainers and
- Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap).
- Read and subscribe to [The Official Bootstrap Blog](https://blog.getbootstrap.com/).
- Join [the official Slack room](https://bootstrap-slack.herokuapp.com/).
- Ask and explore [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions).
- 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 which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability.
@@ -205,11 +206,17 @@ See [the Releases section of our GitHub project](https://github.com/twbs/bootstr
## Thanks
<a href="https://www.browserstack.com/">
<img src="https://live.browserstack.com/images/opensource/browserstack-logo.svg" alt="BrowserStack Logo" width="192" height="42">
<img src="https://live.browserstack.com/images/opensource/browserstack-logo.svg" alt="BrowserStack" width="192" height="42">
</a>
Thanks to [BrowserStack](https://www.browserstack.com/) for providing the infrastructure that allows us to test in real browsers!
<a href="https://www.netlify.com/">
<img src="https://www.netlify.com/v3/img/components/full-logo-light.svg" alt="Netlify" width="147" height="40">
</a>
Thanks to [Netlify](https://www.netlify.com/) for providing us with Deploy Previews!
## Sponsors
@@ -236,4 +243,4 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com
## Copyright and license
Code and documentation copyright 20112021 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors) and [Twitter, Inc.](https://twitter.com) Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/).
Code and documentation copyright 20112022 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors) and [Twitter, Inc.](https://twitter.com) Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/).
+2 -1
View File
@@ -9,6 +9,7 @@
"extends": "../.eslintrc.json",
"rules": {
"no-console": "off",
"strict": "error"
"strict": "error",
"unicorn/prefer-top-level-await": "off"
}
}
+70 -148
View File
@@ -2,181 +2,103 @@
/*!
* Script to build our plugins to use them separately.
* Copyright 2020-2021 The Bootstrap Authors
* Copyright 2020-2021 Twitter, Inc.
* Copyright 2020-2022 The Bootstrap Authors
* Copyright 2020-2022 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
'use strict'
const path = require('path')
const path = require('node:path')
const rollup = require('rollup')
const globby = require('globby')
const { babel } = require('@rollup/plugin-babel')
const banner = require('./banner.js')
const rootPath = path.resolve(__dirname, '../js/dist/')
const plugins = [
babel({
// Only transpile our source code
exclude: 'node_modules/**',
// Include the helpers in each file, at most one copy of each
babelHelpers: 'bundled'
const sourcePath = path.resolve(__dirname, '../js/src/').replace(/\\/g, '/')
const jsFiles = globby.sync(sourcePath + '/**/*.js')
// Array which holds the resolved plugins
const resolvedPlugins = []
// Trims the "js" extension and uppercases => first letter, hyphens, backslashes & slashes
const filenameToEntity = filename => filename.replace('.js', '')
.replace(/(?:^|-|\/|\\)[a-z]/g, str => str.slice(-1).toUpperCase())
for (const file of jsFiles) {
resolvedPlugins.push({
src: file.replace('.js', ''),
dist: file.replace('src', 'dist'),
fileName: path.basename(file),
className: filenameToEntity(path.basename(file))
// safeClassName: filenameToEntity(path.relative(sourcePath, file))
})
]
const bsPlugins = {
Data: path.resolve(__dirname, '../js/src/dom/data.js'),
EventHandler: path.resolve(__dirname, '../js/src/dom/event-handler.js'),
Manipulator: path.resolve(__dirname, '../js/src/dom/manipulator.js'),
SelectorEngine: path.resolve(__dirname, '../js/src/dom/selector-engine.js'),
Alert: path.resolve(__dirname, '../js/src/alert.js'),
Base: path.resolve(__dirname, '../js/src/base-component.js'),
Button: path.resolve(__dirname, '../js/src/button.js'),
Carousel: path.resolve(__dirname, '../js/src/carousel.js'),
Collapse: path.resolve(__dirname, '../js/src/collapse.js'),
Dropdown: path.resolve(__dirname, '../js/src/dropdown.js'),
Modal: path.resolve(__dirname, '../js/src/modal.js'),
Offcanvas: path.resolve(__dirname, '../js/src/offcanvas.js'),
Popover: path.resolve(__dirname, '../js/src/popover.js'),
ScrollSpy: path.resolve(__dirname, '../js/src/scrollspy.js'),
Tab: path.resolve(__dirname, '../js/src/tab.js'),
Toast: path.resolve(__dirname, '../js/src/toast.js'),
Tooltip: path.resolve(__dirname, '../js/src/tooltip.js')
}
const defaultPluginConfig = {
external: [
bsPlugins.Data,
bsPlugins.Base,
bsPlugins.EventHandler,
bsPlugins.SelectorEngine
],
globals: {
[bsPlugins.Data]: 'Data',
[bsPlugins.Base]: 'Base',
[bsPlugins.EventHandler]: 'EventHandler',
[bsPlugins.SelectorEngine]: 'SelectorEngine'
}
}
const getConfigByPluginKey = pluginKey => {
switch (pluginKey) {
case 'Alert':
case 'Offcanvas':
case 'Tab':
return defaultPluginConfig
case 'Base':
case 'Button':
case 'Carousel':
case 'Collapse':
case 'Modal':
case 'ScrollSpy': {
const config = Object.assign(defaultPluginConfig)
config.external.push(bsPlugins.Manipulator)
config.globals[bsPlugins.Manipulator] = 'Manipulator'
return config
}
case 'Dropdown':
case 'Tooltip': {
const config = Object.assign(defaultPluginConfig)
config.external.push(bsPlugins.Manipulator, '@popperjs/core')
config.globals[bsPlugins.Manipulator] = 'Manipulator'
config.globals['@popperjs/core'] = 'Popper'
return config
}
case 'Popover':
return {
external: [
bsPlugins.Data,
bsPlugins.SelectorEngine,
bsPlugins.Tooltip
],
globals: {
[bsPlugins.Data]: 'Data',
[bsPlugins.SelectorEngine]: 'SelectorEngine',
[bsPlugins.Tooltip]: 'Tooltip'
}
}
case 'Toast':
return {
external: [
bsPlugins.Data,
bsPlugins.Base,
bsPlugins.EventHandler,
bsPlugins.Manipulator
],
globals: {
[bsPlugins.Data]: 'Data',
[bsPlugins.Base]: 'Base',
[bsPlugins.EventHandler]: 'EventHandler',
[bsPlugins.Manipulator]: 'Manipulator'
}
}
default:
return {
external: []
}
}
}
const utilObjects = new Set([
'Util',
'Sanitizer',
'Backdrop'
])
const domObjects = new Set([
'Data',
'EventHandler',
'Manipulator',
'SelectorEngine'
])
const build = async plugin => {
console.log(`Building ${plugin} plugin...`)
const { external, globals } = getConfigByPluginKey(plugin)
const pluginFilename = path.basename(bsPlugins[plugin])
let pluginPath = rootPath
if (utilObjects.has(plugin)) {
pluginPath = `${rootPath}/util/`
}
if (domObjects.has(plugin)) {
pluginPath = `${rootPath}/dom/`
}
const globals = {}
const bundle = await rollup.rollup({
input: bsPlugins[plugin],
plugins,
external
input: plugin.src,
plugins: [
babel({
// Only transpile our source code
exclude: 'node_modules/**',
// Include the helpers in each file, at most one copy of each
babelHelpers: 'bundled'
})
],
external(source) {
// Pattern to identify local files
const pattern = /^(\.{1,2})\//
// It's not a local file, e.g a Node.js package
if (!pattern.test(source)) {
globals[source] = source
return true
}
const usedPlugin = resolvedPlugins.find(plugin => {
return plugin.src.includes(source.replace(pattern, ''))
})
if (!usedPlugin) {
throw new Error(`Source ${source} is not mapped!`)
}
// We can change `Index` with `UtilIndex` etc if we use
// `safeClassName` instead of `className` everywhere
globals[path.normalize(usedPlugin.src)] = usedPlugin.className
return true
}
})
await bundle.write({
banner: banner(pluginFilename),
banner: banner(plugin.fileName),
format: 'umd',
name: plugin,
name: plugin.className,
sourcemap: true,
globals,
file: path.resolve(__dirname, `${pluginPath}/${pluginFilename}`)
generatedCode: 'es2015',
file: plugin.dist
})
console.log(`Building ${plugin} plugin... Done!`)
console.log(`Built ${plugin.className}`)
}
const main = async () => {
(async () => {
try {
await Promise.all(Object.keys(bsPlugins).map(plugin => build(plugin)))
const basename = path.basename(__filename)
const timeLabel = `[${basename}] finished`
console.log('Building individual plugins...')
console.time(timeLabel)
await Promise.all(Object.values(resolvedPlugins).map(plugin => build(plugin)))
console.timeEnd(timeLabel)
} catch (error) {
console.error(error)
process.exit(1)
}
}
main()
})()
+6 -6
View File
@@ -2,15 +2,15 @@
/*!
* Script to update version number references in the project.
* Copyright 2017-2021 The Bootstrap Authors
* Copyright 2017-2021 Twitter, Inc.
* Copyright 2017-2022 The Bootstrap Authors
* Copyright 2017-2022 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
'use strict'
const fs = require('fs').promises
const path = require('path')
const fs = require('node:fs').promises
const path = require('node:path')
const globby = require('globby')
const VERBOSE = process.argv.includes('--verbose')
@@ -57,7 +57,7 @@ async function replaceRecursively(file, oldVersion, newVersion) {
}
async function main(args) {
const [oldVersion, newVersion] = args
let [oldVersion, newVersion] = args
if (!oldVersion || !newVersion) {
console.error('USAGE: change-version old_version new_version [--verbose] [--dry[-run]]')
@@ -66,7 +66,7 @@ async function main(args) {
}
// Strip any leading `v` from arguments because otherwise we will end up with duplicate `v`s
[oldVersion, newVersion].map(arg => arg.startsWith('v') ? arg.slice(1) : arg)
[oldVersion, newVersion] = [oldVersion, newVersion].map(arg => arg.startsWith('v') ? arg.slice(1) : arg)
try {
const files = await globby(GLOB, GLOBBY_OPTIONS)
+10 -10
View File
@@ -5,16 +5,16 @@
* Remember to use the same vendor files as the CDN ones,
* otherwise the hashes won't match!
*
* Copyright 2017-2021 The Bootstrap Authors
* Copyright 2017-2021 Twitter, Inc.
* Copyright 2017-2022 The Bootstrap Authors
* Copyright 2017-2022 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
'use strict'
const crypto = require('crypto')
const fs = require('fs')
const path = require('path')
const crypto = require('node:crypto')
const fs = require('node:fs')
const path = require('node:path')
const sh = require('shelljs')
sh.config.fatal = true
@@ -47,10 +47,10 @@ const files = [
}
]
files.forEach(file => {
fs.readFile(file.file, 'utf8', (err, data) => {
if (err) {
throw err
for (const file of files) {
fs.readFile(file.file, 'utf8', (error, data) => {
if (error) {
throw error
}
const algo = 'sha384'
@@ -61,4 +61,4 @@ files.forEach(file => {
sh.sed('-i', new RegExp(`^(\\s+${file.configPropertyName}:\\s+["'])\\S*(["'])`), `$1${integrity}$2`, configFile)
})
})
}
+9 -9
View File
@@ -1,19 +1,19 @@
'use strict'
module.exports = ctx => {
const mapConfig = {
inline: false,
annotation: true,
sourcesContent: true
}
module.exports = context => {
return {
map: ctx.file.dirname.includes('examples') ?
false :
{
inline: false,
annotation: true,
sourcesContent: true
},
map: context.file.dirname.includes('examples') ? false : mapConfig,
plugins: {
autoprefixer: {
cascade: false
},
rtlcss: ctx.env === 'RTL' ? {} : false
rtlcss: context.env === 'RTL'
}
}
}
+6 -5
View File
@@ -1,6 +1,6 @@
'use strict'
const path = require('path')
const path = require('node:path')
const { babel } = require('@rollup/plugin-babel')
const { nodeResolve } = require('@rollup/plugin-node-resolve')
const replace = require('@rollup/plugin-replace')
@@ -9,7 +9,7 @@ const banner = require('./banner.js')
const BUNDLE = process.env.BUNDLE === 'true'
const ESM = process.env.ESM === 'true'
let fileDest = `bootstrap${ESM ? '.esm' : ''}`
let fileDestination = `bootstrap${ESM ? '.esm' : ''}`
const external = ['@popperjs/core']
const plugins = [
babel({
@@ -24,7 +24,7 @@ const globals = {
}
if (BUNDLE) {
fileDest += '.bundle'
fileDestination += '.bundle'
// Remove last entry in external array to bundle Popper
external.pop()
delete globals['@popperjs/core']
@@ -41,9 +41,10 @@ const rollupConfig = {
input: path.resolve(__dirname, `../js/index.${ESM ? 'esm' : 'umd'}.js`),
output: {
banner,
file: path.resolve(__dirname, `../dist/js/${fileDest}.js`),
file: path.resolve(__dirname, `../dist/js/${fileDestination}.js`),
format: ESM ? 'esm' : 'umd',
globals
globals,
generatedCode: 'es2015'
},
external,
plugins
-59
View File
@@ -1,59 +0,0 @@
# Usage:
# install svgo globally: `npm i -g svgo`
# svgo --config=build/svgo.yml --input=foo.svg
# https://github.com/svg/svgo/blob/master/docs/how-it-works/en.md
# replace default config
multipass: true
#full: true
# https://github.com/svg/svgo/blob/master/lib/svgo/js2svg.js#L6 for more config options
js2svg:
pretty: true
indent: 2
plugins:
# - addAttributesToSVGElement:
# attributes:
# - focusable: false
- cleanupAttrs: true
- cleanupEnableBackground: true
- cleanupIDs: true
- cleanupListOfValues: true
- cleanupNumericValues: true
- collapseGroups: true
- convertColors: true
- convertPathData: true
- convertShapeToPath: true
- convertStyleToAttrs: true
- convertTransform: true
- inlineStyles: true
- mergePaths: true
- minifyStyles: true
- moveElemsAttrsToGroup: true
- moveGroupAttrsToElems: true
- removeAttrs:
attrs:
- "data-name"
- removeComments: true
- removeDesc: true
- removeDoctype: true
- removeEditorsNSData: true
- removeEmptyAttrs: true
- removeEmptyContainers: true
- removeEmptyText: true
- removeHiddenElems: true
- removeMetadata: true
- removeNonInheritableGroupAttrs: true
- removeTitle: false
- removeUnknownsAndDefaults:
keepRoleAttr: true
- removeUnusedNS: true
- removeUselessDefs: true
- removeUselessStrokeAndFill: true
- removeViewBox: false
- removeXMLNS: false
- removeXMLProcInst: true
- sortAttrs: true
+3 -3
View File
@@ -2,14 +2,14 @@
/*!
* Script to run vnu-jar if Java is available.
* Copyright 2017-2021 The Bootstrap Authors
* Copyright 2017-2021 Twitter, Inc.
* Copyright 2017-2022 The Bootstrap Authors
* Copyright 2017-2022 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
'use strict'
const { execFile, spawn } = require('child_process')
const { execFile, spawn } = require('node:child_process')
const vnu = require('vnu-jar')
execFile('java', ['-version'], (error, stdout, stderr) => {
+10 -10
View File
@@ -3,13 +3,13 @@
/*!
* Script to create the built examples zip archive;
* requires the `zip` command to be present!
* Copyright 2020-2021 The Bootstrap Authors
* Copyright 2020-2022 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
'use strict'
const path = require('path')
const path = require('node:path')
const sh = require('shelljs')
const pkg = require('../package.json')
@@ -57,22 +57,22 @@ sh.mkdir('-p', [
sh.cp('-Rf', `${docsDir}/examples/*`, distFolder)
cssFiles.forEach(file => {
for (const file of cssFiles) {
sh.cp('-f', `${docsDir}/dist/css/${file}`, `${distFolder}/assets/dist/css/`)
})
}
jsFiles.forEach(file => {
for (const file of jsFiles) {
sh.cp('-f', `${docsDir}/dist/js/${file}`, `${distFolder}/assets/dist/js/`)
})
}
imgFiles.forEach(file => {
for (const file of imgFiles) {
sh.cp('-f', `${docsDir}/assets/brand/${file}`, `${distFolder}/assets/brand/`)
})
}
sh.rm(`${distFolder}/index.html`)
// get all examples' HTML files
sh.find(`${distFolder}/**/*.html`).forEach(file => {
for (const file of sh.find(`${distFolder}/**/*.html`)) {
const fileContents = sh.cat(file)
.toString()
.replace(new RegExp(`"/docs/${versionShort}/`, 'g'), '"../')
@@ -81,7 +81,7 @@ sh.find(`${distFolder}/**/*.html`).forEach(file => {
.replace(/(<script src="\.\.\/.*) integrity=".*>/g, '$1></script>')
.replace(/( +)<!-- favicons(.|\n)+<style>/i, ' <style>')
new sh.ShellString(fileContents).to(file)
})
}
// create the zip file
sh.exec(`zip -r9 "${distFolder}.zip" "${distFolder}"`)
+34 -25
View File
@@ -1,7 +1,13 @@
languageCode: "en"
title: "Bootstrap"
baseURL: "https://getbootstrap.com"
enableInlineShortcodes: true
security:
enableInlineShortcodes: true
funcs:
getenv:
- ^HUGO_
- NETLIFY
markup:
goldmark:
@@ -25,7 +31,7 @@ publishDir: "_site"
module:
mounts:
- source: dist
target: static/docs/5.1/dist
target: static/docs/5.2/dist
- source: site/assets
target: assets
- source: site/content
@@ -36,44 +42,47 @@ module:
target: layouts
- source: site/static
target: static
- source: site/static/docs/5.1/assets/img/favicons/apple-touch-icon.png
- source: site/static/docs/5.2/assets/img/favicons/apple-touch-icon.png
target: static/apple-touch-icon.png
- source: site/static/docs/5.1/assets/img/favicons/favicon.ico
- source: site/static/docs/5.2/assets/img/favicons/favicon.ico
target: static/favicon.ico
params:
description: "The most popular HTML, CSS, and JS library in the world."
subtitle: "The most popular HTML, CSS, and JS library in the world."
description: "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."
authors: "Mark Otto, Jacob Thornton, and Bootstrap contributors"
social_image_path: /docs/5.1/assets/brand/bootstrap-social.png
social_logo_path: /docs/5.1/assets/brand/bootstrap-social-logo.png
current_version: "5.1.1"
current_ruby_version: "5.1.1"
docs_version: "5.1"
rfs_version: "9.0.3"
current_version: "5.2.2"
current_ruby_version: "5.2.2"
docs_version: "5.2"
rfs_version: "v9.0.6"
github_org: "https://github.com/twbs"
repo: "https://github.com/twbs/bootstrap"
twitter: "getbootstrap"
slack: "https://bootstrap-slack.herokuapp.com/"
opencollective: "https://opencollective.com/bootstrap"
blog: "https://blog.getbootstrap.com/"
themes: "https://themes.getbootstrap.com/"
icons: "https://icons.getbootstrap.com/"
swag: "https://cottonbureau.com/people/bootstrap"
download:
source: "https://github.com/twbs/bootstrap/archive/v5.1.1.zip"
dist: "https://github.com/twbs/bootstrap/releases/download/v5.1.1/bootstrap-5.1.1-dist.zip"
dist_examples: "https://github.com/twbs/bootstrap/releases/download/v5.1.1/bootstrap-5.1.1-examples.zip"
source: "https://github.com/twbs/bootstrap/archive/v5.2.2.zip"
dist: "https://github.com/twbs/bootstrap/releases/download/v5.2.2/bootstrap-5.2.2-dist.zip"
dist_examples: "https://github.com/twbs/bootstrap/releases/download/v5.2.2/bootstrap-5.2.2-examples.zip"
cdn:
# See https://www.srihash.org for info on how to generate the hashes
css: "https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css"
css_hash: "sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU"
css_rtl: "https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.rtl.min.css"
css_rtl_hash: "sha384-beJoAY4VI2Q+5IPXjI207/ntOuaz06QYCdpWfWRv4lSFDyUSqsM0W+wiAMr2I185"
js: "https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.min.js"
js_hash: "sha384-skAcpIdS7UcVUC05LJ9Dxay8AXcDYfBJqt1CJ85S/CFujBsIzCIv+l9liuYLaMQ/"
js_bundle: "https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.bundle.min.js"
js_bundle_hash: "sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ"
popper: "https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.3/dist/umd/popper.min.js"
popper_hash: "sha384-W8fXfP3gkOKtndU4JGtKDvXbO53Wy8SZCQHczT5FMiiqmQfUpWbYdTil/SxwZgAN"
css: "https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css"
css_hash: "sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi"
css_rtl: "https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.rtl.min.css"
css_rtl_hash: "sha384-7mQhpDl5nRA5nY9lr8F1st2NbIly/8WqhjTp+0oFxEA/QUuvlbF6M1KXezGBh3Nb"
js: "https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.min.js"
js_hash: "sha384-IDwe1+LCz02ROU9k972gdyvl+AESN10+x7tBKgc9I5HFtuNz0wWnPclzo6p9vxnk"
js_bundle: "https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js"
js_bundle_hash: "sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3"
popper: "https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js"
popper_hash: "sha384-oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3"
anchors:
min: 2
max: 5
+28 -955
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
File diff suppressed because one or more lines are too long
+4 -4
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+28 -955
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+35 -28
View File
@@ -1,9 +1,8 @@
/*!
* Bootstrap Reboot v5.1.1 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Bootstrap Reboot v5.2.2 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors
* Copyright 2011-2022 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
:root {
--bs-blue: #0d6efd;
@@ -16,6 +15,7 @@
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
@@ -48,7 +48,7 @@
--bs-black-rgb: 0, 0, 0;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg-rgb: 255, 255, 255;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
@@ -57,6 +57,20 @@
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-bg: #fff;
--bs-border-width: 1px;
--bs-border-style: solid;
--bs-border-color: #dee2e6;
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
--bs-border-radius: 0.375rem;
--bs-border-radius-sm: 0.25rem;
--bs-border-radius-lg: 0.5rem;
--bs-border-radius-xl: 1rem;
--bs-border-radius-2xl: 2rem;
--bs-border-radius-pill: 50rem;
--bs-link-color: #0d6efd;
--bs-link-hover-color: #0a58ca;
--bs-code-color: #d63384;
--bs-highlight-bg: #fff3cd;
}
*,
@@ -87,15 +101,11 @@ body {
hr {
margin: 1rem 0;
color: inherit;
background-color: currentColor;
border: 0;
border-top: 1px solid;
opacity: 0.25;
}
hr:not([size]) {
height: 1px;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
@@ -152,8 +162,7 @@ p {
margin-bottom: 1rem;
}
abbr[title],
abbr[data-bs-original-title] {
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
@@ -209,8 +218,8 @@ small {
}
mark {
padding: 0.2em;
background-color: #fcf8e3;
padding: 0.1875em;
background-color: var(--bs-highlight-bg);
}
sub,
@@ -230,11 +239,11 @@ sup {
}
a {
color: #0d6efd;
color: var(--bs-link-color);
text-decoration: underline;
}
a:hover {
color: #0a58ca;
color: var(--bs-link-hover-color);
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
@@ -248,8 +257,6 @@ kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
direction: ltr /* rtl:ignore */;
unicode-bidi: bidi-override;
}
pre {
@@ -267,7 +274,7 @@ pre code {
code {
font-size: 0.875em;
color: #d63384;
color: var(--bs-code-color);
word-wrap: break-word;
}
a > code {
@@ -275,16 +282,15 @@ a > code {
}
kbd {
padding: 0.2rem 0.4rem;
padding: 0.1875rem 0.375rem;
font-size: 0.875em;
color: #fff;
background-color: #212529;
border-radius: 0.2rem;
color: var(--bs-body-bg);
background-color: var(--bs-body-color);
border-radius: 0.25rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
font-weight: 700;
}
figure {
@@ -363,8 +369,8 @@ select:disabled {
opacity: 1;
}
[list]::-webkit-calendar-picker-indicator {
display: none;
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
display: none !important;
}
button,
@@ -448,11 +454,12 @@ legend + * {
padding: 0;
}
::file-selector-button {
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
::-webkit-file-upload-button {
::file-selector-button {
font: inherit;
-webkit-appearance: button;
}
+1 -1
View File
File diff suppressed because one or more lines are too long
+4 -5
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+35 -28
View File
@@ -1,9 +1,8 @@
/*!
* Bootstrap Reboot v5.1.1 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Bootstrap Reboot v5.2.2 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors
* Copyright 2011-2022 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
:root {
--bs-blue: #0d6efd;
@@ -16,6 +15,7 @@
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
@@ -48,7 +48,7 @@
--bs-black-rgb: 0, 0, 0;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg-rgb: 255, 255, 255;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
@@ -57,6 +57,20 @@
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-bg: #fff;
--bs-border-width: 1px;
--bs-border-style: solid;
--bs-border-color: #dee2e6;
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
--bs-border-radius: 0.375rem;
--bs-border-radius-sm: 0.25rem;
--bs-border-radius-lg: 0.5rem;
--bs-border-radius-xl: 1rem;
--bs-border-radius-2xl: 2rem;
--bs-border-radius-pill: 50rem;
--bs-link-color: #0d6efd;
--bs-link-hover-color: #0a58ca;
--bs-code-color: #d63384;
--bs-highlight-bg: #fff3cd;
}
*,
@@ -87,15 +101,11 @@ body {
hr {
margin: 1rem 0;
color: inherit;
background-color: currentColor;
border: 0;
border-top: 1px solid;
opacity: 0.25;
}
hr:not([size]) {
height: 1px;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
@@ -152,8 +162,7 @@ p {
margin-bottom: 1rem;
}
abbr[title],
abbr[data-bs-original-title] {
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
@@ -209,8 +218,8 @@ small {
}
mark {
padding: 0.2em;
background-color: #fcf8e3;
padding: 0.1875em;
background-color: var(--bs-highlight-bg);
}
sub,
@@ -230,11 +239,11 @@ sup {
}
a {
color: #0d6efd;
color: var(--bs-link-color);
text-decoration: underline;
}
a:hover {
color: #0a58ca;
color: var(--bs-link-hover-color);
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
@@ -248,8 +257,6 @@ kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
direction: ltr ;
unicode-bidi: bidi-override;
}
pre {
@@ -267,7 +274,7 @@ pre code {
code {
font-size: 0.875em;
color: #d63384;
color: var(--bs-code-color);
word-wrap: break-word;
}
a > code {
@@ -275,16 +282,15 @@ a > code {
}
kbd {
padding: 0.2rem 0.4rem;
padding: 0.1875rem 0.375rem;
font-size: 0.875em;
color: #fff;
background-color: #212529;
border-radius: 0.2rem;
color: var(--bs-body-bg);
background-color: var(--bs-body-color);
border-radius: 0.25rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
font-weight: 700;
}
figure {
@@ -363,8 +369,8 @@ select:disabled {
opacity: 1;
}
[list]::-webkit-calendar-picker-indicator {
display: none;
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
display: none !important;
}
button,
@@ -446,11 +452,12 @@ legend + * {
padding: 0;
}
::file-selector-button {
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
::-webkit-file-upload-button {
::file-selector-button {
font: inherit;
-webkit-appearance: button;
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+287 -956
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+287 -956
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2177 -2519
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
File diff suppressed because one or more lines are too long
+4 -4
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+2175 -2533
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
File diff suppressed because one or more lines are too long
+4 -4
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+2470 -2198
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
File diff suppressed because one or more lines are too long
+3 -3
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2271 -2059
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
File diff suppressed because one or more lines are too long
+3 -3
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+2282 -2072
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
File diff suppressed because one or more lines are too long
+3 -3
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+18 -153
View File
@@ -1,155 +1,27 @@
/*!
* Bootstrap alert.js v5.1.1 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap alert.js v5.2.2 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./base-component.js')) :
typeof define === 'function' && define.amd ? define(['./dom/event-handler', './base-component'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.EventHandler, global.Base));
}(this, (function (EventHandler, BaseComponent) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./util/index'), require('./dom/event-handler'), require('./base-component'), require('./util/component-functions')) :
typeof define === 'function' && define.amd ? define(['./util/index', './dom/event-handler', './base-component', './util/component-functions'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.Index, global.EventHandler, global.BaseComponent, global.ComponentFunctions));
})(this, (function (index, EventHandler, BaseComponent, componentFunctions) { 'use strict';
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.1.1): util/index.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
const getSelector = element => {
let selector = element.getAttribute('data-bs-target');
if (!selector || selector === '#') {
let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
// so everything starting with `#` or `.`. If a "real" URL is used as the selector,
// `document.querySelector` will rightfully complain it is invalid.
// See https://github.com/twbs/bootstrap/issues/32273
if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
return null;
} // Just in case some CMS puts out a full URL with the anchor appended
if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
hrefAttr = `#${hrefAttr.split('#')[1]}`;
}
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
}
return selector;
};
const getElementFromSelector = element => {
const selector = getSelector(element);
return selector ? document.querySelector(selector) : null;
};
const isDisabled = element => {
if (!element || element.nodeType !== Node.ELEMENT_NODE) {
return true;
}
if (element.classList.contains('disabled')) {
return true;
}
if (typeof element.disabled !== 'undefined') {
return element.disabled;
}
return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
};
const getjQuery = () => {
const {
jQuery
} = window;
if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
return jQuery;
}
return null;
};
const DOMContentLoadedCallbacks = [];
const onDOMContentLoaded = callback => {
if (document.readyState === 'loading') {
// add listener on the first call when the document is in loading state
if (!DOMContentLoadedCallbacks.length) {
document.addEventListener('DOMContentLoaded', () => {
DOMContentLoadedCallbacks.forEach(callback => callback());
});
}
DOMContentLoadedCallbacks.push(callback);
} else {
callback();
}
};
const defineJQueryPlugin = plugin => {
onDOMContentLoaded(() => {
const $ = getjQuery();
/* istanbul ignore if */
if ($) {
const name = plugin.NAME;
const JQUERY_NO_CONFLICT = $.fn[name];
$.fn[name] = plugin.jQueryInterface;
$.fn[name].Constructor = plugin;
$.fn[name].noConflict = () => {
$.fn[name] = JQUERY_NO_CONFLICT;
return plugin.jQueryInterface;
};
}
});
};
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.1.1): util/component-functions.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
const enableDismissTrigger = (component, method = 'hide') => {
const clickEvent = `click.dismiss${component.EVENT_KEY}`;
const name = component.NAME;
EventHandler__default['default'].on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
if (['A', 'AREA'].includes(this.tagName)) {
event.preventDefault();
}
if (isDisabled(this)) {
return;
}
const target = getElementFromSelector(this) || this.closest(`.${name}`);
const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
instance[method]();
});
};
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.1.1): alert.js
* Bootstrap (v5.2.2): alert.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
const NAME = 'alert';
@@ -160,12 +32,10 @@
const CLASS_NAME_FADE = 'fade';
const CLASS_NAME_SHOW = 'show';
/**
* ------------------------------------------------------------------------
* Class Definition
* ------------------------------------------------------------------------
* Class definition
*/
class Alert extends BaseComponent__default['default'] {
class Alert extends BaseComponent__default.default {
// Getters
static get NAME() {
return NAME;
@@ -173,7 +43,7 @@
close() {
const closeEvent = EventHandler__default['default'].trigger(this._element, EVENT_CLOSE);
const closeEvent = EventHandler__default.default.trigger(this._element, EVENT_CLOSE);
if (closeEvent.defaultPrevented) {
return;
@@ -190,7 +60,7 @@
_destroyElement() {
this._element.remove();
EventHandler__default['default'].trigger(this._element, EVENT_CLOSED);
EventHandler__default.default.trigger(this._element, EVENT_CLOSED);
this.dispose();
} // Static
@@ -213,23 +83,18 @@
}
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
* Data API implementation
*/
enableDismissTrigger(Alert, 'close');
componentFunctions.enableDismissTrigger(Alert, 'close');
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
* add .Alert to jQuery only if jQuery is present
*/
defineJQueryPlugin(Alert);
index.defineJQueryPlugin(Alert);
return Alert;
})));
}));
//# sourceMappingURL=alert.js.map
+1 -1
View File
File diff suppressed because one or more lines are too long
+44 -127
View File
@@ -1,158 +1,75 @@
/*!
* Bootstrap base-component.js v5.1.1 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap base-component.js v5.2.2 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js')) :
typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Base = factory(global.Data, global.EventHandler));
}(this, (function (Data, EventHandler) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data'), require('./util/index'), require('./dom/event-handler'), require('./util/config')) :
typeof define === 'function' && define.amd ? define(['./dom/data', './util/index', './dom/event-handler', './util/config'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.BaseComponent = factory(global.Data, global.Index, global.EventHandler, global.Config));
})(this, (function (Data, index, EventHandler, Config) { 'use strict';
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
const Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
const Config__default = /*#__PURE__*/_interopDefaultLegacy(Config);
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.1.1): util/index.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
const MILLISECONDS_MULTIPLIER = 1000;
const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
const getTransitionDurationFromElement = element => {
if (!element) {
return 0;
} // Get transition-duration of the element
let {
transitionDuration,
transitionDelay
} = window.getComputedStyle(element);
const floatTransitionDuration = Number.parseFloat(transitionDuration);
const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
if (!floatTransitionDuration && !floatTransitionDelay) {
return 0;
} // If multiple durations are defined, take the first
transitionDuration = transitionDuration.split(',')[0];
transitionDelay = transitionDelay.split(',')[0];
return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
};
const triggerTransitionEnd = element => {
element.dispatchEvent(new Event(TRANSITION_END));
};
const isElement = obj => {
if (!obj || typeof obj !== 'object') {
return false;
}
if (typeof obj.jquery !== 'undefined') {
obj = obj[0];
}
return typeof obj.nodeType !== 'undefined';
};
const getElement = obj => {
if (isElement(obj)) {
// it's a jQuery object or a node element
return obj.jquery ? obj[0] : obj;
}
if (typeof obj === 'string' && obj.length > 0) {
return document.querySelector(obj);
}
return null;
};
const execute = callback => {
if (typeof callback === 'function') {
callback();
}
};
const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
if (!waitForTransition) {
execute(callback);
return;
}
const durationPadding = 5;
const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
let called = false;
const handler = ({
target
}) => {
if (target !== transitionElement) {
return;
}
called = true;
transitionElement.removeEventListener(TRANSITION_END, handler);
execute(callback);
};
transitionElement.addEventListener(TRANSITION_END, handler);
setTimeout(() => {
if (!called) {
triggerTransitionEnd(transitionElement);
}
}, emulatedDuration);
};
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.1.1): base-component.js
* Bootstrap (v5.2.2): base-component.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
const VERSION = '5.1.1';
const VERSION = '5.2.2';
/**
* Class definition
*/
class BaseComponent {
constructor(element) {
element = getElement(element);
class BaseComponent extends Config__default.default {
constructor(element, config) {
super();
element = index.getElement(element);
if (!element) {
return;
}
this._element = element;
Data__default['default'].set(this._element, this.constructor.DATA_KEY, this);
}
this._config = this._getConfig(config);
Data__default.default.set(this._element, this.constructor.DATA_KEY, this);
} // Public
dispose() {
Data__default['default'].remove(this._element, this.constructor.DATA_KEY);
EventHandler__default['default'].off(this._element, this.constructor.EVENT_KEY);
Object.getOwnPropertyNames(this).forEach(propertyName => {
Data__default.default.remove(this._element, this.constructor.DATA_KEY);
EventHandler__default.default.off(this._element, this.constructor.EVENT_KEY);
for (const propertyName of Object.getOwnPropertyNames(this)) {
this[propertyName] = null;
});
}
}
_queueCallback(callback, element, isAnimated = true) {
executeAfterTransition(callback, element, isAnimated);
index.executeAfterTransition(callback, element, isAnimated);
}
/** Static */
_getConfig(config) {
config = this._mergeConfigObj(config, this._element);
config = this._configAfterMerge(config);
this._typeCheckConfig(config);
return config;
} // Static
static getInstance(element) {
return Data__default['default'].get(getElement(element), this.DATA_KEY);
return Data__default.default.get(index.getElement(element), this.DATA_KEY);
}
static getOrCreateInstance(element, config = {}) {
@@ -163,10 +80,6 @@
return VERSION;
}
static get NAME() {
throw new Error('You have to implement the static method "NAME", for each component!');
}
static get DATA_KEY() {
return `bs.${this.NAME}`;
}
@@ -175,9 +88,13 @@
return `.${this.DATA_KEY}`;
}
static eventName(name) {
return `${name}${this.EVENT_KEY}`;
}
}
return BaseComponent;
})));
}));
//# sourceMappingURL=base-component.js.map
+1 -1
View File
File diff suppressed because one or more lines are too long
+16 -80
View File
@@ -1,84 +1,27 @@
/*!
* Bootstrap button.js v5.1.1 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap button.js v5.2.2 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./base-component.js')) :
typeof define === 'function' && define.amd ? define(['./dom/event-handler', './base-component'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.EventHandler, global.Base));
}(this, (function (EventHandler, BaseComponent) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./util/index'), require('./dom/event-handler'), require('./base-component')) :
typeof define === 'function' && define.amd ? define(['./util/index', './dom/event-handler', './base-component'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.Index, global.EventHandler, global.BaseComponent));
})(this, (function (index, EventHandler, BaseComponent) { 'use strict';
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.1.1): util/index.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
const getjQuery = () => {
const {
jQuery
} = window;
if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
return jQuery;
}
return null;
};
const DOMContentLoadedCallbacks = [];
const onDOMContentLoaded = callback => {
if (document.readyState === 'loading') {
// add listener on the first call when the document is in loading state
if (!DOMContentLoadedCallbacks.length) {
document.addEventListener('DOMContentLoaded', () => {
DOMContentLoadedCallbacks.forEach(callback => callback());
});
}
DOMContentLoadedCallbacks.push(callback);
} else {
callback();
}
};
const defineJQueryPlugin = plugin => {
onDOMContentLoaded(() => {
const $ = getjQuery();
/* istanbul ignore if */
if ($) {
const name = plugin.NAME;
const JQUERY_NO_CONFLICT = $.fn[name];
$.fn[name] = plugin.jQueryInterface;
$.fn[name].Constructor = plugin;
$.fn[name].noConflict = () => {
$.fn[name] = JQUERY_NO_CONFLICT;
return plugin.jQueryInterface;
};
}
});
};
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.1.1): button.js
* Bootstrap (v5.2.2): button.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
const NAME = 'button';
@@ -89,12 +32,10 @@
const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="button"]';
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
/**
* ------------------------------------------------------------------------
* Class Definition
* ------------------------------------------------------------------------
* Class definition
*/
class Button extends BaseComponent__default['default'] {
class Button extends BaseComponent__default.default {
// Getters
static get NAME() {
return NAME;
@@ -119,28 +60,23 @@
}
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
* Data API implementation
*/
EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {
EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {
event.preventDefault();
const button = event.target.closest(SELECTOR_DATA_TOGGLE);
const data = Button.getOrCreateInstance(button);
data.toggle();
});
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
* add .Button to jQuery only if jQuery is present
*/
defineJQueryPlugin(Button);
index.defineJQueryPlugin(Button);
return Button;
})));
}));
//# sourceMappingURL=button.js.map
+1 -1
View File
File diff suppressed because one or more lines are too long
+250 -522
View File
@@ -1,203 +1,30 @@
/*!
* Bootstrap carousel.js v5.1.1 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap carousel.js v5.2.2 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) :
typeof define === 'function' && define.amd ? define(['./dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.EventHandler, global.Manipulator, global.SelectorEngine, global.Base));
}(this, (function (EventHandler, Manipulator, SelectorEngine, BaseComponent) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./util/index'), require('./dom/event-handler'), require('./dom/manipulator'), require('./dom/selector-engine'), require('./util/swipe'), require('./base-component')) :
typeof define === 'function' && define.amd ? define(['./util/index', './dom/event-handler', './dom/manipulator', './dom/selector-engine', './util/swipe', './base-component'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.Index, global.EventHandler, global.Manipulator, global.SelectorEngine, global.Swipe, global.BaseComponent));
})(this, (function (index, EventHandler, Manipulator, SelectorEngine, Swipe, BaseComponent) { 'use strict';
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
const Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
const Swipe__default = /*#__PURE__*/_interopDefaultLegacy(Swipe);
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.1.1): util/index.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
const toType = obj => {
if (obj === null || obj === undefined) {
return `${obj}`;
}
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
};
const getSelector = element => {
let selector = element.getAttribute('data-bs-target');
if (!selector || selector === '#') {
let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
// so everything starting with `#` or `.`. If a "real" URL is used as the selector,
// `document.querySelector` will rightfully complain it is invalid.
// See https://github.com/twbs/bootstrap/issues/32273
if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
return null;
} // Just in case some CMS puts out a full URL with the anchor appended
if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
hrefAttr = `#${hrefAttr.split('#')[1]}`;
}
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
}
return selector;
};
const getElementFromSelector = element => {
const selector = getSelector(element);
return selector ? document.querySelector(selector) : null;
};
const triggerTransitionEnd = element => {
element.dispatchEvent(new Event(TRANSITION_END));
};
const isElement = obj => {
if (!obj || typeof obj !== 'object') {
return false;
}
if (typeof obj.jquery !== 'undefined') {
obj = obj[0];
}
return typeof obj.nodeType !== 'undefined';
};
const typeCheckConfig = (componentName, config, configTypes) => {
Object.keys(configTypes).forEach(property => {
const expectedTypes = configTypes[property];
const value = config[property];
const valueType = value && isElement(value) ? 'element' : toType(value);
if (!new RegExp(expectedTypes).test(valueType)) {
throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
}
});
};
const isVisible = element => {
if (!isElement(element) || element.getClientRects().length === 0) {
return false;
}
return getComputedStyle(element).getPropertyValue('visibility') === 'visible';
};
/**
* Trick to restart an element's animation
*
* @param {HTMLElement} element
* @return void
*
* @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
*/
const reflow = element => {
// eslint-disable-next-line no-unused-expressions
element.offsetHeight;
};
const getjQuery = () => {
const {
jQuery
} = window;
if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
return jQuery;
}
return null;
};
const DOMContentLoadedCallbacks = [];
const onDOMContentLoaded = callback => {
if (document.readyState === 'loading') {
// add listener on the first call when the document is in loading state
if (!DOMContentLoadedCallbacks.length) {
document.addEventListener('DOMContentLoaded', () => {
DOMContentLoadedCallbacks.forEach(callback => callback());
});
}
DOMContentLoadedCallbacks.push(callback);
} else {
callback();
}
};
const isRTL = () => document.documentElement.dir === 'rtl';
const defineJQueryPlugin = plugin => {
onDOMContentLoaded(() => {
const $ = getjQuery();
/* istanbul ignore if */
if ($) {
const name = plugin.NAME;
const JQUERY_NO_CONFLICT = $.fn[name];
$.fn[name] = plugin.jQueryInterface;
$.fn[name].Constructor = plugin;
$.fn[name].noConflict = () => {
$.fn[name] = JQUERY_NO_CONFLICT;
return plugin.jQueryInterface;
};
}
});
};
/**
* Return the previous/next element of a list.
*
* @param {array} list The list of elements
* @param activeElement The active element
* @param shouldGetNext Choose to get next or previous element
* @param isCycleAllowed
* @return {Element|elem} The proper element
*/
const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
let index = list.indexOf(activeElement); // if the element does not exist in the list return an element depending on the direction and if cycle is allowed
if (index === -1) {
return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0];
}
const listLength = list.length;
index += shouldGetNext ? 1 : -1;
if (isCycleAllowed) {
index = (index + listLength) % listLength;
}
return list[Math.max(0, Math.min(index, listLength - 1))];
};
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.1.1): carousel.js
* Bootstrap (v5.2.2): carousel.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
const NAME = 'carousel';
@@ -208,41 +35,15 @@
const ARROW_RIGHT_KEY = 'ArrowRight';
const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
const SWIPE_THRESHOLD = 40;
const Default = {
interval: 5000,
keyboard: true,
slide: false,
pause: 'hover',
wrap: true,
touch: true
};
const DefaultType = {
interval: '(number|boolean)',
keyboard: 'boolean',
slide: '(boolean|string)',
pause: '(string|boolean)',
wrap: 'boolean',
touch: 'boolean'
};
const ORDER_NEXT = 'next';
const ORDER_PREV = 'prev';
const DIRECTION_LEFT = 'left';
const DIRECTION_RIGHT = 'right';
const KEY_TO_DIRECTION = {
[ARROW_LEFT_KEY]: DIRECTION_RIGHT,
[ARROW_RIGHT_KEY]: DIRECTION_LEFT
};
const EVENT_SLIDE = `slide${EVENT_KEY}`;
const EVENT_SLID = `slid${EVENT_KEY}`;
const EVENT_KEYDOWN = `keydown${EVENT_KEY}`;
const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`;
const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`;
const EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`;
const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`;
const EVENT_TOUCHEND = `touchend${EVENT_KEY}`;
const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`;
const EVENT_POINTERUP = `pointerup${EVENT_KEY}`;
const EVENT_DRAG_START = `dragstart${EVENT_KEY}`;
const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
@@ -253,41 +54,53 @@
const CLASS_NAME_START = 'carousel-item-start';
const CLASS_NAME_NEXT = 'carousel-item-next';
const CLASS_NAME_PREV = 'carousel-item-prev';
const CLASS_NAME_POINTER_EVENT = 'pointer-event';
const SELECTOR_ACTIVE = '.active';
const SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
const SELECTOR_ITEM = '.carousel-item';
const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
const SELECTOR_ITEM_IMG = '.carousel-item img';
const SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
const SELECTOR_INDICATORS = '.carousel-indicators';
const SELECTOR_INDICATOR = '[data-bs-target]';
const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
const POINTER_TYPE_TOUCH = 'touch';
const POINTER_TYPE_PEN = 'pen';
const KEY_TO_DIRECTION = {
[ARROW_LEFT_KEY]: DIRECTION_RIGHT,
[ARROW_RIGHT_KEY]: DIRECTION_LEFT
};
const Default = {
interval: 5000,
keyboard: true,
pause: 'hover',
ride: false,
touch: true,
wrap: true
};
const DefaultType = {
interval: '(number|boolean)',
// TODO:v6 remove boolean support
keyboard: 'boolean',
pause: '(string|boolean)',
ride: '(boolean|string)',
touch: 'boolean',
wrap: 'boolean'
};
/**
* ------------------------------------------------------------------------
* Class Definition
* ------------------------------------------------------------------------
* Class definition
*/
class Carousel extends BaseComponent__default['default'] {
class Carousel extends BaseComponent__default.default {
constructor(element, config) {
super(element);
this._items = null;
super(element, config);
this._interval = null;
this._activeElement = null;
this._isPaused = false;
this._isSliding = false;
this.touchTimeout = null;
this.touchStartX = 0;
this.touchDeltaX = 0;
this._config = this._getConfig(config);
this._indicatorsElement = SelectorEngine__default['default'].findOne(SELECTOR_INDICATORS, this._element);
this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
this._pointerEvent = Boolean(window.PointerEvent);
this._swipeHelper = null;
this._indicatorsElement = SelectorEngine__default.default.findOne(SELECTOR_INDICATORS, this._element);
this._addEventListeners();
if (this._config.ride === CLASS_NAME_CAROUSEL) {
this.cycle();
}
} // Getters
@@ -295,6 +108,10 @@
return Default;
}
static get DefaultType() {
return DefaultType;
}
static get NAME() {
return NAME;
} // Public
@@ -305,9 +122,10 @@
}
nextWhenVisible() {
// FIXME TODO use `document.visibilityState`
// Don't call next when the page isn't visible
// or the carousel or its parent isn't visible
if (!document.hidden && isVisible(this._element)) {
if (!document.hidden && index.isVisible(this._element)) {
this.next();
}
}
@@ -316,161 +134,119 @@
this._slide(ORDER_PREV);
}
pause(event) {
if (!event) {
this._isPaused = true;
pause() {
if (this._isSliding) {
index.triggerTransitionEnd(this._element);
}
if (SelectorEngine__default['default'].findOne(SELECTOR_NEXT_PREV, this._element)) {
triggerTransitionEnd(this._element);
this.cycle(true);
}
clearInterval(this._interval);
this._interval = null;
this._clearInterval();
}
cycle(event) {
if (!event) {
this._isPaused = false;
}
cycle() {
this._clearInterval();
if (this._interval) {
clearInterval(this._interval);
this._interval = null;
}
this._updateInterval();
if (this._config && this._config.interval && !this._isPaused) {
this._updateInterval();
this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
}
this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);
}
to(index) {
this._activeElement = SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE_ITEM, this._element);
const activeIndex = this._getItemIndex(this._activeElement);
if (index > this._items.length - 1 || index < 0) {
_maybeEnableCycle() {
if (!this._config.ride) {
return;
}
if (this._isSliding) {
EventHandler__default['default'].one(this._element, EVENT_SLID, () => this.to(index));
EventHandler__default.default.one(this._element, EVENT_SLID, () => this.cycle());
return;
}
this.cycle();
}
to(index) {
const items = this._getItems();
if (index > items.length - 1 || index < 0) {
return;
}
if (this._isSliding) {
EventHandler__default.default.one(this._element, EVENT_SLID, () => this.to(index));
return;
}
const activeIndex = this._getItemIndex(this._getActive());
if (activeIndex === index) {
this.pause();
this.cycle();
return;
}
const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
this._slide(order, this._items[index]);
this._slide(order, items[index]);
}
dispose() {
if (this._swipeHelper) {
this._swipeHelper.dispose();
}
super.dispose();
} // Private
_getConfig(config) {
config = { ...Default,
...Manipulator__default['default'].getDataAttributes(this._element),
...(typeof config === 'object' ? config : {})
};
typeCheckConfig(NAME, config, DefaultType);
_configAfterMerge(config) {
config.defaultInterval = config.interval;
return config;
}
_handleSwipe() {
const absDeltax = Math.abs(this.touchDeltaX);
if (absDeltax <= SWIPE_THRESHOLD) {
return;
}
const direction = absDeltax / this.touchDeltaX;
this.touchDeltaX = 0;
if (!direction) {
return;
}
this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT);
}
_addEventListeners() {
if (this._config.keyboard) {
EventHandler__default['default'].on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
EventHandler__default.default.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
}
if (this._config.pause === 'hover') {
EventHandler__default['default'].on(this._element, EVENT_MOUSEENTER, event => this.pause(event));
EventHandler__default['default'].on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event));
EventHandler__default.default.on(this._element, EVENT_MOUSEENTER, () => this.pause());
EventHandler__default.default.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle());
}
if (this._config.touch && this._touchSupported) {
if (this._config.touch && Swipe__default.default.isSupported()) {
this._addTouchEventListeners();
}
}
_addTouchEventListeners() {
const hasPointerPenTouch = event => {
return this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
};
const start = event => {
if (hasPointerPenTouch(event)) {
this.touchStartX = event.clientX;
} else if (!this._pointerEvent) {
this.touchStartX = event.touches[0].clientX;
}
};
const move = event => {
// ensure swiping with one touch and not pinching
this.touchDeltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this.touchStartX;
};
const end = event => {
if (hasPointerPenTouch(event)) {
this.touchDeltaX = event.clientX - this.touchStartX;
}
this._handleSwipe();
if (this._config.pause === 'hover') {
// If it's a touch-enabled device, mouseenter/leave are fired as
// part of the mouse compatibility events on first tap - the carousel
// would stop cycling until user tapped out of it;
// here, we listen for touchend, explicitly pause the carousel
// (as if it's the second time we tap on it, mouseenter compat event
// is NOT fired) and after a timeout (to allow for mouse compatibility
// events to fire) we explicitly restart cycling
this.pause();
if (this.touchTimeout) {
clearTimeout(this.touchTimeout);
}
this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
}
};
SelectorEngine__default['default'].find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {
EventHandler__default['default'].on(itemImg, EVENT_DRAG_START, e => e.preventDefault());
});
if (this._pointerEvent) {
EventHandler__default['default'].on(this._element, EVENT_POINTERDOWN, event => start(event));
EventHandler__default['default'].on(this._element, EVENT_POINTERUP, event => end(event));
this._element.classList.add(CLASS_NAME_POINTER_EVENT);
} else {
EventHandler__default['default'].on(this._element, EVENT_TOUCHSTART, event => start(event));
EventHandler__default['default'].on(this._element, EVENT_TOUCHMOVE, event => move(event));
EventHandler__default['default'].on(this._element, EVENT_TOUCHEND, event => end(event));
for (const img of SelectorEngine__default.default.find(SELECTOR_ITEM_IMG, this._element)) {
EventHandler__default.default.on(img, EVENT_DRAG_START, event => event.preventDefault());
}
const endCallBack = () => {
if (this._config.pause !== 'hover') {
return;
} // If it's a touch-enabled device, mouseenter/leave are fired as
// part of the mouse compatibility events on first tap - the carousel
// would stop cycling until user tapped out of it;
// here, we listen for touchend, explicitly pause the carousel
// (as if it's the second time we tap on it, mouseenter compat event
// is NOT fired) and after a timeout (to allow for mouse compatibility
// events to fire) we explicitly restart cycling
this.pause();
if (this.touchTimeout) {
clearTimeout(this.touchTimeout);
}
this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
};
const swipeConfig = {
leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),
rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),
endCallback: endCallBack
};
this._swipeHelper = new Swipe__default.default(this._element, swipeConfig);
}
_keydown(event) {
@@ -483,95 +259,67 @@
if (direction) {
event.preventDefault();
this._slide(direction);
this._slide(this._directionToOrder(direction));
}
}
_getItemIndex(element) {
this._items = element && element.parentNode ? SelectorEngine__default['default'].find(SELECTOR_ITEM, element.parentNode) : [];
return this._items.indexOf(element);
return this._getItems().indexOf(element);
}
_getItemByOrder(order, activeElement) {
const isNext = order === ORDER_NEXT;
return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap);
}
_setActiveIndicatorElement(index) {
if (!this._indicatorsElement) {
return;
}
_triggerSlideEvent(relatedTarget, eventDirectionName) {
const targetIndex = this._getItemIndex(relatedTarget);
const activeIndicator = SelectorEngine__default.default.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
activeIndicator.classList.remove(CLASS_NAME_ACTIVE);
activeIndicator.removeAttribute('aria-current');
const newActiveIndicator = SelectorEngine__default.default.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement);
const fromIndex = this._getItemIndex(SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE_ITEM, this._element));
return EventHandler__default['default'].trigger(this._element, EVENT_SLIDE, {
relatedTarget,
direction: eventDirectionName,
from: fromIndex,
to: targetIndex
});
}
_setActiveIndicatorElement(element) {
if (this._indicatorsElement) {
const activeIndicator = SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE, this._indicatorsElement);
activeIndicator.classList.remove(CLASS_NAME_ACTIVE);
activeIndicator.removeAttribute('aria-current');
const indicators = SelectorEngine__default['default'].find(SELECTOR_INDICATOR, this._indicatorsElement);
for (let i = 0; i < indicators.length; i++) {
if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {
indicators[i].classList.add(CLASS_NAME_ACTIVE);
indicators[i].setAttribute('aria-current', 'true');
break;
}
}
if (newActiveIndicator) {
newActiveIndicator.classList.add(CLASS_NAME_ACTIVE);
newActiveIndicator.setAttribute('aria-current', 'true');
}
}
_updateInterval() {
const element = this._activeElement || SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE_ITEM, this._element);
const element = this._activeElement || this._getActive();
if (!element) {
return;
}
const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
if (elementInterval) {
this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
this._config.interval = elementInterval;
} else {
this._config.interval = this._config.defaultInterval || this._config.interval;
}
this._config.interval = elementInterval || this._config.defaultInterval;
}
_slide(directionOrOrder, element) {
const order = this._directionToOrder(directionOrOrder);
const activeElement = SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE_ITEM, this._element);
const activeElementIndex = this._getItemIndex(activeElement);
const nextElement = element || this._getItemByOrder(order, activeElement);
const nextElementIndex = this._getItemIndex(nextElement);
const isCycling = Boolean(this._interval);
const isNext = order === ORDER_NEXT;
const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
const eventDirectionName = this._orderToDirection(order);
if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {
this._isSliding = false;
return;
}
_slide(order, element = null) {
if (this._isSliding) {
return;
}
const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
const activeElement = this._getActive();
const isNext = order === ORDER_NEXT;
const nextElement = element || index.getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);
if (nextElement === activeElement) {
return;
}
const nextElementIndex = this._getItemIndex(nextElement);
const triggerEvent = eventName => {
return EventHandler__default.default.trigger(this._element, eventName, {
relatedTarget: nextElement,
direction: this._orderToDirection(order),
from: this._getItemIndex(activeElement),
to: nextElementIndex
});
};
const slideEvent = triggerEvent(EVENT_SLIDE);
if (slideEvent.defaultPrevented) {
return;
@@ -579,61 +327,60 @@
if (!activeElement || !nextElement) {
// Some weirdness is happening, so we bail
// todo: change tests that use empty divs to avoid this check
return;
}
const isCycling = Boolean(this._interval);
this.pause();
this._isSliding = true;
if (isCycling) {
this.pause();
}
this._setActiveIndicatorElement(nextElement);
this._setActiveIndicatorElement(nextElementIndex);
this._activeElement = nextElement;
const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
nextElement.classList.add(orderClassName);
index.reflow(nextElement);
activeElement.classList.add(directionalClassName);
nextElement.classList.add(directionalClassName);
const triggerSlidEvent = () => {
EventHandler__default['default'].trigger(this._element, EVENT_SLID, {
relatedTarget: nextElement,
direction: eventDirectionName,
from: activeElementIndex,
to: nextElementIndex
});
const completeCallBack = () => {
nextElement.classList.remove(directionalClassName, orderClassName);
nextElement.classList.add(CLASS_NAME_ACTIVE);
activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName);
this._isSliding = false;
triggerEvent(EVENT_SLID);
};
if (this._element.classList.contains(CLASS_NAME_SLIDE)) {
nextElement.classList.add(orderClassName);
reflow(nextElement);
activeElement.classList.add(directionalClassName);
nextElement.classList.add(directionalClassName);
const completeCallBack = () => {
nextElement.classList.remove(directionalClassName, orderClassName);
nextElement.classList.add(CLASS_NAME_ACTIVE);
activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName);
this._isSliding = false;
setTimeout(triggerSlidEvent, 0);
};
this._queueCallback(completeCallBack, activeElement, true);
} else {
activeElement.classList.remove(CLASS_NAME_ACTIVE);
nextElement.classList.add(CLASS_NAME_ACTIVE);
this._isSliding = false;
triggerSlidEvent();
}
this._queueCallback(completeCallBack, activeElement, this._isAnimated());
if (isCycling) {
this.cycle();
}
}
_directionToOrder(direction) {
if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {
return direction;
}
_isAnimated() {
return this._element.classList.contains(CLASS_NAME_SLIDE);
}
if (isRTL()) {
_getActive() {
return SelectorEngine__default.default.findOne(SELECTOR_ACTIVE_ITEM, this._element);
}
_getItems() {
return SelectorEngine__default.default.find(SELECTOR_ITEM, this._element);
}
_clearInterval() {
if (this._interval) {
clearInterval(this._interval);
this._interval = null;
}
}
_directionToOrder(direction) {
if (index.isRTL()) {
return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
}
@@ -641,11 +388,7 @@
}
_orderToDirection(order) {
if (![ORDER_NEXT, ORDER_PREV].includes(order)) {
return order;
}
if (isRTL()) {
if (index.isRTL()) {
return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
}
@@ -653,91 +396,76 @@
} // Static
static carouselInterface(element, config) {
const data = Carousel.getOrCreateInstance(element, config);
let {
_config
} = data;
if (typeof config === 'object') {
_config = { ..._config,
...config
};
}
const action = typeof config === 'string' ? config : _config.slide;
if (typeof config === 'number') {
data.to(config);
} else if (typeof action === 'string') {
if (typeof data[action] === 'undefined') {
throw new TypeError(`No method named "${action}"`);
}
data[action]();
} else if (_config.interval && _config.ride) {
data.pause();
data.cycle();
}
}
static jQueryInterface(config) {
return this.each(function () {
Carousel.carouselInterface(this, config);
const data = Carousel.getOrCreateInstance(this, config);
if (typeof config === 'number') {
data.to(config);
return;
}
if (typeof config === 'string') {
if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
throw new TypeError(`No method named "${config}"`);
}
data[config]();
}
});
}
static dataApiClickHandler(event) {
const target = getElementFromSelector(this);
if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
return;
}
const config = { ...Manipulator__default['default'].getDataAttributes(target),
...Manipulator__default['default'].getDataAttributes(this)
};
const slideIndex = this.getAttribute('data-bs-slide-to');
if (slideIndex) {
config.interval = false;
}
Carousel.carouselInterface(target, config);
if (slideIndex) {
Carousel.getInstance(target).to(slideIndex);
}
event.preventDefault();
}
}
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
* Data API implementation
*/
EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);
EventHandler__default['default'].on(window, EVENT_LOAD_DATA_API, () => {
const carousels = SelectorEngine__default['default'].find(SELECTOR_DATA_RIDE);
EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {
const target = index.getElementFromSelector(this);
for (let i = 0, len = carousels.length; i < len; i++) {
Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]));
if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
return;
}
event.preventDefault();
const carousel = Carousel.getOrCreateInstance(target);
const slideIndex = this.getAttribute('data-bs-slide-to');
if (slideIndex) {
carousel.to(slideIndex);
carousel._maybeEnableCycle();
return;
}
if (Manipulator__default.default.getDataAttribute(this, 'slide') === 'next') {
carousel.next();
carousel._maybeEnableCycle();
return;
}
carousel.prev();
carousel._maybeEnableCycle();
});
EventHandler__default.default.on(window, EVENT_LOAD_DATA_API, () => {
const carousels = SelectorEngine__default.default.find(SELECTOR_DATA_RIDE);
for (const carousel of carousels) {
Carousel.getOrCreateInstance(carousel);
}
});
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
* add .Carousel to jQuery only if jQuery is present
*/
defineJQueryPlugin(Carousel);
index.defineJQueryPlugin(Carousel);
return Carousel;
})));
}));
//# sourceMappingURL=carousel.js.map
+1 -1
View File
File diff suppressed because one or more lines are too long
+80 -263
View File
@@ -1,199 +1,34 @@
/*!
* Bootstrap collapse.js v5.1.1 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap collapse.js v5.2.2 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) :
typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.Data, global.EventHandler, global.Manipulator, global.SelectorEngine, global.Base));
}(this, (function (Data, EventHandler, Manipulator, SelectorEngine, BaseComponent) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./util/index'), require('./dom/event-handler'), require('./dom/selector-engine'), require('./base-component')) :
typeof define === 'function' && define.amd ? define(['./util/index', './dom/event-handler', './dom/selector-engine', './base-component'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.Index, global.EventHandler, global.SelectorEngine, global.BaseComponent));
})(this, (function (index, EventHandler, SelectorEngine, BaseComponent) { 'use strict';
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.1.1): util/index.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
const toType = obj => {
if (obj === null || obj === undefined) {
return `${obj}`;
}
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
};
const getSelector = element => {
let selector = element.getAttribute('data-bs-target');
if (!selector || selector === '#') {
let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
// so everything starting with `#` or `.`. If a "real" URL is used as the selector,
// `document.querySelector` will rightfully complain it is invalid.
// See https://github.com/twbs/bootstrap/issues/32273
if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
return null;
} // Just in case some CMS puts out a full URL with the anchor appended
if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
hrefAttr = `#${hrefAttr.split('#')[1]}`;
}
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
}
return selector;
};
const getSelectorFromElement = element => {
const selector = getSelector(element);
if (selector) {
return document.querySelector(selector) ? selector : null;
}
return null;
};
const getElementFromSelector = element => {
const selector = getSelector(element);
return selector ? document.querySelector(selector) : null;
};
const isElement = obj => {
if (!obj || typeof obj !== 'object') {
return false;
}
if (typeof obj.jquery !== 'undefined') {
obj = obj[0];
}
return typeof obj.nodeType !== 'undefined';
};
const getElement = obj => {
if (isElement(obj)) {
// it's a jQuery object or a node element
return obj.jquery ? obj[0] : obj;
}
if (typeof obj === 'string' && obj.length > 0) {
return document.querySelector(obj);
}
return null;
};
const typeCheckConfig = (componentName, config, configTypes) => {
Object.keys(configTypes).forEach(property => {
const expectedTypes = configTypes[property];
const value = config[property];
const valueType = value && isElement(value) ? 'element' : toType(value);
if (!new RegExp(expectedTypes).test(valueType)) {
throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
}
});
};
/**
* Trick to restart an element's animation
*
* @param {HTMLElement} element
* @return void
*
* @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
*/
const reflow = element => {
// eslint-disable-next-line no-unused-expressions
element.offsetHeight;
};
const getjQuery = () => {
const {
jQuery
} = window;
if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
return jQuery;
}
return null;
};
const DOMContentLoadedCallbacks = [];
const onDOMContentLoaded = callback => {
if (document.readyState === 'loading') {
// add listener on the first call when the document is in loading state
if (!DOMContentLoadedCallbacks.length) {
document.addEventListener('DOMContentLoaded', () => {
DOMContentLoadedCallbacks.forEach(callback => callback());
});
}
DOMContentLoadedCallbacks.push(callback);
} else {
callback();
}
};
const defineJQueryPlugin = plugin => {
onDOMContentLoaded(() => {
const $ = getjQuery();
/* istanbul ignore if */
if ($) {
const name = plugin.NAME;
const JQUERY_NO_CONFLICT = $.fn[name];
$.fn[name] = plugin.jQueryInterface;
$.fn[name].Constructor = plugin;
$.fn[name].noConflict = () => {
$.fn[name] = JQUERY_NO_CONFLICT;
return plugin.jQueryInterface;
};
}
});
};
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.1.1): collapse.js
* Bootstrap (v5.2.2): collapse.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
const NAME = 'collapse';
const DATA_KEY = 'bs.collapse';
const EVENT_KEY = `.${DATA_KEY}`;
const DATA_API_KEY = '.data-api';
const Default = {
toggle: true,
parent: null
};
const DefaultType = {
toggle: 'boolean',
parent: '(null|element)'
};
const EVENT_SHOW = `show${EVENT_KEY}`;
const EVENT_SHOWN = `shown${EVENT_KEY}`;
const EVENT_HIDE = `hide${EVENT_KEY}`;
@@ -203,33 +38,36 @@
const CLASS_NAME_COLLAPSE = 'collapse';
const CLASS_NAME_COLLAPSING = 'collapsing';
const CLASS_NAME_COLLAPSED = 'collapsed';
const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
const WIDTH = 'width';
const HEIGHT = 'height';
const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]';
const Default = {
parent: null,
toggle: true
};
const DefaultType = {
parent: '(null|element)',
toggle: 'boolean'
};
/**
* ------------------------------------------------------------------------
* Class Definition
* ------------------------------------------------------------------------
* Class definition
*/
class Collapse extends BaseComponent__default['default'] {
class Collapse extends BaseComponent__default.default {
constructor(element, config) {
super(element);
super(element, config);
this._isTransitioning = false;
this._config = this._getConfig(config);
this._triggerArray = [];
const toggleList = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE);
const toggleList = SelectorEngine__default.default.find(SELECTOR_DATA_TOGGLE);
for (let i = 0, len = toggleList.length; i < len; i++) {
const elem = toggleList[i];
const selector = getSelectorFromElement(elem);
const filterElement = SelectorEngine__default['default'].find(selector).filter(foundElem => foundElem === this._element);
for (const elem of toggleList) {
const selector = index.getSelectorFromElement(elem);
const filterElement = SelectorEngine__default.default.find(selector).filter(foundElement => foundElement === this._element);
if (selector !== null && filterElement.length) {
this._selector = selector;
this._triggerArray.push(elem);
}
}
@@ -250,6 +88,10 @@
return Default;
}
static get DefaultType() {
return DefaultType;
}
static get NAME() {
return NAME;
} // Public
@@ -268,42 +110,27 @@
return;
}
let actives = [];
let activesData;
let activeChildren = []; // find active children
if (this._config.parent) {
const children = SelectorEngine__default['default'].find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent);
actives = SelectorEngine__default['default'].find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)); // remove children if greater depth
activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {
toggle: false
}));
}
const container = SelectorEngine__default['default'].findOne(this._selector);
if (actives.length) {
const tempActiveData = actives.find(elem => container !== elem);
activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null;
if (activesData && activesData._isTransitioning) {
return;
}
if (activeChildren.length && activeChildren[0]._isTransitioning) {
return;
}
const startEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW);
const startEvent = EventHandler__default.default.trigger(this._element, EVENT_SHOW);
if (startEvent.defaultPrevented) {
return;
}
actives.forEach(elemActive => {
if (container !== elemActive) {
Collapse.getOrCreateInstance(elemActive, {
toggle: false
}).hide();
}
if (!activesData) {
Data__default['default'].set(elemActive, DATA_KEY, null);
}
});
for (const activeInstance of activeChildren) {
activeInstance.hide();
}
const dimension = this._getDimension();
@@ -325,7 +152,7 @@
this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
this._element.style[dimension] = '';
EventHandler__default['default'].trigger(this._element, EVENT_SHOWN);
EventHandler__default.default.trigger(this._element, EVENT_SHOWN);
};
const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
@@ -341,7 +168,7 @@
return;
}
const startEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE);
const startEvent = EventHandler__default.default.trigger(this._element, EVENT_HIDE);
if (startEvent.defaultPrevented) {
return;
@@ -350,19 +177,16 @@
const dimension = this._getDimension();
this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
reflow(this._element);
index.reflow(this._element);
this._element.classList.add(CLASS_NAME_COLLAPSING);
this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
const triggerArrayLength = this._triggerArray.length;
for (const trigger of this._triggerArray) {
const element = index.getElementFromSelector(trigger);
for (let i = 0; i < triggerArrayLength; i++) {
const trigger = this._triggerArray[i];
const elem = getElementFromSelector(trigger);
if (elem && !this._isShown(elem)) {
if (element && !this._isShown(element)) {
this._addAriaAndCollapsedClass([trigger], false);
}
}
@@ -376,7 +200,7 @@
this._element.classList.add(CLASS_NAME_COLLAPSE);
EventHandler__default['default'].trigger(this._element, EVENT_HIDDEN);
EventHandler__default.default.trigger(this._element, EVENT_HIDDEN);
};
this._element.style[dimension] = '';
@@ -389,15 +213,10 @@
} // Private
_getConfig(config) {
config = { ...Default,
...Manipulator__default['default'].getDataAttributes(this._element),
...config
};
_configAfterMerge(config) {
config.toggle = Boolean(config.toggle); // Coerce string values
config.parent = getElement(config.parent);
typeCheckConfig(NAME, config, DefaultType);
config.parent = index.getElement(config.parent);
return config;
}
@@ -410,14 +229,21 @@
return;
}
const children = SelectorEngine__default['default'].find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent);
SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem)).forEach(element => {
const selected = getElementFromSelector(element);
const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE);
for (const element of children) {
const selected = index.getElementFromSelector(element);
if (selected) {
this._addAriaAndCollapsedClass([element], this._isShown(selected));
}
});
}
}
_getFirstLevelChildren(selector) {
const children = SelectorEngine__default.default.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth
return SelectorEngine__default.default.find(selector, this._config.parent).filter(element => !children.includes(element));
}
_addAriaAndCollapsedClass(triggerArray, isOpen) {
@@ -425,26 +251,21 @@
return;
}
triggerArray.forEach(elem => {
if (isOpen) {
elem.classList.remove(CLASS_NAME_COLLAPSED);
} else {
elem.classList.add(CLASS_NAME_COLLAPSED);
}
elem.setAttribute('aria-expanded', isOpen);
});
for (const element of triggerArray) {
element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
element.setAttribute('aria-expanded', isOpen);
}
} // Static
static jQueryInterface(config) {
const _config = {};
if (typeof config === 'string' && /show|hide/.test(config)) {
_config.toggle = false;
}
return this.each(function () {
const _config = {};
if (typeof config === 'string' && /show|hide/.test(config)) {
_config.toggle = false;
}
const data = Collapse.getOrCreateInstance(this, _config);
if (typeof config === 'string') {
@@ -459,36 +280,32 @@
}
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
* Data API implementation
*/
EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
// preventDefault only for <a> elements (which change the URL) not inside the collapsible element
if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
event.preventDefault();
}
const selector = getSelectorFromElement(this);
const selectorElements = SelectorEngine__default['default'].find(selector);
selectorElements.forEach(element => {
const selector = index.getSelectorFromElement(this);
const selectorElements = SelectorEngine__default.default.find(selector);
for (const element of selectorElements) {
Collapse.getOrCreateInstance(element, {
toggle: false
}).toggle();
});
}
});
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
* add .Collapse to jQuery only if jQuery is present
*/
defineJQueryPlugin(Collapse);
index.defineJQueryPlugin(Collapse);
return Collapse;
})));
}));
//# sourceMappingURL=collapse.js.map
+1 -1
View File
File diff suppressed because one or more lines are too long
+6 -8
View File
@@ -1,28 +1,26 @@
/*!
* Bootstrap data.js v5.1.1 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap data.js v5.2.2 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Data = factory());
}(this, (function () { 'use strict';
})(this, (function () { 'use strict';
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.1.1): dom/data.js
* Bootstrap (v5.2.2): dom/data.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
const elementMap = new Map();
var data = {
const data = {
set(element, key, instance) {
if (!elementMap.has(element)) {
elementMap.set(element, new Map());
@@ -65,5 +63,5 @@
return data;
})));
}));
//# sourceMappingURL=data.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"data.js","sources":["../../src/dom/data.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n"],"names":["elementMap","Map","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete"],"mappings":";;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EAEA,MAAMA,UAAU,GAAG,IAAIC,GAAJ,EAAnB;AAEA,aAAe;EACbC,EAAAA,GAAG,CAACC,OAAD,EAAUC,GAAV,EAAeC,QAAf,EAAyB;EAC1B,QAAI,CAACL,UAAU,CAACM,GAAX,CAAeH,OAAf,CAAL,EAA8B;EAC5BH,MAAAA,UAAU,CAACE,GAAX,CAAeC,OAAf,EAAwB,IAAIF,GAAJ,EAAxB;EACD;;EAED,UAAMM,WAAW,GAAGP,UAAU,CAACQ,GAAX,CAAeL,OAAf,CAApB,CAL0B;EAQ1B;;EACA,QAAI,CAACI,WAAW,CAACD,GAAZ,CAAgBF,GAAhB,CAAD,IAAyBG,WAAW,CAACE,IAAZ,KAAqB,CAAlD,EAAqD;EACnD;EACAC,MAAAA,OAAO,CAACC,KAAR,CAAe,+EAA8EC,KAAK,CAACC,IAAN,CAAWN,WAAW,CAACO,IAAZ,EAAX,EAA+B,CAA/B,CAAkC,GAA/H;EACA;EACD;;EAEDP,IAAAA,WAAW,CAACL,GAAZ,CAAgBE,GAAhB,EAAqBC,QAArB;EACD,GAjBY;;EAmBbG,EAAAA,GAAG,CAACL,OAAD,EAAUC,GAAV,EAAe;EAChB,QAAIJ,UAAU,CAACM,GAAX,CAAeH,OAAf,CAAJ,EAA6B;EAC3B,aAAOH,UAAU,CAACQ,GAAX,CAAeL,OAAf,EAAwBK,GAAxB,CAA4BJ,GAA5B,KAAoC,IAA3C;EACD;;EAED,WAAO,IAAP;EACD,GAzBY;;EA2BbW,EAAAA,MAAM,CAACZ,OAAD,EAAUC,GAAV,EAAe;EACnB,QAAI,CAACJ,UAAU,CAACM,GAAX,CAAeH,OAAf,CAAL,EAA8B;EAC5B;EACD;;EAED,UAAMI,WAAW,GAAGP,UAAU,CAACQ,GAAX,CAAeL,OAAf,CAApB;EAEAI,IAAAA,WAAW,CAACS,MAAZ,CAAmBZ,GAAnB,EAPmB;;EAUnB,QAAIG,WAAW,CAACE,IAAZ,KAAqB,CAAzB,EAA4B;EAC1BT,MAAAA,UAAU,CAACgB,MAAX,CAAkBb,OAAlB;EACD;EACF;;EAxCY,CAAf;;;;;;;;"}
{"version":3,"file":"data.js","sources":["../../src/dom/data.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n"],"names":["elementMap","Map","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete"],"mappings":";;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EAEA,MAAMA,UAAU,GAAG,IAAIC,GAAJ,EAAnB,CAAA;AAEA,eAAe;EACbC,EAAAA,GAAG,CAACC,OAAD,EAAUC,GAAV,EAAeC,QAAf,EAAyB;EAC1B,IAAA,IAAI,CAACL,UAAU,CAACM,GAAX,CAAeH,OAAf,CAAL,EAA8B;EAC5BH,MAAAA,UAAU,CAACE,GAAX,CAAeC,OAAf,EAAwB,IAAIF,GAAJ,EAAxB,CAAA,CAAA;EACD,KAAA;;MAED,MAAMM,WAAW,GAAGP,UAAU,CAACQ,GAAX,CAAeL,OAAf,CAApB,CAL0B;EAQ1B;;EACA,IAAA,IAAI,CAACI,WAAW,CAACD,GAAZ,CAAgBF,GAAhB,CAAD,IAAyBG,WAAW,CAACE,IAAZ,KAAqB,CAAlD,EAAqD;EACnD;EACAC,MAAAA,OAAO,CAACC,KAAR,CAAe,CAAA,4EAAA,EAA8EC,KAAK,CAACC,IAAN,CAAWN,WAAW,CAACO,IAAZ,EAAX,CAA+B,CAAA,CAA/B,CAAkC,CAA/H,CAAA,CAAA,CAAA,CAAA;EACA,MAAA,OAAA;EACD,KAAA;;EAEDP,IAAAA,WAAW,CAACL,GAAZ,CAAgBE,GAAhB,EAAqBC,QAArB,CAAA,CAAA;KAhBW;;EAmBbG,EAAAA,GAAG,CAACL,OAAD,EAAUC,GAAV,EAAe;EAChB,IAAA,IAAIJ,UAAU,CAACM,GAAX,CAAeH,OAAf,CAAJ,EAA6B;QAC3B,OAAOH,UAAU,CAACQ,GAAX,CAAeL,OAAf,EAAwBK,GAAxB,CAA4BJ,GAA5B,CAAA,IAAoC,IAA3C,CAAA;EACD,KAAA;;EAED,IAAA,OAAO,IAAP,CAAA;KAxBW;;EA2BbW,EAAAA,MAAM,CAACZ,OAAD,EAAUC,GAAV,EAAe;EACnB,IAAA,IAAI,CAACJ,UAAU,CAACM,GAAX,CAAeH,OAAf,CAAL,EAA8B;EAC5B,MAAA,OAAA;EACD,KAAA;;EAED,IAAA,MAAMI,WAAW,GAAGP,UAAU,CAACQ,GAAX,CAAeL,OAAf,CAApB,CAAA;EAEAI,IAAAA,WAAW,CAACS,MAAZ,CAAmBZ,GAAnB,EAPmB;;EAUnB,IAAA,IAAIG,WAAW,CAACE,IAAZ,KAAqB,CAAzB,EAA4B;QAC1BT,UAAU,CAACgB,MAAX,CAAkBb,OAAlB,CAAA,CAAA;EACD,KAAA;EACF,GAAA;;EAxCY,CAAf;;;;;;;;"}
+98 -136
View File
@@ -1,43 +1,22 @@
/*!
* Bootstrap event-handler.js v5.1.1 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap event-handler.js v5.2.2 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.EventHandler = factory());
}(this, (function () { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../util/index')) :
typeof define === 'function' && define.amd ? define(['../util/index'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.EventHandler = factory(global.Index));
})(this, (function (index) { 'use strict';
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.1.1): util/index.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
const getjQuery = () => {
const {
jQuery
} = window;
if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
return jQuery;
}
return null;
};
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.1.1): dom/event-handler.js
* Bootstrap (v5.2.2): dom/event-handler.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
@@ -50,20 +29,17 @@
mouseenter: 'mouseover',
mouseleave: 'mouseout'
};
const customEventsRegex = /^(mouseenter|mouseleave)/i;
const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
/**
* ------------------------------------------------------------------------
* Private methods
* ------------------------------------------------------------------------
*/
function getUidEvent(element, uid) {
function makeEventUid(element, uid) {
return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
}
function getEvent(element) {
const uid = getUidEvent(element);
function getElementEvents(element) {
const uid = makeEventUid(element);
element.uidEvent = uid;
eventRegistry[uid] = eventRegistry[uid] || {};
return eventRegistry[uid];
@@ -71,7 +47,9 @@
function bootstrapHandler(element, fn) {
return function handler(event) {
event.delegateTarget = element;
hydrateObj(event, {
delegateTarget: element
});
if (handler.oneOff) {
EventHandler.off(element, event.type, fn);
@@ -88,65 +66,52 @@
for (let {
target
} = event; target && target !== this; target = target.parentNode) {
for (let i = domElements.length; i--;) {
if (domElements[i] === target) {
event.delegateTarget = target;
if (handler.oneOff) {
EventHandler.off(element, event.type, selector, fn);
}
return fn.apply(target, [event]);
for (const domElement of domElements) {
if (domElement !== target) {
continue;
}
hydrateObj(event, {
delegateTarget: target
});
if (handler.oneOff) {
EventHandler.off(element, event.type, selector, fn);
}
return fn.apply(target, [event]);
}
} // To please ESLint
return null;
}
};
}
function findHandler(events, handler, delegationSelector = null) {
const uidEventList = Object.keys(events);
for (let i = 0, len = uidEventList.length; i < len; i++) {
const event = events[uidEventList[i]];
if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {
return event;
}
}
return null;
function findHandler(events, callable, delegationSelector = null) {
return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);
}
function normalizeParams(originalTypeEvent, handler, delegationFn) {
const delegation = typeof handler === 'string';
const originalHandler = delegation ? delegationFn : handler;
let typeEvent = getTypeEvent(originalTypeEvent);
const isNative = nativeEvents.has(typeEvent);
function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
const isDelegated = typeof handler === 'string'; // todo: tooltip passes `false` instead of selector, so we need to check
if (!isNative) {
const callable = isDelegated ? delegationFunction : handler || delegationFunction;
let typeEvent = getTypeEvent(originalTypeEvent);
if (!nativeEvents.has(typeEvent)) {
typeEvent = originalTypeEvent;
}
return [delegation, originalHandler, typeEvent];
return [isDelegated, callable, typeEvent];
}
function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {
function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
if (typeof originalTypeEvent !== 'string' || !element) {
return;
}
if (!handler) {
handler = delegationFn;
delegationFn = null;
} // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
// this prevents the handler from being dispatched the same way as mouseover or mouseout does
if (customEventsRegex.test(originalTypeEvent)) {
const wrapFn = fn => {
if (originalTypeEvent in customEvents) {
const wrapFunction = fn => {
return function (event) {
if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
return fn.call(this, event);
@@ -154,31 +119,26 @@
};
};
if (delegationFn) {
delegationFn = wrapFn(delegationFn);
} else {
handler = wrapFn(handler);
}
callable = wrapFunction(callable);
}
const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
const events = getEvent(element);
const events = getElementEvents(element);
const handlers = events[typeEvent] || (events[typeEvent] = {});
const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);
const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
if (previousFn) {
previousFn.oneOff = previousFn.oneOff && oneOff;
if (previousFunction) {
previousFunction.oneOff = previousFunction.oneOff && oneOff;
return;
}
const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));
const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);
fn.delegationSelector = delegation ? handler : null;
fn.originalHandler = originalHandler;
const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));
const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
fn.delegationSelector = isDelegated ? handler : null;
fn.callable = callable;
fn.oneOff = oneOff;
fn.uidEvent = uid;
handlers[uid] = fn;
element.addEventListener(typeEvent, fn, delegation);
element.addEventListener(typeEvent, fn, isDelegated);
}
function removeHandler(element, events, typeEvent, handler, delegationSelector) {
@@ -194,12 +154,13 @@
function removeNamespacedHandlers(element, events, typeEvent, namespace) {
const storeElementEvent = events[typeEvent] || {};
Object.keys(storeElementEvent).forEach(handlerKey => {
for (const handlerKey of Object.keys(storeElementEvent)) {
if (handlerKey.includes(namespace)) {
const event = storeElementEvent[handlerKey];
removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
}
});
}
}
function getTypeEvent(event) {
@@ -209,49 +170,49 @@
}
const EventHandler = {
on(element, event, handler, delegationFn) {
addHandler(element, event, handler, delegationFn, false);
on(element, event, handler, delegationFunction) {
addHandler(element, event, handler, delegationFunction, false);
},
one(element, event, handler, delegationFn) {
addHandler(element, event, handler, delegationFn, true);
one(element, event, handler, delegationFunction) {
addHandler(element, event, handler, delegationFunction, true);
},
off(element, originalTypeEvent, handler, delegationFn) {
off(element, originalTypeEvent, handler, delegationFunction) {
if (typeof originalTypeEvent !== 'string' || !element) {
return;
}
const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
const inNamespace = typeEvent !== originalTypeEvent;
const events = getEvent(element);
const events = getElementEvents(element);
const storeElementEvent = events[typeEvent] || {};
const isNamespace = originalTypeEvent.startsWith('.');
if (typeof originalHandler !== 'undefined') {
if (typeof callable !== 'undefined') {
// Simplest case: handler is passed, remove that listener ONLY.
if (!events || !events[typeEvent]) {
if (!Object.keys(storeElementEvent).length) {
return;
}
removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);
removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
return;
}
if (isNamespace) {
Object.keys(events).forEach(elementEvent => {
for (const elementEvent of Object.keys(events)) {
removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
});
}
}
const storeElementEvent = events[typeEvent] || {};
Object.keys(storeElementEvent).forEach(keyHandlers => {
for (const keyHandlers of Object.keys(storeElementEvent)) {
const handlerKey = keyHandlers.replace(stripUidRegex, '');
if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
const event = storeElementEvent[keyHandlers];
removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
}
});
}
},
trigger(element, event, args) {
@@ -259,15 +220,13 @@
return null;
}
const $ = getjQuery();
const $ = index.getjQuery();
const typeEvent = getTypeEvent(event);
const inNamespace = event !== typeEvent;
const isNative = nativeEvents.has(typeEvent);
let jQueryEvent;
let jQueryEvent = null;
let bubbles = true;
let nativeDispatch = true;
let defaultPrevented = false;
let evt = null;
if (inNamespace && $) {
jQueryEvent = $.Event(event, args);
@@ -277,27 +236,11 @@
defaultPrevented = jQueryEvent.isDefaultPrevented();
}
if (isNative) {
evt = document.createEvent('HTMLEvents');
evt.initEvent(typeEvent, bubbles, true);
} else {
evt = new CustomEvent(event, {
bubbles,
cancelable: true
});
} // merge custom information in our event
if (typeof args !== 'undefined') {
Object.keys(args).forEach(key => {
Object.defineProperty(evt, key, {
get() {
return args[key];
}
});
});
}
let evt = new Event(event, {
bubbles,
cancelable: true
});
evt = hydrateObj(evt, args);
if (defaultPrevented) {
evt.preventDefault();
@@ -307,7 +250,7 @@
element.dispatchEvent(evt);
}
if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {
if (evt.defaultPrevented && jQueryEvent) {
jQueryEvent.preventDefault();
}
@@ -316,7 +259,26 @@
};
function hydrateObj(obj, meta) {
for (const [key, value] of Object.entries(meta || {})) {
try {
obj[key] = value;
} catch (_unused) {
Object.defineProperty(obj, key, {
configurable: true,
get() {
return value;
}
});
}
}
return obj;
}
return EventHandler;
})));
}));
//# sourceMappingURL=event-handler.js.map
+1 -1
View File
File diff suppressed because one or more lines are too long
+25 -29
View File
@@ -1,38 +1,46 @@
/*!
* Bootstrap manipulator.js v5.1.1 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap manipulator.js v5.2.2 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Manipulator = factory());
}(this, (function () { 'use strict';
})(this, (function () { 'use strict';
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.1.1): dom/manipulator.js
* Bootstrap (v5.2.2): dom/manipulator.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
function normalizeData(val) {
if (val === 'true') {
function normalizeData(value) {
if (value === 'true') {
return true;
}
if (val === 'false') {
if (value === 'false') {
return false;
}
if (val === Number(val).toString()) {
return Number(val);
if (value === Number(value).toString()) {
return Number(value);
}
if (val === '' || val === 'null') {
if (value === '' || value === 'null') {
return null;
}
return val;
if (typeof value !== 'string') {
return value;
}
try {
return JSON.parse(decodeURIComponent(value));
} catch (_unused) {
return value;
}
}
function normalizeDataKey(key) {
@@ -54,36 +62,24 @@
}
const attributes = {};
Object.keys(element.dataset).filter(key => key.startsWith('bs')).forEach(key => {
const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));
for (const key of bsKeys) {
let pureKey = key.replace(/^bs/, '');
pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
attributes[pureKey] = normalizeData(element.dataset[key]);
});
}
return attributes;
},
getDataAttribute(element, key) {
return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
},
offset(element) {
const rect = element.getBoundingClientRect();
return {
top: rect.top + window.pageYOffset,
left: rect.left + window.pageXOffset
};
},
position(element) {
return {
top: element.offsetTop,
left: element.offsetLeft
};
}
};
return Manipulator;
})));
}));
//# sourceMappingURL=manipulator.js.map

Some files were not shown because too many files have changed in this diff Show More