Compare commits

...

662 Commits

Author SHA1 Message Date
GeoSot 04ab8ba426 feat(config.js): provide a setConfig method for all js components 2022-05-31 11:19:25 +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
XhmikosR 0d81d3cbc1 Release v5.1.1 (#34869)
* Prepare v5.1.1.

* Dist
2021-09-07 18:37:44 +03:00
dependabot[bot] b6855ae138 Bump vnu-jar from 21.6.11 to 21.9.2 (#34874)
* Bump vnu-jar from 21.6.11 to 21.9.2

Bumps [vnu-jar](https://github.com/validator/validator) from 21.6.11 to 21.9.2.
- [Release notes](https://github.com/validator/validator/releases)
- [Changelog](https://github.com/validator/validator/blob/main/CHANGELOG.md)
- [Commits](https://github.com/validator/validator/compare/21.6.11...21.9.2)

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

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

* Ignore the `aria-disabled` warnings

* Add comment to aria-disabled ignore

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Patrick H. Lauke <redux@splintered.co.uk>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-09-07 10:55:08 +03:00
XhmikosR 23b3d636e1 Typo fixes (#34914) 2021-09-07 09:45:27 +03:00
Patrick H. Lauke aa06dffdf6 Disabled link cleanup (#34886)
* Disabled link cleanup

per https://www.w3.org/TR/html-aria/#docconformance

> It is NOT RECOMMENDED to use `aria-disabled="true"` on an `a` element with an `href` attribute.
>
>NOTE
>If a link needs to be "disabled", remove the `href` attribute.

This PR removes the unnecessary `href="#"`, `tabindex="-1"`, and `aria-disabled="true"` from disabled links in both docs pages and examples. `aria-disabled="true"` *is* kept for disabled link-based buttons (that have `role="button"`) as there it's appropriate to use (you *want* to convey to assistive technologies that this thing you're claiming is a button is also disabled at the moment)

Further, the PR extends the "Link functionality caveat" to show the "proper" way (removing `href` and adding `.disabled` class only) to disable a link, but then explains what to do if that's not possible (and then keeps an example with all the traditional `href="#" tabindex="-1" aria-disabled="true"`, but explains clearly that it's not ideal). Same sort of explanation is also added to the pointer event utilities page

* Turn big note into actual normal doc text

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

Co-authored-by: Mark Otto <markd.otto@gmail.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-09-06 22:14:21 +03:00
Julien Déramond 16aab88a67 docs: make use of the .Site.Params.docs_version variable (#34913)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-09-06 21:59:04 +03:00
XhmikosR 68a86d3477 BrowserStack: add Firefox 60 and Chrome 60 (#34912)
These are the minimum supported versions, so this patch makes sure everything works there too.
2021-09-06 21:54:08 +03:00
Christian Oliff 6411799e60 Docs: Add Callout to Stacks Helper page about limited flexbox gap support (#34910)
* Docs: Add Callout to Stacks Helper page about limited flexbox gap support

Fixes: #34737

* Update stacks.md

* Delete callout-warning-flexbox-gap.md

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-09-06 21:48:35 +03:00
XhmikosR 60b88dd3b9 Update devDependencies (#34911)
* @babel/core   ^7.15.4  →  ^7.15.5
* hugo-bin      ^0.76.0  →  ^0.76.1
2021-09-06 15:11:32 +03:00
Julien Déramond 2a1aa2a9f4 Fix a11y issues in .hstack example and placeholder 'How it works' example (#34892) 2021-09-04 09:36:18 +03:00
XhmikosR 9852c9afbb Regenerate package-lock.json (#34900) 2021-09-03 12:32:02 +03:00
dependabot[bot] 6397516ad7 Bump @popperjs/core from 2.9.3 to 2.10.1 (#34896)
* Bump @popperjs/core from 2.9.3 to 2.10.1

Bumps [@popperjs/core](https://github.com/popperjs/popper-core) from 2.9.3 to 2.10.1.
- [Release notes](https://github.com/popperjs/popper-core/releases)
- [Commits](https://github.com/popperjs/popper-core/compare/v2.9.3...v2.10.1)

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

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

* Update config.yml

* Update .bundlewatch.config.json

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-09-03 12:11:42 +03:00
dependabot[bot] 9b7256ee8c Bump @babel/core from 7.15.0 to 7.15.4 (#34898)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.15.0 to 7.15.4.
- [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.4/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>
2021-09-03 12:08:10 +03:00
dependabot[bot] 19d4e7852b Bump @babel/preset-env from 7.15.0 to 7.15.4 (#34897)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.15.0 to 7.15.4.
- [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.4/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>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-09-03 12:03:11 +03:00
dependabot[bot] e52b78aa27 Bump @babel/cli from 7.14.8 to 7.15.4 (#34895)
Bumps [@babel/cli](https://github.com/babel/babel/tree/HEAD/packages/babel-cli) from 7.14.8 to 7.15.4.
- [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.4/packages/babel-cli)

---
updated-dependencies:
- dependency-name: "@babel/cli"
  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-03 11:55:20 +03:00
dependabot[bot] 22738ee8ae Bump hugo-bin from 0.75.0 to 0.76.0 (#34883)
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.75.0 to 0.76.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.75.0...v0.76.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>
2021-09-03 00:42:41 +03:00
Alan Oliveira 58edf0ecbe docs: add $enable-smooth-scroll to Sass options page (#34877) 2021-09-03 00:14:20 +03:00
dependabot[bot] 55c5549172 Bump sass from 1.38.2 to 1.39.0 (#34875)
Bumps [sass](https://github.com/sass/dart-sass) from 1.38.2 to 1.39.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.38.2...1.39.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-02 15:20:49 +03:00
Mark Otto d91480e3c7 Include root.scss in all dist builds (#34773)
* Remove the font-family-* override vars from Reboot build

* Update Reboot docs to mention CSS variables
2021-09-02 08:41:58 +03:00
XhmikosR 283cbd9026 Use path.Join when joining paths 2021-08-31 17:24:38 +03:00
XhmikosR f22966c920 example: remove unneeded escape characters 2021-08-31 17:24:38 +03:00
XhmikosR 5cc633dfab Minor shortcode tweaks and consistency changes 2021-08-31 17:24:38 +03:00
XhmikosR 9050b2698a Remove .html suffix from shortcodes calls.
It's the default.
2021-08-31 17:24:38 +03:00
XhmikosR 365d6d9fb1 Tweak scss-docs shortcode 2021-08-31 17:24:38 +03:00
GeoSot 51afe026ca Fix tooltip data-bs-original-title issue (#34842) 2021-08-31 16:11:22 +03:00
XhmikosR ef21000cbe tests: add Offcanvas too in jquery.spec.js (#34841) 2021-08-30 18:57:00 +03:00
XhmikosR a7e64b5a4f Add GitHub SHA in BrowserStack build ID. (#34077) 2021-08-30 16:30:51 +03:00
XhmikosR 2a0f7078d4 Update Sass and regenerate package-lock.json (#34812) 2021-08-30 16:05:08 +03:00
Julien Déramond a0da3a0f42 Enhance Alerts > Live Example section (#34769) 2021-08-30 16:00:16 +03:00
XhmikosR c02805bb8c Move a few ESLint rules where they are needed. 2021-08-30 15:51:44 +03:00
XhmikosR 4a4b61f082 Update eslint-plugin-unicorn to v35.0.0 2021-08-30 15:51:44 +03:00
Marius A 10fc1fec6a clarify importing all vs specific plugins (#34840) 2021-08-30 15:36:53 +03:00
GeoSot c1fc1dbbee Collapse on toggle, should not hide descendant tabpanels (#34835) 2021-08-30 15:29:02 +03:00
dependabot[bot] d9254c64fa Bump eslint-plugin-import from 2.24.1 to 2.24.2 (#34826)
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.24.1 to 2.24.2.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.24.1...v2.24.2)

---
updated-dependencies:
- dependency-name: eslint-plugin-import
  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-08-26 18:52:47 +03:00
dependabot[bot] 151f076ab6 Bump sass from 1.38.0 to 1.38.1 (#34811)
Bumps [sass](https://github.com/sass/dart-sass) from 1.38.0 to 1.38.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.38.0...1.38.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-08-24 15:38:40 +03:00
dependabot[bot] acfd5b6625 Bump eslint-plugin-import from 2.24.0 to 2.24.1 (#34809)
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.24.0 to 2.24.1.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.24.0...v2.24.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-import
  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-08-24 15:38:24 +03:00
dependabot[bot] 44a5be2de7 Bump rollup from 2.56.2 to 2.56.3 (#34810)
Bumps [rollup](https://github.com/rollup/rollup) from 2.56.2 to 2.56.3.
- [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.2...v2.56.3)

---
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>
2021-08-24 15:23:42 +03:00
XhmikosR 40042ee503 visual tests: minor fixes (#34802) 2021-08-23 18:33:55 +03:00
ghost_32 6cf52ed5f7 Fix $dropdown-link-hover-color variable color value in _variable.scss (#34779) 2021-08-23 10:18:29 +03:00
XhmikosR 9e1d81a851 Progress page: remove toggle animation button (#34787)
We don't use the same approach with a button on the Placeholders page.
2021-08-21 06:54:53 +03:00
Sébastien ALFAIATE 91295c2187 alert.js: Add missing newline (#34785) 2021-08-20 18:30:08 +03:00
SaintMalik bfad22f23c docs: fix typos in approach and placeholders (#34781) 2021-08-20 18:25:03 +03:00
XhmikosR 7207cd1919 dashboard-rtl: use the same scripts as the dashboard example (#34766) 2021-08-18 18:51:12 +03:00
Kyle Tsang b10c1a76c7 Fix typo in placeholder docs (#34752) 2021-08-18 07:30:06 +03:00
dependabot[bot] 18b3e1ac71 Bump sass from 1.37.5 to 1.38.0 (#34759)
Bumps [sass](https://github.com/sass/dart-sass) from 1.37.5 to 1.38.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.37.5...1.38.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-08-18 07:26:20 +03:00
GeoSot 1e5e655670 Fix modal when is triggered by bs-toggle, to hide other open instances (#34701) 2021-08-10 17:55:34 +03:00
XhmikosR 418fe8113e carousel: move common checks to a function (#34621) 2021-08-10 17:50:32 +03:00
XhmikosR 2034ead87f Update devDependencies (#34725)
* @babel/core            ^7.14.8  →  ^7.15.0
* @babel/preset-env      ^7.14.9  →  ^7.15.0
2021-08-10 17:46:04 +03:00
dependabot[bot] 91e53eb93b Bump rollup from 2.55.1 to 2.56.2 (#34721)
Bumps [rollup](https://github.com/rollup/rollup) from 2.55.1 to 2.56.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.55.1...v2.56.2)

---
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>
2021-08-10 17:35:21 +03:00
dependabot[bot] d3368f4c00 Bump eslint-config-xo from 0.37.0 to 0.38.0 (#34722)
Bumps [eslint-config-xo](https://github.com/xojs/eslint-config-xo) from 0.37.0 to 0.38.0.
- [Release notes](https://github.com/xojs/eslint-config-xo/releases)
- [Commits](https://github.com/xojs/eslint-config-xo/compare/v0.37.0...v0.38.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>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-10 17:30:32 +03:00
dependabot[bot] 0d608a6ccd Bump eslint-plugin-import from 2.23.4 to 2.24.0 (#34723)
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.23.4 to 2.24.0.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.23.4...v2.24.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-import
  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-08-10 17:23:57 +03:00
Mark Otto 612d235faf Add check to rgba-css-var function for body or bg (#34699) 2021-08-10 17:16:48 +03:00
dependabot[bot] fd92e353d0 Bump clean-css-cli from 5.3.2 to 5.3.3 (#34697)
Bumps [clean-css-cli](https://github.com/clean-css/clean-css-cli) from 5.3.2 to 5.3.3.
- [Release notes](https://github.com/clean-css/clean-css-cli/releases)
- [Changelog](https://github.com/clean-css/clean-css-cli/blob/master/History.md)
- [Commits](https://github.com/clean-css/clean-css-cli/compare/v5.3.2...v5.3.3)

---
updated-dependencies:
- dependency-name: clean-css-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-08-05 18:06:46 +03:00
Semih Raif Gürel f4fd27118f Fix font size variable name (#34679)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-08-05 08:39:04 +03:00
Christian Oliff fdc2f723a5 docs: Fix placeholders typo (#34686) 2021-08-05 08:36:00 +03:00
XhmikosR f20fece3a8 Prepare v5.1.0. (#34674) 2021-08-04 18:41:51 +03:00
XhmikosR 7fcc2f4d52 _navbar.scss: switch comment (#34677) 2021-08-04 17:49:34 +03:00
dependabot[bot] 68ff5c91b7 Bump @popperjs/core from 2.9.2 to 2.9.3 (#34668)
* Bump @popperjs/core from 2.9.2 to 2.9.3

Bumps [@popperjs/core](https://github.com/popperjs/popper-core) from 2.9.2 to 2.9.3.
- [Release notes](https://github.com/popperjs/popper-core/releases)
- [Commits](https://github.com/popperjs/popper-core/compare/v2.9.2...v2.9.3)

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

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

* Update _config.yml popper version

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-08-04 10:39:53 +03:00
dependabot[bot] 0da7d66842 Bump hugo-bin from 0.74.1 to 0.75.0 (#34669)
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.74.1 to 0.75.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.74.1...v0.75.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>
2021-08-04 10:12:07 +03:00
dependabot[bot] 999eee6391 Bump sass from 1.37.2 to 1.37.5 (#34670)
Bumps [sass](https://github.com/sass/dart-sass) from 1.37.2 to 1.37.5.
- [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.37.2...1.37.5)

---
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>
2021-08-04 09:55:07 +03:00
Mark Otto 1e9446c0c8 Update .bundlewatch.config.json 2021-08-03 17:06:06 -07:00
Mark Otto 7409271b56 Document the utility API's new css-var boolean
Co-Authored-By: Gaël Poupard <ffoodd@users.noreply.github.com>
2021-08-03 17:06:06 -07:00
Mark Otto 4d7911a27b Add and document additional :root CSS variables
- Adds grayscale colors
- Adds root and body variables

Note that some Sass variables default to `null`, so as we generate and use the CSS variable, we'll be potentially adding some lines of code.
2021-08-03 17:06:06 -07:00
Mark Otto e72916e5b7 Update color and background-color utilities
- Adds new functions to generate additional Sass maps
- Adds new root variables for rgb() versions of our theme colors, plus a few extras
- Adds ability to change the alpha transparency of text color and background color utilities with new utilities, inline styles, or local CSS var
- Updates documentation for color and background-color utilities pages
- Deprecates .text-black-50 and .text-white-50 since those (and additional transparency levels) can be generated on the fly

Change approach slightly to prevent cascade
2021-08-03 17:06:06 -07:00
Sean Hinton a2f92d1aab Improved docs describing media-breakpoint-down breakpoints (#34637)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-08-03 19:08:10 +03:00
Jaume Sala 39b7c75b13 Add new placeholder component (#31859)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: Jaume Sala <jaumesala@gmail.com>
Co-authored-by: Mark Otto <markdotto@gmail.com>
Co-authored-by: Patrick H. Lauke <redux@splintered.co.uk>
2021-08-03 08:59:00 -07:00
Mark Otto f64df40dfa Update input-bg to use body-bg (#34651) 2021-08-03 18:27:49 +03:00
XhmikosR b6df4a5394 Regenerate package-lock.json (#34659) 2021-08-03 14:07:25 +03:00
dependabot[bot] fc6cf9b06f Bump @babel/preset-env from 7.14.8 to 7.14.9 (#34653)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.14.8 to 7.14.9.
- [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.14.9/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>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-08-03 13:59:57 +03:00
dependabot[bot] 6074e55e99 Bump @rollup/plugin-commonjs from 19.0.2 to 20.0.0 (#34656)
Bumps [@rollup/plugin-commonjs](https://github.com/rollup/plugins/tree/HEAD/packages/commonjs) from 19.0.2 to 20.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-v20.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>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-08-03 13:56:59 +03:00
dependabot[bot] 6d3e1a01c5 Bump sass from 1.36.0 to 1.37.2 (#34658)
Bumps [sass](https://github.com/sass/dart-sass) from 1.36.0 to 1.37.2.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.36.0...1.37.2)

---
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>
2021-08-03 13:54:21 +03:00
dependabot[bot] 6c38cc01e7 Bump clean-css-cli from 5.3.0 to 5.3.2 (#34657)
Bumps [clean-css-cli](https://github.com/jakubpawlowicz/clean-css-cli) from 5.3.0 to 5.3.2.
- [Release notes](https://github.com/jakubpawlowicz/clean-css-cli/releases)
- [Changelog](https://github.com/clean-css/clean-css-cli/blob/master/History.md)
- [Commits](https://github.com/jakubpawlowicz/clean-css-cli/commits)

---
updated-dependencies:
- dependency-name: clean-css-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>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-08-03 13:51:08 +03:00
dependabot[bot] c4513594f9 Bump rollup from 2.55.0 to 2.55.1 (#34655)
Bumps [rollup](https://github.com/rollup/rollup) from 2.55.0 to 2.55.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.55.0...v2.55.1)

---
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>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-08-03 13:48:19 +03:00
dependabot[bot] d9c60313b2 Bump hugo-bin from 0.74.0 to 0.74.1 (#34654)
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.74.0 to 0.74.1.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.74.0...v0.74.1)

---
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>
2021-08-03 13:45:28 +03:00
dependabot[bot] 9deed2da9b Bump eslint from 7.31.0 to 7.32.0 (#34652)
Bumps [eslint](https://github.com/eslint/eslint) from 7.31.0 to 7.32.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.31.0...v7.32.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>
2021-08-03 13:41:33 +03:00
GeoSot a6a2d1e2df Regression on tooltip template creation process. (#34628)
* Regression on tooltip template creation process.

* check if template content does not exist, or given argument is empty

* call `setContent()` once.
2021-08-03 11:59:33 +03:00
XhmikosR 23fd488c38 Add missing newlines around fenced codeblocks (#34630) 2021-07-30 08:56:36 +03:00
XhmikosR 742269a734 tooltip: move repeated strings to constants (#34619) 2021-07-30 00:32:07 +02:00
XhmikosR 6d707f4801 Enable a few eslint-config-xo rules (#34620)
* unicorn/prefer-dom-node-append
* unicorn/prefer-dom-node-remove
2021-07-30 00:23:00 +02:00
GeoSot 2bf32ad180 transfer interface inside jQueryInterface 2021-07-29 16:30:02 +03:00
GeoSot e5b606d242 simplify initialization on data-toggle click 2021-07-29 16:30:02 +03:00
GeoSot 6f17e634ce keep parent only as element 2021-07-29 16:30:02 +03:00
GeoSot 4c1f7bb051 remove duplicated Selector.find 2021-07-29 16:30:02 +03:00
GeoSot 7a71703fd3 Simplify check for children 2021-07-29 16:30:02 +03:00
GeoSot 8fc4f3aaf3 initialize variable properly 2021-07-29 16:30:02 +03:00
GeoSot 1947ca033e Refactor internal function to use it in more cases.
Also, remove a few redundant checks since we already check for it in `_addAriaAndCollapsedClass()`.
2021-07-29 16:30:02 +03:00
GeoSot 5882d5dbe8 Add a helper function to check for showing
Also, remove the `isTransitioning()` helper.
2021-07-29 16:30:02 +03:00
GeoSot 4961ad0c63 Remove redundant check on data-toggle click.
Previously, it was assumed that the trigger element would have its own separate config than the collapse element itself.
2021-07-29 16:30:02 +03:00
GeoSot 2ad0a4a9fd streamline _getConfig & interface 2021-07-29 16:30:02 +03:00
XhmikosR c6c0bbb0b6 Collapse page: add a link to the accordion page (#34605) 2021-07-29 06:39:12 +03:00
Mark Otto 906a990eb7 Revert "Allow individual grid classes to override .row-cols (#33621)" (#34612)
This reverts commit f2b47e1c8a.
2021-07-29 06:29:46 +03:00
628 changed files with 53430 additions and 38775 deletions
+14 -14
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.55 kB"
},
{
"path": "./dist/css/bootstrap-reboot.css",
"maxSize": "2 kB"
"maxSize": "2.75 kB"
},
{
"path": "./dist/css/bootstrap-reboot.min.css",
"maxSize": "2 kB"
"maxSize": "2.5 kB"
},
{
"path": "./dist/css/bootstrap-utilities.css",
"maxSize": "7.75 kB"
"maxSize": "8.0 kB"
},
{
"path": "./dist/css/bootstrap-utilities.min.css",
"maxSize": "6.75 kB"
"maxSize": "7.25 kB"
},
{
"path": "./dist/css/bootstrap.css",
"maxSize": "25 kB"
"maxSize": "28.75 kB"
},
{
"path": "./dist/css/bootstrap.min.css",
"maxSize": "22.75 kB"
"maxSize": "26.5 kB"
},
{
"path": "./dist/js/bootstrap.bundle.js",
"maxSize": "42 kB"
"maxSize": "43.0 kB"
},
{
"path": "./dist/js/bootstrap.bundle.min.js",
"maxSize": "22.25 kB"
"maxSize": "22.75 kB"
},
{
"path": "./dist/js/bootstrap.esm.js",
"maxSize": "27.5 kB"
"maxSize": "27.75 kB"
},
{
"path": "./dist/js/bootstrap.esm.min.js",
"maxSize": "18.25 kB"
"maxSize": "18.5 kB"
},
{
"path": "./dist/js/bootstrap.js",
"maxSize": "28 kB"
"maxSize": "28.5 kB"
},
{
"path": "./dist/js/bootstrap.min.js",
"maxSize": "15.75 kB"
"maxSize": "16.25 kB"
}
],
"ci": {
+128
View File
@@ -0,0 +1,128 @@
{
"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",
"precompiled",
"prefersreducedmotion",
"prepended",
"printf",
"rects",
"relref",
"rgba",
"roboto",
"RTLCSS",
"ruleset",
"screenreaders",
"scrollbars",
"scrollspy",
"Segoe",
"semibold",
"srcset",
"stickied",
"Stylelint",
"subnav",
"tabbable",
"textareas",
"toggleable",
"topbar",
"touchend",
"twbs",
"unitless",
"unstylable",
"unstyled",
"Uppercased",
"urlize",
"vbtn",
"viewports",
"vstack",
"walkthroughs",
"WCAG",
"zindex"
],
"language": "en-US",
"files": [
"**/*.md"
],
"ignorePaths": [
".cspell.json",
"dist/",
"*.min.*",
"**/*rtl*",
"**/tests/**"
],
"useGitignore": true
}
+1 -8
View File
@@ -37,6 +37,7 @@
}
],
"no-console": "error",
"no-negated-condition": "off",
"object-curly-spacing": [
"error",
"always"
@@ -49,22 +50,14 @@
"error",
"never"
],
"unicorn/consistent-function-scoping": "off",
"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/no-useless-undefined": "off",
"unicorn/numeric-separators-style": "off",
"unicorn/prefer-array-flat": "off",
"unicorn/prefer-dom-node-append": "off",
"unicorn/prefer-dom-node-dataset": "off",
"unicorn/prefer-dom-node-remove": "off",
"unicorn/prefer-module": "off",
"unicorn/prefer-prototype-methods": "off",
"unicorn/prefer-query-selector": "off",
"unicorn/prefer-spread": "off",
"unicorn/prevent-abbreviations": "off"
-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
+3
View File
@@ -7,6 +7,9 @@ categories:
- title: '❗ Breaking Changes'
labels:
- 'breaking-change'
- title: '🚀 Highlights'
labels:
- 'release-highlight'
- title: '🚀 Features'
labels:
- 'new-feature'
+5 -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
@@ -34,3 +35,4 @@ jobs:
env:
BROWSER_STACK_ACCESS_KEY: "${{ secrets.BROWSER_STACK_ACCESS_KEY }}"
BROWSER_STACK_USERNAME: "${{ secrets.BROWSER_STACK_USERNAME }}"
GITHUB_SHA: "${{ github.sha }}"
+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@v1
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 == 'awaiting-reply'
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 [JS Bin](https://jsbin.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": {
+1 -1
View File
@@ -2,7 +2,7 @@
## 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.
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make 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.
## Our Standards
+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
+72 -64
View File
@@ -1,6 +1,6 @@
<p align="center">
<a href="https://getbootstrap.com/">
<img src="https://getbootstrap.com/docs/5.0/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.0/"><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,14 +46,14 @@ 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.0.2.zip)
- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.2.0-beta1.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.0.2`
- Install with [npm](https://www.npmjs.com/): `npm install bootstrap@v5.2.0-beta1`
- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap@v5.2.0-beta1`
- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.2.0-beta1`
- 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.0/getting-started/introduction/) for information on the framework contents, templates and examples, and more.
Read the [Getting started page](https://getbootstrap.com/docs/5.2/getting-started/introduction/) for information on the framework contents, templates, examples, and more.
## Status
@@ -65,8 +65,6 @@ Read the [Getting started page](https://getbootstrap.com/docs/5.0/getting-starte
[![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,59 +77,63 @@ Read the [Getting started page](https://getbootstrap.com/docs/5.0/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
@@ -205,11 +207,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 +244,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/).
+69 -147
View File
@@ -2,8 +2,8 @@
/*!
* 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)
*/
@@ -11,172 +11,94 @@
const path = require('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()
})()
+4 -4
View File
@@ -2,8 +2,8 @@
/*!
* 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)
*/
@@ -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)
+7 -7
View File
@@ -5,8 +5,8 @@
* 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)
*/
@@ -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'
}
}
}
+5 -4
View File
@@ -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
+7 -3
View File
@@ -2,8 +2,8 @@
/*!
* 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)
*/
@@ -26,7 +26,11 @@ execFile('java', ['-version'], (error, stdout, stderr) => {
// "autocomplete" is included in <button> and checkboxes and radio <input>s due to
// Firefox's non-standard autocomplete behavior - see https://bugzilla.mozilla.org/show_bug.cgi?id=654072
'Attribute “autocomplete” is only allowed when the input type is.*',
'Attribute “autocomplete” not allowed on element “button” at this point.'
'Attribute “autocomplete” not allowed on element “button” at this point.',
// Per https://www.w3.org/TR/html-aria/#docconformance having "aria-disabled" on a link is
// NOT RECOMMENDED, but it's still valid - we explain in the docs that it's not ideal,
// and offer more robust alternatives, but also need to show a less-than-ideal example
'An “aria-disabled” attribute whose value is “true” should not be specified on an “a” element that has an “href” attribute.'
].join('|')
const args = [
+9 -9
View File
@@ -3,7 +3,7 @@
/*!
* 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)
*/
@@ -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 -23
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.0/dist
target: static/docs/5.2/dist
- source: site/assets
target: assets
- source: site/content
@@ -36,21 +42,21 @@ module:
target: layouts
- source: site/static
target: static
- source: site/static/docs/5.0/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.0/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."
authors: "Mark Otto, Jacob Thornton, and Bootstrap contributors"
social_image_path: /docs/5.0/assets/brand/bootstrap-social.png
social_logo_path: /docs/5.0/assets/brand/bootstrap-social-logo.png
social_image_path: /docs/5.2/assets/brand/bootstrap-social.png
social_logo_path: /docs/5.2/assets/brand/bootstrap-social-logo.png
current_version: "5.0.2"
current_ruby_version: "5.0.2"
docs_version: "5.0"
rfs_version: "9.0.3"
current_version: "5.2.0-beta1"
current_ruby_version: "5.2.0-beta1"
docs_version: "5.2"
rfs_version: "v9.0.6"
github_org: "https://github.com/twbs"
repo: "https://github.com/twbs/bootstrap"
twitter: "getbootstrap"
@@ -59,21 +65,26 @@ params:
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.0.2.zip"
dist: "https://github.com/twbs/bootstrap/releases/download/v5.0.2/bootstrap-5.0.2-dist.zip"
dist_examples: "https://github.com/twbs/bootstrap/releases/download/v5.0.2/bootstrap-5.0.2-examples.zip"
source: "https://github.com/twbs/bootstrap/archive/v5.2.0-beta1.zip"
dist: "https://github.com/twbs/bootstrap/releases/download/v5.2.0-beta1/bootstrap-5.2.0-beta1-dist.zip"
dist_examples: "https://github.com/twbs/bootstrap/releases/download/v5.2.0-beta1/bootstrap-5.2.0-beta1-examples.zip"
cdn:
# See https://www.srihash.org for info on how to generate the hashes
css: "https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"
css_hash: "sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"
css_rtl: "https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.rtl.min.css"
css_rtl_hash: "sha384-gXt9imSW0VcJVHezoNQsP+TNrjYXoGcrqBZJpry9zJt8PCQjobwmhMGaDHTASo9N"
js: "https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js"
js_hash: "sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF"
js_bundle: "https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
js_bundle_hash: "sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
popper: "https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js"
popper_hash: "sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p"
css: "https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css"
css_hash: "sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor"
css_rtl: "https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.rtl.min.css"
css_rtl_hash: "sha384-dc2NSrAXbAkjrdm9IYrX10fQq9SDG6Vjz7nQVKdKcJl3pC+k37e7qJR5MVSCS+wR"
js: "https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.min.js"
js_hash: "sha384-kjU+l4N0Yf4ZOJErLsIcvOU2qSb74wXpOhqTvwVx3OElZRweTnQ6d31fXEoRD1Jy"
js_bundle: "https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js"
js_bundle_hash: "sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2"
popper: "https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.5/dist/umd/popper.min.js"
popper_hash: "sha384-Xe+8cL9oJa6tN/veChSP7q+mnSPaj5Bcu9mPX5F5xIGE0DVittaqT5lorf0EI7Vk"
anchors:
min: 2
max: 5
+277 -210
View File
@@ -1,9 +1,79 @@
/*!
* Bootstrap Grid v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Bootstrap Grid v5.2.0-beta1 (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)
*/
:root {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-white-rgb: 255, 255, 255;
--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", "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);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--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-heading-color: ;
--bs-link-color: #0d6efd;
--bs-link-hover-color: #0a58ca;
--bs-code-color: #d63384;
--bs-highlight-bg: #fff3cd;
}
.container,
.container-fluid,
.container-xxl,
@@ -11,9 +81,11 @@
.container-lg,
.container-md,
.container-sm {
--bs-gutter-x: 1.5rem;
--bs-gutter-y: 0;
width: 100%;
padding-right: var(--bs-gutter-x, 0.75rem);
padding-left: var(--bs-gutter-x, 0.75rem);
padding-right: calc(var(--bs-gutter-x) * 0.5);
padding-left: calc(var(--bs-gutter-x) * 0.5);
margin-right: auto;
margin-left: auto;
}
@@ -48,17 +120,17 @@
--bs-gutter-y: 0;
display: flex;
flex-wrap: wrap;
margin-top: calc(var(--bs-gutter-y) * -1);
margin-right: calc(var(--bs-gutter-x) * -.5);
margin-left: calc(var(--bs-gutter-x) * -.5);
margin-top: calc(-1 * var(--bs-gutter-y));
margin-right: calc(-0.5 * var(--bs-gutter-x));
margin-left: calc(-0.5 * var(--bs-gutter-x));
}
.row > * {
box-sizing: border-box;
flex-shrink: 0;
width: 100%;
max-width: 100%;
padding-right: calc(var(--bs-gutter-x) * .5);
padding-left: calc(var(--bs-gutter-x) * .5);
padding-right: calc(var(--bs-gutter-x) * 0.5);
padding-left: calc(var(--bs-gutter-x) * 0.5);
margin-top: var(--bs-gutter-y);
}
@@ -101,206 +173,6 @@
width: 16.6666666667%;
}
@media (min-width: 576px) {
.col-sm {
flex: 1 0 0%;
}
.row-cols-sm-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-sm-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-sm-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-sm-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-sm-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-sm-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-sm-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
}
@media (min-width: 768px) {
.col-md {
flex: 1 0 0%;
}
.row-cols-md-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-md-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-md-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-md-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-md-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-md-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-md-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
}
@media (min-width: 992px) {
.col-lg {
flex: 1 0 0%;
}
.row-cols-lg-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-lg-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-lg-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-lg-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-lg-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-lg-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-lg-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
}
@media (min-width: 1200px) {
.col-xl {
flex: 1 0 0%;
}
.row-cols-xl-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-xl-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-xl-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-xl-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-xl-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-xl-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-xl-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
}
@media (min-width: 1400px) {
.col-xxl {
flex: 1 0 0%;
}
.row-cols-xxl-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-xxl-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-xxl-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-xxl-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-xxl-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-xxl-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-xxl-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
}
.col-auto {
flex: 0 0 auto;
width: auto;
@@ -471,6 +343,45 @@
}
@media (min-width: 576px) {
.col-sm {
flex: 1 0 0%;
}
.row-cols-sm-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-sm-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-sm-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-sm-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-sm-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-sm-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-sm-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
.col-sm-auto {
flex: 0 0 auto;
width: auto;
@@ -645,6 +556,45 @@
}
}
@media (min-width: 768px) {
.col-md {
flex: 1 0 0%;
}
.row-cols-md-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-md-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-md-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-md-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-md-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-md-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-md-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
.col-md-auto {
flex: 0 0 auto;
width: auto;
@@ -819,6 +769,45 @@
}
}
@media (min-width: 992px) {
.col-lg {
flex: 1 0 0%;
}
.row-cols-lg-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-lg-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-lg-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-lg-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-lg-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-lg-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-lg-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
.col-lg-auto {
flex: 0 0 auto;
width: auto;
@@ -993,6 +982,45 @@
}
}
@media (min-width: 1200px) {
.col-xl {
flex: 1 0 0%;
}
.row-cols-xl-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-xl-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-xl-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-xl-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-xl-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-xl-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-xl-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
.col-xl-auto {
flex: 0 0 auto;
width: auto;
@@ -1167,6 +1195,45 @@
}
}
@media (min-width: 1400px) {
.col-xxl {
flex: 1 0 0%;
}
.row-cols-xxl-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-xxl-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-xxl-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-xxl-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-xxl-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-xxl-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-xxl-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
.col-xxl-auto {
flex: 0 0 auto;
width: auto;
+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
+277 -210
View File
@@ -1,9 +1,79 @@
/*!
* Bootstrap Grid v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Bootstrap Grid v5.2.0-beta1 (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)
*/
:root {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-white-rgb: 255, 255, 255;
--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", "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);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--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-heading-color: ;
--bs-link-color: #0d6efd;
--bs-link-hover-color: #0a58ca;
--bs-code-color: #d63384;
--bs-highlight-bg: #fff3cd;
}
.container,
.container-fluid,
.container-xxl,
@@ -11,9 +81,11 @@
.container-lg,
.container-md,
.container-sm {
--bs-gutter-x: 1.5rem;
--bs-gutter-y: 0;
width: 100%;
padding-left: var(--bs-gutter-x, 0.75rem);
padding-right: var(--bs-gutter-x, 0.75rem);
padding-left: calc(var(--bs-gutter-x) * 0.5);
padding-right: calc(var(--bs-gutter-x) * 0.5);
margin-left: auto;
margin-right: auto;
}
@@ -48,17 +120,17 @@
--bs-gutter-y: 0;
display: flex;
flex-wrap: wrap;
margin-top: calc(var(--bs-gutter-y) * -1);
margin-left: calc(var(--bs-gutter-x) * -.5);
margin-right: calc(var(--bs-gutter-x) * -.5);
margin-top: calc(-1 * var(--bs-gutter-y));
margin-left: calc(-0.5 * var(--bs-gutter-x));
margin-right: calc(-0.5 * var(--bs-gutter-x));
}
.row > * {
box-sizing: border-box;
flex-shrink: 0;
width: 100%;
max-width: 100%;
padding-left: calc(var(--bs-gutter-x) * .5);
padding-right: calc(var(--bs-gutter-x) * .5);
padding-left: calc(var(--bs-gutter-x) * 0.5);
padding-right: calc(var(--bs-gutter-x) * 0.5);
margin-top: var(--bs-gutter-y);
}
@@ -101,206 +173,6 @@
width: 16.6666666667%;
}
@media (min-width: 576px) {
.col-sm {
flex: 1 0 0%;
}
.row-cols-sm-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-sm-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-sm-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-sm-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-sm-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-sm-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-sm-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
}
@media (min-width: 768px) {
.col-md {
flex: 1 0 0%;
}
.row-cols-md-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-md-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-md-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-md-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-md-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-md-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-md-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
}
@media (min-width: 992px) {
.col-lg {
flex: 1 0 0%;
}
.row-cols-lg-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-lg-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-lg-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-lg-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-lg-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-lg-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-lg-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
}
@media (min-width: 1200px) {
.col-xl {
flex: 1 0 0%;
}
.row-cols-xl-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-xl-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-xl-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-xl-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-xl-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-xl-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-xl-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
}
@media (min-width: 1400px) {
.col-xxl {
flex: 1 0 0%;
}
.row-cols-xxl-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-xxl-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-xxl-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-xxl-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-xxl-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-xxl-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-xxl-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
}
.col-auto {
flex: 0 0 auto;
width: auto;
@@ -471,6 +343,45 @@
}
@media (min-width: 576px) {
.col-sm {
flex: 1 0 0%;
}
.row-cols-sm-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-sm-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-sm-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-sm-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-sm-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-sm-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-sm-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
.col-sm-auto {
flex: 0 0 auto;
width: auto;
@@ -645,6 +556,45 @@
}
}
@media (min-width: 768px) {
.col-md {
flex: 1 0 0%;
}
.row-cols-md-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-md-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-md-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-md-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-md-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-md-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-md-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
.col-md-auto {
flex: 0 0 auto;
width: auto;
@@ -819,6 +769,45 @@
}
}
@media (min-width: 992px) {
.col-lg {
flex: 1 0 0%;
}
.row-cols-lg-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-lg-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-lg-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-lg-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-lg-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-lg-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-lg-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
.col-lg-auto {
flex: 0 0 auto;
width: auto;
@@ -993,6 +982,45 @@
}
}
@media (min-width: 1200px) {
.col-xl {
flex: 1 0 0%;
}
.row-cols-xl-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-xl-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-xl-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-xl-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-xl-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-xl-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-xl-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
.col-xl-auto {
flex: 0 0 auto;
width: auto;
@@ -1167,6 +1195,45 @@
}
}
@media (min-width: 1400px) {
.col-xxl {
flex: 1 0 0%;
}
.row-cols-xxl-auto > * {
flex: 0 0 auto;
width: auto;
}
.row-cols-xxl-1 > * {
flex: 0 0 auto;
width: 100%;
}
.row-cols-xxl-2 > * {
flex: 0 0 auto;
width: 50%;
}
.row-cols-xxl-3 > * {
flex: 0 0 auto;
width: 33.3333333333%;
}
.row-cols-xxl-4 > * {
flex: 0 0 auto;
width: 25%;
}
.row-cols-xxl-5 > * {
flex: 0 0 auto;
width: 20%;
}
.row-cols-xxl-6 > * {
flex: 0 0 auto;
width: 16.6666666667%;
}
.col-xxl-auto {
flex: 0 0 auto;
width: auto;
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
+99 -34
View File
@@ -1,10 +1,80 @@
/*!
* Bootstrap Reboot v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Bootstrap Reboot v5.2.0-beta1 (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;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-white-rgb: 255, 255, 255;
--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", "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);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--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-heading-color: ;
--bs-link-color: #0d6efd;
--bs-link-hover-color: #0a58ca;
--bs-code-color: #d63384;
--bs-highlight-bg: #fff3cd;
}
*,
*::before,
*::after {
@@ -19,12 +89,13 @@
body {
margin: 0;
font-family: 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";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
background-color: #fff;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
@@ -32,20 +103,17 @@ 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;
font-weight: 500;
line-height: 1.2;
color: var(--bs-heading-color);
}
h1 {
@@ -97,8 +165,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;
@@ -154,8 +221,8 @@ small {
}
mark {
padding: 0.2em;
background-color: #fcf8e3;
padding: 0.1875em;
background-color: var(--bs-highlight-bg);
}
sub,
@@ -175,11 +242,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 {
@@ -191,10 +258,8 @@ pre,
code,
kbd,
samp {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
font-family: var(--bs-font-monospace);
font-size: 1em;
direction: ltr /* rtl:ignore */;
unicode-bidi: bidi-override;
}
pre {
@@ -212,7 +277,7 @@ pre code {
code {
font-size: 0.875em;
color: #d63384;
color: var(--bs-code-color);
word-wrap: break-word;
}
a > code {
@@ -220,16 +285,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 {
@@ -249,7 +313,7 @@ table {
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: #6c757d;
color: rgba(var(--bs-body-color-rgb), 0.75);
text-align: left;
}
@@ -308,8 +372,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,
@@ -393,11 +457,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 -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
+99 -34
View File
@@ -1,10 +1,80 @@
/*!
* Bootstrap Reboot v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Bootstrap Reboot v5.2.0-beta1 (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;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-white-rgb: 255, 255, 255;
--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", "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);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--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-heading-color: ;
--bs-link-color: #0d6efd;
--bs-link-hover-color: #0a58ca;
--bs-code-color: #d63384;
--bs-highlight-bg: #fff3cd;
}
*,
*::before,
*::after {
@@ -19,12 +89,13 @@
body {
margin: 0;
font-family: 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";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
background-color: #fff;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
@@ -32,20 +103,17 @@ 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;
font-weight: 500;
line-height: 1.2;
color: var(--bs-heading-color);
}
h1 {
@@ -97,8 +165,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;
@@ -154,8 +221,8 @@ small {
}
mark {
padding: 0.2em;
background-color: #fcf8e3;
padding: 0.1875em;
background-color: var(--bs-highlight-bg);
}
sub,
@@ -175,11 +242,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 {
@@ -191,10 +258,8 @@ pre,
code,
kbd,
samp {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
font-family: var(--bs-font-monospace);
font-size: 1em;
direction: ltr ;
unicode-bidi: bidi-override;
}
pre {
@@ -212,7 +277,7 @@ pre code {
code {
font-size: 0.875em;
color: #d63384;
color: var(--bs-code-color);
word-wrap: break-word;
}
a > code {
@@ -220,16 +285,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 {
@@ -249,7 +313,7 @@ table {
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: #6c757d;
color: rgba(var(--bs-body-color-rgb), 0.75);
text-align: right;
}
@@ -308,8 +372,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,
@@ -391,11 +455,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
+457 -220
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
+457 -220
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
+2624 -1571
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
+2622 -1585
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
+2891 -2565
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
+2698 -2453
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
+2709 -2466
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
+36 -141
View File
@@ -1,163 +1,67 @@
/*!
* Bootstrap alert.js v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap alert.js v5.2.0-beta1 (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/selector-engine.js'), require('./dom/event-handler.js'), require('./base-component.js')) :
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './base-component'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.SelectorEngine, global.EventHandler, global.Base));
}(this, (function (SelectorEngine, 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 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 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;
};
}
});
};
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.0.2): alert.js
* Bootstrap (v5.2.0-beta1): alert.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
const NAME = 'alert';
const DATA_KEY = 'bs.alert';
const EVENT_KEY = `.${DATA_KEY}`;
const DATA_API_KEY = '.data-api';
const SELECTOR_DISMISS = '[data-bs-dismiss="alert"]';
const EVENT_CLOSE = `close${EVENT_KEY}`;
const EVENT_CLOSED = `closed${EVENT_KEY}`;
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
const CLASS_NAME_ALERT = 'alert';
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;
} // Public
close(element) {
const rootElement = element ? this._getRootElement(element) : this._element;
close() {
const closeEvent = EventHandler__default.default.trigger(this._element, EVENT_CLOSE);
const customEvent = this._triggerCloseEvent(rootElement);
if (customEvent === null || customEvent.defaultPrevented) {
if (closeEvent.defaultPrevented) {
return;
}
this._removeElement(rootElement);
this._element.classList.remove(CLASS_NAME_SHOW);
const isAnimated = this._element.classList.contains(CLASS_NAME_FADE);
this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
} // Private
_getRootElement(element) {
return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`);
}
_destroyElement() {
this._element.remove();
_triggerCloseEvent(element) {
return EventHandler__default['default'].trigger(element, EVENT_CLOSE);
}
_removeElement(element) {
element.classList.remove(CLASS_NAME_SHOW);
const isAnimated = element.classList.contains(CLASS_NAME_FADE);
this._queueCallback(() => this._destroyElement(element), element, isAnimated);
}
_destroyElement(element) {
element.remove();
EventHandler__default['default'].trigger(element, EVENT_CLOSED);
EventHandler__default.default.trigger(this._element, EVENT_CLOSED);
this.dispose();
} // Static
@@ -165,41 +69,32 @@
return this.each(function () {
const data = Alert.getOrCreateInstance(this);
if (config === 'close') {
data[config](this);
if (typeof config !== 'string') {
return;
}
if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
throw new TypeError(`No method named "${config}"`);
}
data[config](this);
});
}
static handleDismiss(alertInstance) {
return function (event) {
if (event) {
event.preventDefault();
}
alertInstance.close(this);
};
}
}
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
* Data API implementation
*/
EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()));
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 -122
View File
@@ -1,153 +1,75 @@
/*!
* Bootstrap base-component.js v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap base-component.js v5.2.0-beta1 (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/selector-engine.js'), require('./dom/event-handler.js')) :
typeof define === 'function' && define.amd ? define(['./dom/data', './dom/selector-engine', './dom/event-handler'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Base = factory(global.Data, global.SelectorEngine, global.EventHandler));
}(this, (function (Data, SelectorEngine, 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 SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
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 SelectorEngine__default['default'].findOne(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);
};
const Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
const Config__default = /*#__PURE__*/_interopDefaultLegacy(Config);
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.0.2): base-component.js
* Bootstrap (v5.2.0-beta1): base-component.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
const VERSION = '5.0.2';
const VERSION = '5.2.0-beta1';
/**
* 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(element, this.DATA_KEY);
return Data__default.default.get(index.getElement(element), this.DATA_KEY);
}
static getOrCreateInstance(element, config = {}) {
@@ -158,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}`;
}
@@ -170,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 -73
View File
@@ -1,77 +1,27 @@
/*!
* Bootstrap button.js v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap button.js v5.2.0-beta1 (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/selector-engine.js'), require('./dom/event-handler.js'), require('./base-component.js')) :
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './base-component'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.SelectorEngine, global.EventHandler, global.Base));
}(this, (function (SelectorEngine, 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 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;
};
}
});
};
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.0.2): button.js
* Bootstrap (v5.2.0-beta1): button.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
const NAME = 'button';
@@ -82,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;
@@ -112,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
+249 -500
View File
@@ -1,185 +1,30 @@
/*!
* Bootstrap carousel.js v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap carousel.js v5.2.0-beta1 (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/selector-engine.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) :
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './dom/manipulator', './base-component'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.SelectorEngine, global.EventHandler, global.Manipulator, global.Base));
}(this, (function (SelectorEngine, EventHandler, Manipulator, 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 SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
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';
};
const reflow = element => 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))];
};
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.0.2): carousel.js
* Bootstrap (v5.2.0-beta1): carousel.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
const NAME = 'carousel';
@@ -190,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}`;
@@ -235,41 +54,52 @@
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)',
keyboard: 'boolean',
ride: '(boolean|string)',
pause: '(string|boolean)',
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
@@ -277,6 +107,10 @@
return Default;
}
static get DefaultType() {
return DefaultType;
}
static get NAME() {
return NAME;
} // Public
@@ -287,9 +121,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();
}
}
@@ -298,157 +133,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 start = event => {
if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {
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 (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {
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) {
@@ -461,95 +258,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;
@@ -557,61 +326,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;
}
@@ -619,11 +387,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;
}
@@ -631,91 +395,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
+121 -322
View File
@@ -1,180 +1,34 @@
/*!
* Bootstrap collapse.js v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap collapse.js v5.2.0-beta1 (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/selector-engine.js'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) :
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/data', './dom/event-handler', './dom/manipulator', './base-component'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.SelectorEngine, global.Data, global.EventHandler, global.Manipulator, global.Base));
}(this, (function (SelectorEngine, Data, EventHandler, Manipulator, 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 SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
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 SelectorEngine__default['default'].findOne(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}".`);
}
});
};
const reflow = element => 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;
};
}
});
};
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.0.2): collapse.js
* Bootstrap (v5.2.0-beta1): 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: ''
};
const DefaultType = {
toggle: 'boolean',
parent: '(string|element)'
};
const EVENT_SHOW = `show${EVENT_KEY}`;
const EVENT_SHOWN = `shown${EVENT_KEY}`;
const EVENT_HIDE = `hide${EVENT_KEY}`;
@@ -184,40 +38,44 @@
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 = '.show, .collapsing';
const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]';
const Default = {
toggle: true,
parent: null
};
const DefaultType = {
toggle: 'boolean',
parent: '(null|element)'
};
/**
* ------------------------------------------------------------------------
* 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 = SelectorEngine__default['default'].find(`${SELECTOR_DATA_TOGGLE}[href="#${this._element.id}"],` + `${SELECTOR_DATA_TOGGLE}[data-bs-target="#${this._element.id}"]`);
const toggleList = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE);
this._triggerArray = [];
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);
}
}
this._parent = this._config.parent ? this._getParent() : null;
this._initializeChildren();
if (!this._config.parent) {
this._addAriaAndCollapsedClass(this._element, this._triggerArray);
this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
}
if (this._config.toggle) {
@@ -230,13 +88,17 @@
return Default;
}
static get DefaultType() {
return DefaultType;
}
static get NAME() {
return NAME;
} // Public
toggle() {
if (this._element.classList.contains(CLASS_NAME_SHOW)) {
if (this._isShown()) {
this.hide();
} else {
this.show();
@@ -244,54 +106,30 @@
}
show() {
if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {
if (this._isTransitioning || this._isShown()) {
return;
}
let actives;
let activesData;
let activeChildren = []; // find active children
if (this._parent) {
actives = SelectorEngine__default['default'].find(SELECTOR_ACTIVES, this._parent).filter(elem => {
if (typeof this._config.parent === 'string') {
return elem.getAttribute('data-bs-parent') === this._config.parent;
}
return elem.classList.contains(CLASS_NAME_COLLAPSE);
});
if (actives.length === 0) {
actives = null;
}
if (this._config.parent) {
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) {
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;
}
if (actives) {
actives.forEach(elemActive => {
if (container !== elemActive) {
Collapse.collapseInterface(elemActive, 'hide');
}
if (!activesData) {
Data__default['default'].set(elemActive, DATA_KEY, null);
}
});
for (const activeInstance of activeChildren) {
activeInstance.hide();
}
const dimension = this._getDimension();
@@ -302,23 +140,19 @@
this._element.style[dimension] = 0;
if (this._triggerArray.length) {
this._triggerArray.forEach(element => {
element.classList.remove(CLASS_NAME_COLLAPSED);
element.setAttribute('aria-expanded', true);
});
}
this._addAriaAndCollapsedClass(this._triggerArray, true);
this.setTransitioning(true);
this._isTransitioning = true;
const complete = () => {
this._isTransitioning = false;
this._element.classList.remove(CLASS_NAME_COLLAPSING);
this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
this._element.style[dimension] = '';
this.setTransitioning(false);
EventHandler__default['default'].trigger(this._element, EVENT_SHOWN);
EventHandler__default.default.trigger(this._element, EVENT_SHOWN);
};
const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
@@ -330,11 +164,11 @@
}
hide() {
if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {
if (this._isTransitioning || !this._isShown()) {
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;
@@ -343,36 +177,30 @@
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);
if (triggerArrayLength > 0) {
for (let i = 0; i < triggerArrayLength; i++) {
const trigger = this._triggerArray[i];
const elem = getElementFromSelector(trigger);
if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {
trigger.classList.add(CLASS_NAME_COLLAPSED);
trigger.setAttribute('aria-expanded', false);
}
if (element && !this._isShown(element)) {
this._addAriaAndCollapsedClass([trigger], false);
}
}
this.setTransitioning(true);
this._isTransitioning = true;
const complete = () => {
this.setTransitioning(false);
this._isTransitioning = false;
this._element.classList.remove(CLASS_NAME_COLLAPSING);
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] = '';
@@ -380,133 +208,104 @@
this._queueCallback(complete, this._element, true);
}
setTransitioning(isTransitioning) {
this._isTransitioning = isTransitioning;
_isShown(element = this._element) {
return element.classList.contains(CLASS_NAME_SHOW);
} // Private
_getConfig(config) {
config = { ...Default,
...config
};
_configAfterMerge(config) {
config.toggle = Boolean(config.toggle); // Coerce string values
typeCheckConfig(NAME, config, DefaultType);
config.parent = index.getElement(config.parent);
return config;
}
_getDimension() {
return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT;
return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
}
_getParent() {
let {
parent
} = this._config;
parent = getElement(parent);
const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent="${parent}"]`;
SelectorEngine__default['default'].find(selector, parent).forEach(element => {
const selected = getElementFromSelector(element);
this._addAriaAndCollapsedClass(selected, [element]);
});
return parent;
}
_addAriaAndCollapsedClass(element, triggerArray) {
if (!element || !triggerArray.length) {
_initializeChildren() {
if (!this._config.parent) {
return;
}
const isOpen = element.classList.contains(CLASS_NAME_SHOW);
triggerArray.forEach(elem => {
if (isOpen) {
elem.classList.remove(CLASS_NAME_COLLAPSED);
} else {
elem.classList.add(CLASS_NAME_COLLAPSED);
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));
}
elem.setAttribute('aria-expanded', isOpen);
});
} // Static
static collapseInterface(element, config) {
let data = Collapse.getInstance(element);
const _config = { ...Default,
...Manipulator__default['default'].getDataAttributes(element),
...(typeof config === 'object' && config ? config : {})
};
if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
_config.toggle = false;
}
if (!data) {
data = new Collapse(element, _config);
}
if (typeof config === 'string') {
if (typeof data[config] === 'undefined') {
throw new TypeError(`No method named "${config}"`);
}
data[config]();
}
}
_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) {
if (!triggerArray.length) {
return;
}
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 () {
Collapse.collapseInterface(this, config);
const data = Collapse.getOrCreateInstance(this, _config);
if (typeof config === 'string') {
if (typeof data[config] === 'undefined') {
throw new TypeError(`No method named "${config}"`);
}
data[config]();
}
});
}
}
/**
* ------------------------------------------------------------------------
* 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 triggerData = Manipulator__default['default'].getDataAttributes(this);
const selector = getSelectorFromElement(this);
const selectorElements = SelectorEngine__default['default'].find(selector);
selectorElements.forEach(element => {
const data = Collapse.getInstance(element);
let config;
const selector = index.getSelectorFromElement(this);
const selectorElements = SelectorEngine__default.default.find(selector);
if (data) {
// update parent attribute
if (data._parent === null && typeof triggerData.parent === 'string') {
data._config.parent = triggerData.parent;
data._parent = data._getParent();
}
config = 'toggle';
} else {
config = triggerData;
}
Collapse.collapseInterface(element, config);
});
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.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap data.js v5.2.0-beta1 (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.0.2): dom/data.js
* Bootstrap (v5.2.0-beta1): 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.0.2): 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.0-beta1): 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;;;;;;;;"}
+60 -96
View File
@@ -1,36 +1,22 @@
/*!
* Bootstrap event-handler.js v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap event-handler.js v5.2.0-beta1 (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';
const getjQuery = () => {
const {
jQuery
} = window;
if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
return jQuery;
}
return null;
};
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.0.2): dom/event-handler.js
* Bootstrap (v5.2.0-beta1): dom/event-handler.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
@@ -43,12 +29,9 @@
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) {
@@ -81,66 +64,53 @@
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) {
// eslint-disable-next-line unicorn/consistent-destructuring
EventHandler.off(element, event.type, selector, fn);
}
return fn.apply(target, [event]);
for (const domElement of domElements) {
if (domElement !== target) {
continue;
}
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;
return Object.values(events).find(event => event.originalHandler === handler && event.delegationSelector === delegationSelector);
}
function normalizeParams(originalTypeEvent, handler, delegationFn) {
function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
const delegation = typeof handler === 'string';
const originalHandler = delegation ? delegationFn : handler;
const originalHandler = delegation ? delegationFunction : handler;
let typeEvent = getTypeEvent(originalTypeEvent);
const isNative = nativeEvents.has(typeEvent);
if (!isNative) {
if (!nativeEvents.has(typeEvent)) {
typeEvent = originalTypeEvent;
}
return [delegation, originalHandler, 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;
handler = delegationFunction;
delegationFunction = null;
} // 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);
@@ -148,25 +118,25 @@
};
};
if (delegationFn) {
delegationFn = wrapFn(delegationFn);
if (delegationFunction) {
delegationFunction = wrapFunction(delegationFunction);
} else {
handler = wrapFn(handler);
handler = wrapFunction(handler);
}
}
const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
const [delegation, originalHandler, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
const events = getEvent(element);
const handlers = events[typeEvent] || (events[typeEvent] = {});
const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);
const previousFunction = findHandler(handlers, originalHandler, delegation ? 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);
const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFunction) : bootstrapHandler(element, handler);
fn.delegationSelector = delegation ? handler : null;
fn.originalHandler = originalHandler;
fn.oneOff = oneOff;
@@ -188,12 +158,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);
}
});
}
}
function getTypeEvent(event) {
@@ -203,20 +174,20 @@
}
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 [delegation, originalHandler, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
const inNamespace = typeEvent !== originalTypeEvent;
const events = getEvent(element);
const isNamespace = originalTypeEvent.startsWith('.');
@@ -232,20 +203,21 @@
}
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);
}
});
}
},
trigger(element, event, args) {
@@ -253,15 +225,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);
@@ -271,26 +241,20 @@
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
const evt = new Event(event, {
bubbles,
cancelable: true
}); // merge custom information in our event
if (typeof args !== 'undefined') {
Object.keys(args).forEach(key => {
for (const key of Object.keys(args)) {
Object.defineProperty(evt, key, {
get() {
return args[key];
}
});
});
}
}
if (defaultPrevented) {
@@ -301,7 +265,7 @@
element.dispatchEvent(evt);
}
if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {
if (evt.defaultPrevented && jQueryEvent) {
jQueryEvent.preventDefault();
}
@@ -312,5 +276,5 @@
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.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap manipulator.js v5.2.0-beta1 (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.0.2): dom/manipulator.js
* Bootstrap (v5.2.0-beta1): 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 + document.body.scrollTop,
left: rect.left + document.body.scrollLeft
};
},
position(element) {
return {
top: element.offsetTop,
left: element.offsetLeft
};
}
};
return Manipulator;
})));
}));
//# sourceMappingURL=manipulator.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"manipulator.js","sources":["../../src/dom/manipulator.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n"],"names":["normalizeData","val","Number","toString","normalizeDataKey","key","replace","chr","toLowerCase","Manipulator","setDataAttribute","element","value","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","Object","keys","dataset","filter","startsWith","forEach","pureKey","charAt","slice","length","getDataAttribute","getAttribute","offset","rect","getBoundingClientRect","top","document","body","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft"],"mappings":";;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;EAEA,SAASA,aAAT,CAAuBC,GAAvB,EAA4B;EAC1B,MAAIA,GAAG,KAAK,MAAZ,EAAoB;EAClB,WAAO,IAAP;EACD;;EAED,MAAIA,GAAG,KAAK,OAAZ,EAAqB;EACnB,WAAO,KAAP;EACD;;EAED,MAAIA,GAAG,KAAKC,MAAM,CAACD,GAAD,CAAN,CAAYE,QAAZ,EAAZ,EAAoC;EAClC,WAAOD,MAAM,CAACD,GAAD,CAAb;EACD;;EAED,MAAIA,GAAG,KAAK,EAAR,IAAcA,GAAG,KAAK,MAA1B,EAAkC;EAChC,WAAO,IAAP;EACD;;EAED,SAAOA,GAAP;EACD;;EAED,SAASG,gBAAT,CAA0BC,GAA1B,EAA+B;EAC7B,SAAOA,GAAG,CAACC,OAAJ,CAAY,QAAZ,EAAsBC,GAAG,IAAK,IAAGA,GAAG,CAACC,WAAJ,EAAkB,EAAnD,CAAP;EACD;;QAEKC,WAAW,GAAG;EAClBC,EAAAA,gBAAgB,CAACC,OAAD,EAAUN,GAAV,EAAeO,KAAf,EAAsB;EACpCD,IAAAA,OAAO,CAACE,YAAR,CAAsB,WAAUT,gBAAgB,CAACC,GAAD,CAAM,EAAtD,EAAyDO,KAAzD;EACD,GAHiB;;EAKlBE,EAAAA,mBAAmB,CAACH,OAAD,EAAUN,GAAV,EAAe;EAChCM,IAAAA,OAAO,CAACI,eAAR,CAAyB,WAAUX,gBAAgB,CAACC,GAAD,CAAM,EAAzD;EACD,GAPiB;;EASlBW,EAAAA,iBAAiB,CAACL,OAAD,EAAU;EACzB,QAAI,CAACA,OAAL,EAAc;EACZ,aAAO,EAAP;EACD;;EAED,UAAMM,UAAU,GAAG,EAAnB;EAEAC,IAAAA,MAAM,CAACC,IAAP,CAAYR,OAAO,CAACS,OAApB,EACGC,MADH,CACUhB,GAAG,IAAIA,GAAG,CAACiB,UAAJ,CAAe,IAAf,CADjB,EAEGC,OAFH,CAEWlB,GAAG,IAAI;EACd,UAAImB,OAAO,GAAGnB,GAAG,CAACC,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAd;EACAkB,MAAAA,OAAO,GAAGA,OAAO,CAACC,MAAR,CAAe,CAAf,EAAkBjB,WAAlB,KAAkCgB,OAAO,CAACE,KAAR,CAAc,CAAd,EAAiBF,OAAO,CAACG,MAAzB,CAA5C;EACAV,MAAAA,UAAU,CAACO,OAAD,CAAV,GAAsBxB,aAAa,CAACW,OAAO,CAACS,OAAR,CAAgBf,GAAhB,CAAD,CAAnC;EACD,KANH;EAQA,WAAOY,UAAP;EACD,GAzBiB;;EA2BlBW,EAAAA,gBAAgB,CAACjB,OAAD,EAAUN,GAAV,EAAe;EAC7B,WAAOL,aAAa,CAACW,OAAO,CAACkB,YAAR,CAAsB,WAAUzB,gBAAgB,CAACC,GAAD,CAAM,EAAtD,CAAD,CAApB;EACD,GA7BiB;;EA+BlByB,EAAAA,MAAM,CAACnB,OAAD,EAAU;EACd,UAAMoB,IAAI,GAAGpB,OAAO,CAACqB,qBAAR,EAAb;EAEA,WAAO;EACLC,MAAAA,GAAG,EAAEF,IAAI,CAACE,GAAL,GAAWC,QAAQ,CAACC,IAAT,CAAcC,SADzB;EAELC,MAAAA,IAAI,EAAEN,IAAI,CAACM,IAAL,GAAYH,QAAQ,CAACC,IAAT,CAAcG;EAF3B,KAAP;EAID,GAtCiB;;EAwClBC,EAAAA,QAAQ,CAAC5B,OAAD,EAAU;EAChB,WAAO;EACLsB,MAAAA,GAAG,EAAEtB,OAAO,CAAC6B,SADR;EAELH,MAAAA,IAAI,EAAE1B,OAAO,CAAC8B;EAFT,KAAP;EAID;;EA7CiB;;;;;;;;"}
{"version":3,"file":"manipulator.js","sources":["../../src/dom/manipulator.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n if (value === Number(value).toString()) {\n return Number(value)\n }\n\n if (value === '' || value === 'null') {\n return null\n }\n\n if (typeof value !== 'string') {\n return value\n }\n\n try {\n return JSON.parse(decodeURIComponent(value))\n } catch {\n return value\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n }\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n }\n}\n\nexport default Manipulator\n"],"names":["normalizeData","value","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","key","replace","chr","toLowerCase","Manipulator","setDataAttribute","element","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","Object","keys","dataset","filter","startsWith","pureKey","charAt","slice","length","getDataAttribute","getAttribute"],"mappings":";;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;EAEA,SAASA,aAAT,CAAuBC,KAAvB,EAA8B;IAC5B,IAAIA,KAAK,KAAK,MAAd,EAAsB;EACpB,IAAA,OAAO,IAAP,CAAA;EACD,GAAA;;IAED,IAAIA,KAAK,KAAK,OAAd,EAAuB;EACrB,IAAA,OAAO,KAAP,CAAA;EACD,GAAA;;IAED,IAAIA,KAAK,KAAKC,MAAM,CAACD,KAAD,CAAN,CAAcE,QAAd,EAAd,EAAwC;MACtC,OAAOD,MAAM,CAACD,KAAD,CAAb,CAAA;EACD,GAAA;;EAED,EAAA,IAAIA,KAAK,KAAK,EAAV,IAAgBA,KAAK,KAAK,MAA9B,EAAsC;EACpC,IAAA,OAAO,IAAP,CAAA;EACD,GAAA;;EAED,EAAA,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;EAC7B,IAAA,OAAOA,KAAP,CAAA;EACD,GAAA;;IAED,IAAI;MACF,OAAOG,IAAI,CAACC,KAAL,CAAWC,kBAAkB,CAACL,KAAD,CAA7B,CAAP,CAAA;EACD,GAFD,CAEE,OAAM,OAAA,EAAA;EACN,IAAA,OAAOA,KAAP,CAAA;EACD,GAAA;EACF,CAAA;;EAED,SAASM,gBAAT,CAA0BC,GAA1B,EAA+B;EAC7B,EAAA,OAAOA,GAAG,CAACC,OAAJ,CAAY,QAAZ,EAAsBC,GAAG,IAAK,CAAA,CAAA,EAAGA,GAAG,CAACC,WAAJ,EAAkB,EAAnD,CAAP,CAAA;EACD,CAAA;;AAED,QAAMC,WAAW,GAAG;EAClBC,EAAAA,gBAAgB,CAACC,OAAD,EAAUN,GAAV,EAAeP,KAAf,EAAsB;MACpCa,OAAO,CAACC,YAAR,CAAsB,CAAUR,QAAAA,EAAAA,gBAAgB,CAACC,GAAD,CAAM,CAAtD,CAAA,EAAyDP,KAAzD,CAAA,CAAA;KAFgB;;EAKlBe,EAAAA,mBAAmB,CAACF,OAAD,EAAUN,GAAV,EAAe;MAChCM,OAAO,CAACG,eAAR,CAAyB,CAAA,QAAA,EAAUV,gBAAgB,CAACC,GAAD,CAAM,CAAzD,CAAA,CAAA,CAAA;KANgB;;IASlBU,iBAAiB,CAACJ,OAAD,EAAU;MACzB,IAAI,CAACA,OAAL,EAAc;EACZ,MAAA,OAAO,EAAP,CAAA;EACD,KAAA;;MAED,MAAMK,UAAU,GAAG,EAAnB,CAAA;MACA,MAAMC,MAAM,GAAGC,MAAM,CAACC,IAAP,CAAYR,OAAO,CAACS,OAApB,CAA6BC,CAAAA,MAA7B,CAAoChB,GAAG,IAAIA,GAAG,CAACiB,UAAJ,CAAe,IAAf,CAAwB,IAAA,CAACjB,GAAG,CAACiB,UAAJ,CAAe,UAAf,CAApE,CAAf,CAAA;;EAEA,IAAA,KAAK,MAAMjB,GAAX,IAAkBY,MAAlB,EAA0B;QACxB,IAAIM,OAAO,GAAGlB,GAAG,CAACC,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAd,CAAA;EACAiB,MAAAA,OAAO,GAAGA,OAAO,CAACC,MAAR,CAAe,CAAf,EAAkBhB,WAAlB,EAAA,GAAkCe,OAAO,CAACE,KAAR,CAAc,CAAd,EAAiBF,OAAO,CAACG,MAAzB,CAA5C,CAAA;EACAV,MAAAA,UAAU,CAACO,OAAD,CAAV,GAAsB1B,aAAa,CAACc,OAAO,CAACS,OAAR,CAAgBf,GAAhB,CAAD,CAAnC,CAAA;EACD,KAAA;;EAED,IAAA,OAAOW,UAAP,CAAA;KAvBgB;;EA0BlBW,EAAAA,gBAAgB,CAAChB,OAAD,EAAUN,GAAV,EAAe;EAC7B,IAAA,OAAOR,aAAa,CAACc,OAAO,CAACiB,YAAR,CAAsB,CAAUxB,QAAAA,EAAAA,gBAAgB,CAACC,GAAD,CAAM,CAAA,CAAtD,CAAD,CAApB,CAAA;EACD,GAAA;;EA5BiB;;;;;;;;"}
+19 -19
View File
@@ -1,27 +1,24 @@
/*!
* Bootstrap selector-engine.js v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap selector-engine.js v5.2.0-beta1 (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.SelectorEngine = 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.SelectorEngine = factory(global.Index));
})(this, (function (index) { 'use strict';
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.0.2): dom/selector-engine.js
* Bootstrap (v5.2.0-beta1): dom/selector-engine.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
const NODE_TEXT = 3;
const SelectorEngine = {
find(selector, element = document.documentElement) {
return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
@@ -37,14 +34,11 @@
parents(element, selector) {
const parents = [];
let ancestor = element.parentNode;
let ancestor = element.parentNode.closest(selector);
while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {
if (ancestor.matches(selector)) {
parents.push(ancestor);
}
ancestor = ancestor.parentNode;
while (ancestor) {
parents.push(ancestor);
ancestor = ancestor.parentNode.closest(selector);
}
return parents;
@@ -64,6 +58,7 @@
return [];
},
// TODO: this is now unused; remove later along with prev()
next(element, selector) {
let next = element.nextElementSibling;
@@ -76,11 +71,16 @@
}
return [];
},
focusableChildren(element) {
const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(',');
return this.find(focusables, element).filter(el => !index.isDisabled(el) && index.isVisible(el));
}
};
return SelectorEngine;
})));
}));
//# sourceMappingURL=selector-engine.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"selector-engine.js","sources":["../../src/dom/selector-engine.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children)\n .filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (ancestor.matches(selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n }\n}\n\nexport default SelectorEngine\n"],"names":["NODE_TEXT","SelectorEngine","find","selector","element","document","documentElement","concat","Element","prototype","querySelectorAll","call","findOne","querySelector","children","filter","child","matches","parents","ancestor","parentNode","nodeType","Node","ELEMENT_NODE","push","prev","previous","previousElementSibling","next","nextElementSibling"],"mappings":";;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EAEA,MAAMA,SAAS,GAAG,CAAlB;QAEMC,cAAc,GAAG;EACrBC,EAAAA,IAAI,CAACC,QAAD,EAAWC,OAAO,GAAGC,QAAQ,CAACC,eAA9B,EAA+C;EACjD,WAAO,GAAGC,MAAH,CAAU,GAAGC,OAAO,CAACC,SAAR,CAAkBC,gBAAlB,CAAmCC,IAAnC,CAAwCP,OAAxC,EAAiDD,QAAjD,CAAb,CAAP;EACD,GAHoB;;EAKrBS,EAAAA,OAAO,CAACT,QAAD,EAAWC,OAAO,GAAGC,QAAQ,CAACC,eAA9B,EAA+C;EACpD,WAAOE,OAAO,CAACC,SAAR,CAAkBI,aAAlB,CAAgCF,IAAhC,CAAqCP,OAArC,EAA8CD,QAA9C,CAAP;EACD,GAPoB;;EASrBW,EAAAA,QAAQ,CAACV,OAAD,EAAUD,QAAV,EAAoB;EAC1B,WAAO,GAAGI,MAAH,CAAU,GAAGH,OAAO,CAACU,QAArB,EACJC,MADI,CACGC,KAAK,IAAIA,KAAK,CAACC,OAAN,CAAcd,QAAd,CADZ,CAAP;EAED,GAZoB;;EAcrBe,EAAAA,OAAO,CAACd,OAAD,EAAUD,QAAV,EAAoB;EACzB,UAAMe,OAAO,GAAG,EAAhB;EAEA,QAAIC,QAAQ,GAAGf,OAAO,CAACgB,UAAvB;;EAEA,WAAOD,QAAQ,IAAIA,QAAQ,CAACE,QAAT,KAAsBC,IAAI,CAACC,YAAvC,IAAuDJ,QAAQ,CAACE,QAAT,KAAsBrB,SAApF,EAA+F;EAC7F,UAAImB,QAAQ,CAACF,OAAT,CAAiBd,QAAjB,CAAJ,EAAgC;EAC9Be,QAAAA,OAAO,CAACM,IAAR,CAAaL,QAAb;EACD;;EAEDA,MAAAA,QAAQ,GAAGA,QAAQ,CAACC,UAApB;EACD;;EAED,WAAOF,OAAP;EACD,GA5BoB;;EA8BrBO,EAAAA,IAAI,CAACrB,OAAD,EAAUD,QAAV,EAAoB;EACtB,QAAIuB,QAAQ,GAAGtB,OAAO,CAACuB,sBAAvB;;EAEA,WAAOD,QAAP,EAAiB;EACf,UAAIA,QAAQ,CAACT,OAAT,CAAiBd,QAAjB,CAAJ,EAAgC;EAC9B,eAAO,CAACuB,QAAD,CAAP;EACD;;EAEDA,MAAAA,QAAQ,GAAGA,QAAQ,CAACC,sBAApB;EACD;;EAED,WAAO,EAAP;EACD,GA1CoB;;EA4CrBC,EAAAA,IAAI,CAACxB,OAAD,EAAUD,QAAV,EAAoB;EACtB,QAAIyB,IAAI,GAAGxB,OAAO,CAACyB,kBAAnB;;EAEA,WAAOD,IAAP,EAAa;EACX,UAAIA,IAAI,CAACX,OAAL,CAAad,QAAb,CAAJ,EAA4B;EAC1B,eAAO,CAACyB,IAAD,CAAP;EACD;;EAEDA,MAAAA,IAAI,GAAGA,IAAI,CAACC,kBAAZ;EACD;;EAED,WAAO,EAAP;EACD;;EAxDoB;;;;;;;;"}
{"version":3,"file":"selector-engine.js","sources":["../../src/dom/selector-engine.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\n/**\n * Constants\n */\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n let ancestor = element.parentNode.closest(selector)\n\n while (ancestor) {\n parents.push(ancestor)\n ancestor = ancestor.parentNode.closest(selector)\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n }\n}\n\nexport default SelectorEngine\n"],"names":["SelectorEngine","find","selector","element","document","documentElement","concat","Element","prototype","querySelectorAll","call","findOne","querySelector","children","filter","child","matches","parents","ancestor","parentNode","closest","push","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","isDisabled","isVisible"],"mappings":";;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;EAIA;EACA;EACA;;AAEA,QAAMA,cAAc,GAAG;IACrBC,IAAI,CAACC,QAAD,EAAWC,OAAO,GAAGC,QAAQ,CAACC,eAA9B,EAA+C;EACjD,IAAA,OAAO,GAAGC,MAAH,CAAU,GAAGC,OAAO,CAACC,SAAR,CAAkBC,gBAAlB,CAAmCC,IAAnC,CAAwCP,OAAxC,EAAiDD,QAAjD,CAAb,CAAP,CAAA;KAFmB;;IAKrBS,OAAO,CAACT,QAAD,EAAWC,OAAO,GAAGC,QAAQ,CAACC,eAA9B,EAA+C;MACpD,OAAOE,OAAO,CAACC,SAAR,CAAkBI,aAAlB,CAAgCF,IAAhC,CAAqCP,OAArC,EAA8CD,QAA9C,CAAP,CAAA;KANmB;;EASrBW,EAAAA,QAAQ,CAACV,OAAD,EAAUD,QAAV,EAAoB;EAC1B,IAAA,OAAO,GAAGI,MAAH,CAAU,GAAGH,OAAO,CAACU,QAArB,CAA+BC,CAAAA,MAA/B,CAAsCC,KAAK,IAAIA,KAAK,CAACC,OAAN,CAAcd,QAAd,CAA/C,CAAP,CAAA;KAVmB;;EAarBe,EAAAA,OAAO,CAACd,OAAD,EAAUD,QAAV,EAAoB;MACzB,MAAMe,OAAO,GAAG,EAAhB,CAAA;MACA,IAAIC,QAAQ,GAAGf,OAAO,CAACgB,UAAR,CAAmBC,OAAnB,CAA2BlB,QAA3B,CAAf,CAAA;;EAEA,IAAA,OAAOgB,QAAP,EAAiB;QACfD,OAAO,CAACI,IAAR,CAAaH,QAAb,CAAA,CAAA;QACAA,QAAQ,GAAGA,QAAQ,CAACC,UAAT,CAAoBC,OAApB,CAA4BlB,QAA5B,CAAX,CAAA;EACD,KAAA;;EAED,IAAA,OAAOe,OAAP,CAAA;KAtBmB;;EAyBrBK,EAAAA,IAAI,CAACnB,OAAD,EAAUD,QAAV,EAAoB;EACtB,IAAA,IAAIqB,QAAQ,GAAGpB,OAAO,CAACqB,sBAAvB,CAAA;;EAEA,IAAA,OAAOD,QAAP,EAAiB;EACf,MAAA,IAAIA,QAAQ,CAACP,OAAT,CAAiBd,QAAjB,CAAJ,EAAgC;UAC9B,OAAO,CAACqB,QAAD,CAAP,CAAA;EACD,OAAA;;QAEDA,QAAQ,GAAGA,QAAQ,CAACC,sBAApB,CAAA;EACD,KAAA;;EAED,IAAA,OAAO,EAAP,CAAA;KApCmB;;EAsCrB;EACAC,EAAAA,IAAI,CAACtB,OAAD,EAAUD,QAAV,EAAoB;EACtB,IAAA,IAAIuB,IAAI,GAAGtB,OAAO,CAACuB,kBAAnB,CAAA;;EAEA,IAAA,OAAOD,IAAP,EAAa;EACX,MAAA,IAAIA,IAAI,CAACT,OAAL,CAAad,QAAb,CAAJ,EAA4B;UAC1B,OAAO,CAACuB,IAAD,CAAP,CAAA;EACD,OAAA;;QAEDA,IAAI,GAAGA,IAAI,CAACC,kBAAZ,CAAA;EACD,KAAA;;EAED,IAAA,OAAO,EAAP,CAAA;KAlDmB;;IAqDrBC,iBAAiB,CAACxB,OAAD,EAAU;EACzB,IAAA,MAAMyB,UAAU,GAAG,CACjB,GADiB,EAEjB,QAFiB,EAGjB,OAHiB,EAIjB,UAJiB,EAKjB,QALiB,EAMjB,SANiB,EAOjB,YAPiB,EAQjB,0BARiB,CAAA,CASjBC,GATiB,CASb3B,QAAQ,IAAK,CAAEA,EAAAA,QAAS,CATX,qBAAA,CAAA,CAAA,CASmC4B,IATnC,CASwC,GATxC,CAAnB,CAAA;MAWA,OAAO,IAAA,CAAK7B,IAAL,CAAU2B,UAAV,EAAsBzB,OAAtB,CAAA,CAA+BW,MAA/B,CAAsCiB,EAAE,IAAI,CAACC,gBAAU,CAACD,EAAD,CAAX,IAAmBE,eAAS,CAACF,EAAD,CAAxE,CAAP,CAAA;EACD,GAAA;;EAlEoB;;;;;;;;"}
+148 -374
View File
@@ -1,229 +1,48 @@
/*!
* Bootstrap dropdown.js v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap dropdown.js v5.2.0-beta1 (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('@popperjs/core'), require('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) :
typeof define === 'function' && define.amd ? define(['@popperjs/core', './dom/selector-engine', './dom/event-handler', './dom/manipulator', './base-component'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dropdown = factory(global.Popper, global.SelectorEngine, global.EventHandler, global.Manipulator, global.Base));
}(this, (function (Popper, SelectorEngine, EventHandler, Manipulator, BaseComponent) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core'), require('./util/index'), require('./dom/event-handler'), require('./dom/manipulator'), require('./dom/selector-engine'), require('./base-component')) :
typeof define === 'function' && define.amd ? define(['@popperjs/core', './util/index', './dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dropdown = factory(global["@popperjs/core"], global.Index, global.EventHandler, global.Manipulator, global.SelectorEngine, global.BaseComponent));
})(this, (function (Popper, index, EventHandler, Manipulator, 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 };
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
if (e) {
Object.keys(e).forEach(function (k) {
for (const k in e) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
const d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () {
return e[k];
}
get: () => e[k]
});
}
});
}
}
n['default'] = e;
n.default = e;
return Object.freeze(n);
}
var Popper__namespace = /*#__PURE__*/_interopNamespace(Popper);
var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
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 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 SelectorEngine__default['default'].findOne(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}".`);
}
});
};
const isVisible = element => {
if (!isElement(element) || element.getClientRects().length === 0) {
return false;
}
return getComputedStyle(element).getPropertyValue('visibility') === 'visible';
};
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 noop = () => {};
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))];
};
const Popper__namespace = /*#__PURE__*/_interopNamespace(Popper);
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
const Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
/**
* --------------------------------------------------------------------------
* Bootstrap (v5.0.2): dropdown.js
* Bootstrap (v5.2.0-beta1): dropdown.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
const NAME = 'dropdown';
@@ -231,18 +50,15 @@
const EVENT_KEY = `.${DATA_KEY}`;
const DATA_API_KEY = '.data-api';
const ESCAPE_KEY = 'Escape';
const SPACE_KEY = 'Space';
const TAB_KEY = 'Tab';
const ARROW_UP_KEY = 'ArrowUp';
const ARROW_DOWN_KEY = 'ArrowDown';
const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`);
const EVENT_HIDE = `hide${EVENT_KEY}`;
const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
const EVENT_SHOW = `show${EVENT_KEY}`;
const EVENT_SHOWN = `shown${EVENT_KEY}`;
const EVENT_CLICK = `click${EVENT_KEY}`;
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`;
const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`;
@@ -250,17 +66,22 @@
const CLASS_NAME_DROPUP = 'dropup';
const CLASS_NAME_DROPEND = 'dropend';
const CLASS_NAME_DROPSTART = 'dropstart';
const CLASS_NAME_NAVBAR = 'navbar';
const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="dropdown"]';
const CLASS_NAME_DROPUP_CENTER = 'dropup-center';
const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';
const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`;
const SELECTOR_MENU = '.dropdown-menu';
const SELECTOR_NAVBAR = '.navbar';
const SELECTOR_NAVBAR_NAV = '.navbar-nav';
const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
const PLACEMENT_TOP = index.isRTL() ? 'top-end' : 'top-start';
const PLACEMENT_TOPEND = index.isRTL() ? 'top-start' : 'top-end';
const PLACEMENT_BOTTOM = index.isRTL() ? 'bottom-end' : 'bottom-start';
const PLACEMENT_BOTTOMEND = index.isRTL() ? 'bottom-start' : 'bottom-end';
const PLACEMENT_RIGHT = index.isRTL() ? 'left-start' : 'right-start';
const PLACEMENT_LEFT = index.isRTL() ? 'right-start' : 'left-start';
const PLACEMENT_TOPCENTER = 'top';
const PLACEMENT_BOTTOMCENTER = 'bottom';
const Default = {
offset: [0, 2],
boundary: 'clippingParents',
@@ -278,20 +99,17 @@
autoClose: '(boolean|string)'
};
/**
* ------------------------------------------------------------------------
* Class Definition
* ------------------------------------------------------------------------
* Class definition
*/
class Dropdown extends BaseComponent__default['default'] {
class Dropdown extends BaseComponent__default.default {
constructor(element, config) {
super(element);
super(element, config);
this._popper = null;
this._config = this._getConfig(config);
this._menu = this._getMenuElement();
this._inNavbar = this._detectNavbar();
this._parent = this._element.parentNode; // dropdown wrapper
this._addEventListeners();
this._menu = SelectorEngine__default.default.findOne(SELECTOR_MENU, this._parent);
this._inNavbar = this._detectNavbar();
} // Getters
@@ -309,84 +127,48 @@
toggle() {
if (isDisabled(this._element)) {
return;
}
const isActive = this._element.classList.contains(CLASS_NAME_SHOW);
if (isActive) {
this.hide();
return;
}
this.show();
return this._isShown() ? this.hide() : this.show();
}
show() {
if (isDisabled(this._element) || this._menu.classList.contains(CLASS_NAME_SHOW)) {
if (index.isDisabled(this._element) || this._isShown()) {
return;
}
const parent = Dropdown.getParentFromElement(this._element);
const relatedTarget = {
relatedTarget: this._element
};
const showEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW, relatedTarget);
const showEvent = EventHandler__default.default.trigger(this._element, EVENT_SHOW, relatedTarget);
if (showEvent.defaultPrevented) {
return;
} // Totally disable Popper for Dropdowns in Navbar
}
if (this._inNavbar) {
Manipulator__default['default'].setDataAttribute(this._menu, 'popper', 'none');
} else {
if (typeof Popper__namespace === 'undefined') {
throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
}
let referenceElement = this._element;
if (this._config.reference === 'parent') {
referenceElement = parent;
} else if (isElement(this._config.reference)) {
referenceElement = getElement(this._config.reference);
} else if (typeof this._config.reference === 'object') {
referenceElement = this._config.reference;
}
const popperConfig = this._getPopperConfig();
const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false);
this._popper = Popper__namespace.createPopper(referenceElement, this._menu, popperConfig);
if (isDisplayStatic) {
Manipulator__default['default'].setDataAttribute(this._menu, 'popper', 'static');
}
} // If this is a touch-enabled device we add extra
this._createPopper(); // If this is a touch-enabled device we add extra
// empty mouseover listeners to the body's immediate children;
// only needed because of broken event delegation on iOS
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {
[].concat(...document.body.children).forEach(elem => EventHandler__default['default'].on(elem, 'mouseover', noop));
if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
for (const element of [].concat(...document.body.children)) {
EventHandler__default.default.on(element, 'mouseover', index.noop);
}
}
this._element.focus();
this._element.setAttribute('aria-expanded', true);
this._menu.classList.toggle(CLASS_NAME_SHOW);
this._menu.classList.add(CLASS_NAME_SHOW);
this._element.classList.toggle(CLASS_NAME_SHOW);
this._element.classList.add(CLASS_NAME_SHOW);
EventHandler__default['default'].trigger(this._element, EVENT_SHOWN, relatedTarget);
EventHandler__default.default.trigger(this._element, EVENT_SHOWN, relatedTarget);
}
hide() {
if (isDisabled(this._element) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {
if (index.isDisabled(this._element) || !this._isShown()) {
return;
}
@@ -414,15 +196,8 @@
} // Private
_addEventListeners() {
EventHandler__default['default'].on(this._element, EVENT_CLICK, event => {
event.preventDefault();
this.toggle();
});
}
_completeHide(relatedTarget) {
const hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE, relatedTarget);
const hideEvent = EventHandler__default.default.trigger(this._element, EVENT_HIDE, relatedTarget);
if (hideEvent.defaultPrevented) {
return;
@@ -431,7 +206,9 @@
if ('ontouchstart' in document.documentElement) {
[].concat(...document.body.children).forEach(elem => EventHandler__default['default'].off(elem, 'mouseover', noop));
for (const element of [].concat(...document.body.children)) {
EventHandler__default.default.off(element, 'mouseover', index.noop);
}
}
if (this._popper) {
@@ -444,18 +221,14 @@
this._element.setAttribute('aria-expanded', 'false');
Manipulator__default['default'].removeDataAttribute(this._menu, 'popper');
EventHandler__default['default'].trigger(this._element, EVENT_HIDDEN, relatedTarget);
Manipulator__default.default.removeDataAttribute(this._menu, 'popper');
EventHandler__default.default.trigger(this._element, EVENT_HIDDEN, relatedTarget);
}
_getConfig(config) {
config = { ...this.constructor.Default,
...Manipulator__default['default'].getDataAttributes(this._element),
...config
};
typeCheckConfig(NAME, config, this.constructor.DefaultType);
config = super._getConfig(config);
if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
if (typeof config.reference === 'object' && !index.isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
// Popper virtual elements require a getBoundingClientRect method
throw new TypeError(`${NAME.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
}
@@ -463,12 +236,32 @@
return config;
}
_getMenuElement() {
return SelectorEngine__default['default'].next(this._element, SELECTOR_MENU)[0];
_createPopper() {
if (typeof Popper__namespace === 'undefined') {
throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
}
let referenceElement = this._element;
if (this._config.reference === 'parent') {
referenceElement = this._parent;
} else if (index.isElement(this._config.reference)) {
referenceElement = index.getElement(this._config.reference);
} else if (typeof this._config.reference === 'object') {
referenceElement = this._config.reference;
}
const popperConfig = this._getPopperConfig();
this._popper = Popper__namespace.createPopper(referenceElement, this._menu, popperConfig);
}
_isShown() {
return this._menu.classList.contains(CLASS_NAME_SHOW);
}
_getPlacement() {
const parentDropdown = this._element.parentNode;
const parentDropdown = this._parent;
if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
return PLACEMENT_RIGHT;
@@ -476,6 +269,14 @@
if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
return PLACEMENT_LEFT;
}
if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {
return PLACEMENT_TOPCENTER;
}
if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {
return PLACEMENT_BOTTOMCENTER;
} // We need to trim the value because custom properties can also include spaces
@@ -489,7 +290,7 @@
}
_detectNavbar() {
return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null;
return this._element.closest(SELECTOR_NAVBAR) !== null;
}
_getOffset() {
@@ -498,7 +299,7 @@
} = this._config;
if (typeof offset === 'string') {
return offset.split(',').map(val => Number.parseInt(val, 10));
return offset.split(',').map(value => Number.parseInt(value, 10));
}
if (typeof offset === 'function') {
@@ -522,9 +323,11 @@
offset: this._getOffset()
}
}]
}; // Disable Popper if we have a static display
}; // Disable Popper if we have a static display or Dropdown is in Navbar
if (this._inNavbar || this._config.display === 'static') {
Manipulator__default.default.setDataAttribute(this._menu, 'popper', 'static'); // todo:v6 remove
if (this._config.display === 'static') {
defaultBsPopperConfig.modifiers = [{
name: 'applyStyles',
enabled: false
@@ -540,7 +343,7 @@
key,
target
}) {
const items = SelectorEngine__default['default'].find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible);
const items = SelectorEngine__default.default.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => index.isVisible(element));
if (!items.length) {
return;
@@ -548,43 +351,49 @@
// allow cycling to get the last item in case key equals ARROW_UP_KEY
getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus();
index.getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus();
} // Static
static dropdownInterface(element, config) {
const data = Dropdown.getOrCreateInstance(element, config);
static jQueryInterface(config) {
return this.each(function () {
const data = Dropdown.getOrCreateInstance(this, config);
if (typeof config !== 'string') {
return;
}
if (typeof config === 'string') {
if (typeof data[config] === 'undefined') {
throw new TypeError(`No method named "${config}"`);
}
data[config]();
}
}
static jQueryInterface(config) {
return this.each(function () {
Dropdown.dropdownInterface(this, config);
});
}
static clearMenus(event) {
if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY)) {
if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY) {
return;
}
const toggles = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE);
const openToggles = SelectorEngine__default.default.find(SELECTOR_DATA_TOGGLE_SHOWN);
for (let i = 0, len = toggles.length; i < len; i++) {
const context = Dropdown.getInstance(toggles[i]);
for (const toggle of openToggles) {
const context = Dropdown.getInstance(toggle);
if (!context || context._config.autoClose === false) {
continue;
}
if (!context._element.classList.contains(CLASS_NAME_SHOW)) {
const composedPath = event.composedPath();
const isMenuTarget = composedPath.includes(context._menu);
if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
continue;
} // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY || /input|select|option|textarea|form/i.test(event.target.tagName))) {
continue;
}
@@ -592,106 +401,71 @@
relatedTarget: context._element
};
if (event) {
const composedPath = event.composedPath();
const isMenuTarget = composedPath.includes(context._menu);
if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
continue;
} // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY || /input|select|option|textarea|form/i.test(event.target.tagName))) {
continue;
}
if (event.type === 'click') {
relatedTarget.clickEvent = event;
}
if (event.type === 'click') {
relatedTarget.clickEvent = event;
}
context._completeHide(relatedTarget);
}
}
static getParentFromElement(element) {
return getElementFromSelector(element) || element.parentNode;
}
static dataApiKeydownHandler(event) {
// If not input/textarea:
// - And not a key in REGEXP_KEYDOWN => not a dropdown command
// If input/textarea:
// - If space key => not a dropdown command
// - If key is other than escape
// - If key is not up or down => not a dropdown command
// - If trigger inside the menu => not a dropdown command
if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {
// If not an UP | DOWN | ESCAPE key => not a dropdown command
// If input/textarea && if key is other than ESCAPE => not a dropdown command
const isInput = /input|textarea/i.test(event.target.tagName);
const isEscapeEvent = event.key === ESCAPE_KEY;
const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key);
if (!isUpOrDownEvent && !isEscapeEvent) {
return;
}
const isActive = this.classList.contains(CLASS_NAME_SHOW);
if (!isActive && event.key === ESCAPE_KEY) {
if (isInput && !isEscapeEvent) {
return;
}
event.preventDefault();
event.stopPropagation();
const getToggleButton = SelectorEngine__default.default.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode);
const instance = Dropdown.getOrCreateInstance(getToggleButton);
if (isDisabled(this)) {
return;
}
if (isUpOrDownEvent) {
event.stopPropagation();
instance.show();
const getToggleButton = () => this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine__default['default'].prev(this, SELECTOR_DATA_TOGGLE)[0];
if (event.key === ESCAPE_KEY) {
getToggleButton().focus();
Dropdown.clearMenus();
return;
}
if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {
if (!isActive) {
getToggleButton().click();
}
Dropdown.getInstance(getToggleButton())._selectMenuItem(event);
instance._selectMenuItem(event);
return;
}
if (!isActive || event.key === SPACE_KEY) {
Dropdown.clearMenus();
if (instance._isShown()) {
// else is escape and we check if it is shown
event.stopPropagation();
instance.hide();
getToggleButton.focus();
}
}
}
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
* Data API implementation
*/
EventHandler__default['default'].on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler);
EventHandler__default['default'].on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus);
EventHandler__default['default'].on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
EventHandler__default.default.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler);
EventHandler__default.default.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus);
EventHandler__default.default.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
event.preventDefault();
Dropdown.dropdownInterface(this);
Dropdown.getOrCreateInstance(this).toggle();
});
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
* add .Dropdown to jQuery only if jQuery is present
*/
defineJQueryPlugin(Dropdown);
index.defineJQueryPlugin(Dropdown);
return Dropdown;
})));
}));
//# sourceMappingURL=dropdown.js.map
+1 -1
View File
File diff suppressed because one or more lines are too long

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