bootstrap 4.3.1 → 5.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +17 -2
- data/CHANGELOG.md +2 -14
- data/README.md +7 -4
- data/assets/javascripts/bootstrap/alert.js +172 -136
- data/assets/javascripts/bootstrap/base-component.js +182 -0
- data/assets/javascripts/bootstrap/button.js +101 -142
- data/assets/javascripts/bootstrap/carousel.js +483 -408
- data/assets/javascripts/bootstrap/collapse.js +340 -273
- data/assets/javascripts/bootstrap/dom/data.js +68 -0
- data/assets/javascripts/bootstrap/dom/event-handler.js +321 -0
- data/assets/javascripts/bootstrap/dom/manipulator.js +88 -0
- data/assets/javascripts/bootstrap/dom/selector-engine.js +127 -0
- data/assets/javascripts/bootstrap/dropdown.js +491 -399
- data/assets/javascripts/bootstrap/modal.js +841 -449
- data/assets/javascripts/bootstrap/offcanvas.js +866 -0
- data/assets/javascripts/bootstrap/popover.js +121 -198
- data/assets/javascripts/bootstrap/scrollspy.js +256 -240
- data/assets/javascripts/bootstrap/tab.js +218 -154
- data/assets/javascripts/bootstrap/toast.js +329 -189
- data/assets/javascripts/bootstrap/tooltip.js +651 -552
- data/assets/javascripts/bootstrap-global-this-define.js +6 -0
- data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
- data/assets/javascripts/bootstrap-sprockets.js +8 -1
- data/assets/javascripts/bootstrap.js +3503 -2892
- data/assets/javascripts/bootstrap.min.js +4 -4
- data/assets/stylesheets/_bootstrap-grid.scss +56 -18
- data/assets/stylesheets/_bootstrap-reboot.scss +5 -4
- data/assets/stylesheets/_bootstrap.scss +20 -11
- data/assets/stylesheets/bootstrap/_accordion.scss +118 -0
- data/assets/stylesheets/bootstrap/_alert.scss +15 -9
- data/assets/stylesheets/bootstrap/_badge.scss +2 -27
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +5 -18
- data/assets/stylesheets/bootstrap/_button-group.scss +21 -45
- data/assets/stylesheets/bootstrap/_buttons.scss +28 -54
- data/assets/stylesheets/bootstrap/_card.scss +52 -125
- data/assets/stylesheets/bootstrap/_carousel.scss +70 -38
- data/assets/stylesheets/bootstrap/_close.scss +30 -31
- data/assets/stylesheets/bootstrap/_containers.scss +41 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +88 -39
- data/assets/stylesheets/bootstrap/_forms.scss +9 -330
- data/assets/stylesheets/bootstrap/_functions.scss +243 -27
- data/assets/stylesheets/bootstrap/_grid.scss +14 -33
- data/assets/stylesheets/bootstrap/_helpers.scss +9 -0
- data/assets/stylesheets/bootstrap/_images.scss +3 -3
- data/assets/stylesheets/bootstrap/_list-group.scss +61 -36
- data/assets/stylesheets/bootstrap/_mixins.scss +12 -16
- data/assets/stylesheets/bootstrap/_modal.scss +64 -84
- data/assets/stylesheets/bootstrap/_nav.scss +29 -10
- data/assets/stylesheets/bootstrap/_navbar.scss +93 -52
- data/assets/stylesheets/bootstrap/_offcanvas.scss +83 -0
- data/assets/stylesheets/bootstrap/_pagination.scss +13 -22
- data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
- data/assets/stylesheets/bootstrap/_popover.scss +29 -42
- data/assets/stylesheets/bootstrap/_progress.scss +10 -5
- data/assets/stylesheets/bootstrap/_reboot.scss +350 -208
- data/assets/stylesheets/bootstrap/_root.scss +43 -8
- data/assets/stylesheets/bootstrap/_spinners.scss +21 -7
- data/assets/stylesheets/bootstrap/_tables.scss +84 -114
- data/assets/stylesheets/bootstrap/_toasts.scss +21 -14
- data/assets/stylesheets/bootstrap/_tooltip.scss +21 -21
- data/assets/stylesheets/bootstrap/_transitions.scss +8 -1
- data/assets/stylesheets/bootstrap/_type.scss +40 -61
- data/assets/stylesheets/bootstrap/_utilities.scss +630 -17
- data/assets/stylesheets/bootstrap/_variables.scss +1007 -489
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +63 -0
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +152 -0
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +219 -0
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +72 -0
- data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +121 -0
- data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
- data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
- data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
- data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
- data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
- data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
- data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
- data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
- data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
- data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +3 -5
- data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +37 -22
- data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +14 -10
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +77 -51
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +10 -8
- data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +67 -115
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +132 -32
- data/assets/stylesheets/bootstrap/mixins/_image.scss +0 -20
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +5 -2
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +17 -8
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +89 -0
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +29 -0
- data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +278 -128
- data/bootstrap.gemspec +4 -6
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +25 -6
- data/tasks/updater/network.rb +8 -2
- data/test/dummy_rails/app/assets/config/manifest.js +3 -0
- data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
- data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
- data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
- data/test/dummy_rails/app/views/pages/root.html +89 -0
- data/test/dummy_rails/config/application.rb +0 -3
- data/test/gemfiles/rails_6_0.gemfile +7 -0
- data/test/gemfiles/rails_6_1.gemfile +7 -0
- data/test/support/dummy_rails_integration.rb +3 -1
- data/test/test_helper.rb +18 -13
- metadata +61 -79
- data/assets/javascripts/bootstrap/util.js +0 -171
- data/assets/stylesheets/bootstrap/_code.scss +0 -48
- data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -507
- data/assets/stylesheets/bootstrap/_input-group.scss +0 -193
- data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
- data/assets/stylesheets/bootstrap/_media.scss +0 -8
- data/assets/stylesheets/bootstrap/_print.scss +0 -141
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -21
- data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
- data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -66
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -10
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -33
- data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
- data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -16
- data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
- data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
- data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
- data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
- data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
- data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
- data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
- data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
- data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
- data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
- data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
- data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 666b108731be39c8122df9a54b7b2a1715f02b92e03caa941c132b3e7ec352ca
|
|
4
|
+
data.tar.gz: 57086f0d9bb88ba6a0abf74a5f0006b6eed21168d37009c2159e8ab9b68385f4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6171d65c922c486d41a0cb7f4e781e389b2cf0d9e00cf7c350fcdf6ab59b814e8daa7449a9a97d7462e6945f766261466cbf750f0aedc07301f366d2f7731eaf
|
|
7
|
+
data.tar.gz: b65871d048cecf29a714362f75348bc167ba158e50197908cde71ff197d834c0d84eb9ead9be4f7c87c22f49da0c164a6aa997843b2bc5998f6b12effc762db7
|
data/.travis.yml
CHANGED
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
language: ruby
|
|
2
|
-
|
|
2
|
+
dist: focal
|
|
3
|
+
addons:
|
|
4
|
+
apt:
|
|
5
|
+
packages:
|
|
6
|
+
- chromium-browser
|
|
3
7
|
rvm:
|
|
4
|
-
- 2.
|
|
8
|
+
- 2.5
|
|
9
|
+
- 2.6
|
|
10
|
+
- 2.7
|
|
11
|
+
|
|
5
12
|
gemfile:
|
|
6
13
|
- test/gemfiles/rails_4_2.gemfile
|
|
7
14
|
- test/gemfiles/rails_5_0.gemfile
|
|
8
15
|
- test/gemfiles/rails_5_1.gemfile
|
|
16
|
+
- test/gemfiles/rails_6_0.gemfile
|
|
17
|
+
- test/gemfiles/rails_6_1.gemfile
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
exclude:
|
|
21
|
+
rvm: 2.7
|
|
22
|
+
gemfile: test/gemfiles/rails_4_2.gemfile
|
|
23
|
+
|
|
9
24
|
cache: bundler
|
|
10
25
|
bundler_args: --path ../../vendor/bundle --without debug
|
|
11
26
|
notifications:
|
data/CHANGELOG.md
CHANGED
|
@@ -6,21 +6,9 @@ The changelog only includes changes specific to the RubyGem.
|
|
|
6
6
|
The Bootstrap framework changes can be found in [the Releases section of twbs/bootstrap](https://github.com/twbs/bootstrap/releases).
|
|
7
7
|
Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release of Bootstrap.
|
|
8
8
|
|
|
9
|
-
# 4.
|
|
9
|
+
# 4.2.1
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
# 4.1.0
|
|
14
|
-
|
|
15
|
-
No gem-specific changes.
|
|
16
|
-
|
|
17
|
-
# 4.0.0
|
|
18
|
-
|
|
19
|
-
No gem-specific changes.
|
|
20
|
-
|
|
21
|
-
# 4.0.0.beta3
|
|
22
|
-
|
|
23
|
-
No gem-specific changes.
|
|
11
|
+
* Bootstrap rubygem now depends on SassC instead of Sass.
|
|
24
12
|
|
|
25
13
|
# 4.0.0.beta2.1
|
|
26
14
|
|
data/README.md
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# Bootstrap Ruby Gem [](https://travis-ci.org/twbs/bootstrap-rubygem) [](https://rubygems.org/gems/bootstrap)
|
|
2
2
|
|
|
3
|
-
[Bootstrap
|
|
3
|
+
[Bootstrap 5][bootstrap-home] ruby gem for Ruby on Rails (*Sprockets*) and Hanami (formerly Lotus).
|
|
4
4
|
|
|
5
5
|
For Sass versions of Bootstrap 3 and 2 see [bootstrap-sass](https://github.com/twbs/bootstrap-sass) instead.
|
|
6
6
|
|
|
7
|
+
**Ruby on Rails 6 Note:**:
|
|
8
|
+
With the release of Rails 6 there have been some minor changes made to the default configuration for The Asset Pipeline. In specific, by default _Sprockets no longer processes JavaScript_ and instead Webpack is set as the default. The `twbs/bootstrap-rubygem` is for use with Sprockets not Webpack.
|
|
9
|
+
|
|
7
10
|
## Installation
|
|
8
11
|
|
|
9
12
|
Please see the appropriate guide for your environment of choice:
|
|
@@ -17,7 +20,7 @@ Please see the appropriate guide for your environment of choice:
|
|
|
17
20
|
Add `bootstrap` to your Gemfile:
|
|
18
21
|
|
|
19
22
|
```ruby
|
|
20
|
-
gem 'bootstrap', '~>
|
|
23
|
+
gem 'bootstrap', '~> 5.1.3'
|
|
21
24
|
```
|
|
22
25
|
|
|
23
26
|
Ensure that `sprockets-rails` is at least v2.3.2.
|
|
@@ -44,8 +47,8 @@ Then, remove all the `*= require` and `*= require_tree` statements from the Sass
|
|
|
44
47
|
|
|
45
48
|
Do not use `*= require` in Sass or your other stylesheets will not be able to access the Bootstrap mixins and variables.
|
|
46
49
|
|
|
47
|
-
Bootstrap JavaScript
|
|
48
|
-
If you're using Rails 5.1+, add the `jquery-rails` gem to your Gemfile:
|
|
50
|
+
Bootstrap JavaScript can optionally use jQuery.
|
|
51
|
+
If you're using Rails 5.1+, you can add the `jquery-rails` gem to your Gemfile:
|
|
49
52
|
|
|
50
53
|
```ruby
|
|
51
54
|
gem 'jquery-rails'
|
|
@@ -1,176 +1,217 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap alert.js
|
|
3
|
-
* Copyright 2011-
|
|
4
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/
|
|
2
|
+
* Bootstrap alert.js v5.1.3 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
5
|
*/
|
|
6
6
|
(function (global, factory) {
|
|
7
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('
|
|
8
|
-
typeof define === 'function' && define.amd ? define(['
|
|
9
|
-
(global = global || self, global.Alert = factory(global.
|
|
10
|
-
}(this, function (
|
|
11
|
-
|
|
12
|
-
$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
|
|
13
|
-
Util = Util && Util.hasOwnProperty('default') ? Util['default'] : Util;
|
|
14
|
-
|
|
15
|
-
function _defineProperties(target, props) {
|
|
16
|
-
for (var i = 0; i < props.length; i++) {
|
|
17
|
-
var descriptor = props[i];
|
|
18
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
19
|
-
descriptor.configurable = true;
|
|
20
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
21
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./base-component.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./dom/event-handler', './base-component'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.EventHandler, global.Base));
|
|
10
|
+
})(this, (function (EventHandler, BaseComponent) { 'use strict';
|
|
24
11
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
12
|
+
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
|
13
|
+
|
|
14
|
+
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
|
15
|
+
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
|
30
16
|
|
|
31
17
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
18
|
+
* --------------------------------------------------------------------------
|
|
19
|
+
* Bootstrap (v5.1.3): util/index.js
|
|
20
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
21
|
+
* --------------------------------------------------------------------------
|
|
35
22
|
*/
|
|
36
23
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
24
|
+
const getSelector = element => {
|
|
25
|
+
let selector = element.getAttribute('data-bs-target');
|
|
26
|
+
|
|
27
|
+
if (!selector || selector === '#') {
|
|
28
|
+
let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
|
|
29
|
+
// so everything starting with `#` or `.`. If a "real" URL is used as the selector,
|
|
30
|
+
// `document.querySelector` will rightfully complain it is invalid.
|
|
31
|
+
// See https://github.com/twbs/bootstrap/issues/32273
|
|
32
|
+
|
|
33
|
+
if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
|
|
34
|
+
return null;
|
|
35
|
+
} // Just in case some CMS puts out a full URL with the anchor appended
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
|
|
39
|
+
hrefAttr = `#${hrefAttr.split('#')[1]}`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return selector;
|
|
50
46
|
};
|
|
51
|
-
var ClassName = {
|
|
52
|
-
ALERT: 'alert',
|
|
53
|
-
FADE: 'fade',
|
|
54
|
-
SHOW: 'show'
|
|
55
|
-
/**
|
|
56
|
-
* ------------------------------------------------------------------------
|
|
57
|
-
* Class Definition
|
|
58
|
-
* ------------------------------------------------------------------------
|
|
59
|
-
*/
|
|
60
47
|
|
|
48
|
+
const getElementFromSelector = element => {
|
|
49
|
+
const selector = getSelector(element);
|
|
50
|
+
return selector ? document.querySelector(selector) : null;
|
|
61
51
|
};
|
|
62
52
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
this._element = element;
|
|
68
|
-
} // Getters
|
|
53
|
+
const isDisabled = element => {
|
|
54
|
+
if (!element || element.nodeType !== Node.ELEMENT_NODE) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
69
57
|
|
|
58
|
+
if (element.classList.contains('disabled')) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
70
61
|
|
|
71
|
-
|
|
62
|
+
if (typeof element.disabled !== 'undefined') {
|
|
63
|
+
return element.disabled;
|
|
64
|
+
}
|
|
72
65
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
var rootElement = this._element;
|
|
66
|
+
return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
|
|
67
|
+
};
|
|
76
68
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
69
|
+
const getjQuery = () => {
|
|
70
|
+
const {
|
|
71
|
+
jQuery
|
|
72
|
+
} = window;
|
|
80
73
|
|
|
81
|
-
|
|
74
|
+
if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
|
|
75
|
+
return jQuery;
|
|
76
|
+
}
|
|
82
77
|
|
|
83
|
-
|
|
84
|
-
|
|
78
|
+
return null;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const DOMContentLoadedCallbacks = [];
|
|
82
|
+
|
|
83
|
+
const onDOMContentLoaded = callback => {
|
|
84
|
+
if (document.readyState === 'loading') {
|
|
85
|
+
// add listener on the first call when the document is in loading state
|
|
86
|
+
if (!DOMContentLoadedCallbacks.length) {
|
|
87
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
88
|
+
DOMContentLoadedCallbacks.forEach(callback => callback());
|
|
89
|
+
});
|
|
85
90
|
}
|
|
86
91
|
|
|
87
|
-
|
|
88
|
-
}
|
|
92
|
+
DOMContentLoadedCallbacks.push(callback);
|
|
93
|
+
} else {
|
|
94
|
+
callback();
|
|
95
|
+
}
|
|
96
|
+
};
|
|
89
97
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
98
|
+
const defineJQueryPlugin = plugin => {
|
|
99
|
+
onDOMContentLoaded(() => {
|
|
100
|
+
const $ = getjQuery();
|
|
101
|
+
/* istanbul ignore if */
|
|
102
|
+
|
|
103
|
+
if ($) {
|
|
104
|
+
const name = plugin.NAME;
|
|
105
|
+
const JQUERY_NO_CONFLICT = $.fn[name];
|
|
106
|
+
$.fn[name] = plugin.jQueryInterface;
|
|
107
|
+
$.fn[name].Constructor = plugin;
|
|
108
|
+
|
|
109
|
+
$.fn[name].noConflict = () => {
|
|
110
|
+
$.fn[name] = JQUERY_NO_CONFLICT;
|
|
111
|
+
return plugin.jQueryInterface;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
};
|
|
95
116
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
117
|
+
/**
|
|
118
|
+
* --------------------------------------------------------------------------
|
|
119
|
+
* Bootstrap (v5.1.3): util/component-functions.js
|
|
120
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
121
|
+
* --------------------------------------------------------------------------
|
|
122
|
+
*/
|
|
99
123
|
|
|
100
|
-
|
|
101
|
-
|
|
124
|
+
const enableDismissTrigger = (component, method = 'hide') => {
|
|
125
|
+
const clickEvent = `click.dismiss${component.EVENT_KEY}`;
|
|
126
|
+
const name = component.NAME;
|
|
127
|
+
EventHandler__default.default.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
|
|
128
|
+
if (['A', 'AREA'].includes(this.tagName)) {
|
|
129
|
+
event.preventDefault();
|
|
102
130
|
}
|
|
103
131
|
|
|
104
|
-
if (
|
|
105
|
-
|
|
132
|
+
if (isDisabled(this)) {
|
|
133
|
+
return;
|
|
106
134
|
}
|
|
107
135
|
|
|
108
|
-
|
|
109
|
-
|
|
136
|
+
const target = getElementFromSelector(this) || this.closest(`.${name}`);
|
|
137
|
+
const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
|
|
138
|
+
|
|
139
|
+
instance[method]();
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* --------------------------------------------------------------------------
|
|
145
|
+
* Bootstrap (v5.1.3): alert.js
|
|
146
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
147
|
+
* --------------------------------------------------------------------------
|
|
148
|
+
*/
|
|
149
|
+
/**
|
|
150
|
+
* ------------------------------------------------------------------------
|
|
151
|
+
* Constants
|
|
152
|
+
* ------------------------------------------------------------------------
|
|
153
|
+
*/
|
|
110
154
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
155
|
+
const NAME = 'alert';
|
|
156
|
+
const DATA_KEY = 'bs.alert';
|
|
157
|
+
const EVENT_KEY = `.${DATA_KEY}`;
|
|
158
|
+
const EVENT_CLOSE = `close${EVENT_KEY}`;
|
|
159
|
+
const EVENT_CLOSED = `closed${EVENT_KEY}`;
|
|
160
|
+
const CLASS_NAME_FADE = 'fade';
|
|
161
|
+
const CLASS_NAME_SHOW = 'show';
|
|
162
|
+
/**
|
|
163
|
+
* ------------------------------------------------------------------------
|
|
164
|
+
* Class Definition
|
|
165
|
+
* ------------------------------------------------------------------------
|
|
166
|
+
*/
|
|
116
167
|
|
|
117
|
-
|
|
118
|
-
|
|
168
|
+
class Alert extends BaseComponent__default.default {
|
|
169
|
+
// Getters
|
|
170
|
+
static get NAME() {
|
|
171
|
+
return NAME;
|
|
172
|
+
} // Public
|
|
119
173
|
|
|
120
|
-
$(element).removeClass(ClassName.SHOW);
|
|
121
174
|
|
|
122
|
-
|
|
123
|
-
|
|
175
|
+
close() {
|
|
176
|
+
const closeEvent = EventHandler__default.default.trigger(this._element, EVENT_CLOSE);
|
|
124
177
|
|
|
178
|
+
if (closeEvent.defaultPrevented) {
|
|
125
179
|
return;
|
|
126
180
|
}
|
|
127
181
|
|
|
128
|
-
|
|
129
|
-
$(element).one(Util.TRANSITION_END, function (event) {
|
|
130
|
-
return _this._destroyElement(element, event);
|
|
131
|
-
}).emulateTransitionEnd(transitionDuration);
|
|
132
|
-
};
|
|
182
|
+
this._element.classList.remove(CLASS_NAME_SHOW);
|
|
133
183
|
|
|
134
|
-
|
|
135
|
-
|
|
184
|
+
const isAnimated = this._element.classList.contains(CLASS_NAME_FADE);
|
|
185
|
+
|
|
186
|
+
this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
|
|
187
|
+
} // Private
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
_destroyElement() {
|
|
191
|
+
this._element.remove();
|
|
192
|
+
|
|
193
|
+
EventHandler__default.default.trigger(this._element, EVENT_CLOSED);
|
|
194
|
+
this.dispose();
|
|
136
195
|
} // Static
|
|
137
|
-
;
|
|
138
196
|
|
|
139
|
-
Alert._jQueryInterface = function _jQueryInterface(config) {
|
|
140
|
-
return this.each(function () {
|
|
141
|
-
var $element = $(this);
|
|
142
|
-
var data = $element.data(DATA_KEY);
|
|
143
197
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}
|
|
198
|
+
static jQueryInterface(config) {
|
|
199
|
+
return this.each(function () {
|
|
200
|
+
const data = Alert.getOrCreateInstance(this);
|
|
148
201
|
|
|
149
|
-
if (config
|
|
150
|
-
|
|
202
|
+
if (typeof config !== 'string') {
|
|
203
|
+
return;
|
|
151
204
|
}
|
|
152
|
-
});
|
|
153
|
-
};
|
|
154
205
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
if (event) {
|
|
158
|
-
event.preventDefault();
|
|
206
|
+
if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
|
|
207
|
+
throw new TypeError(`No method named "${config}"`);
|
|
159
208
|
}
|
|
160
209
|
|
|
161
|
-
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
_createClass(Alert, null, [{
|
|
166
|
-
key: "VERSION",
|
|
167
|
-
get: function get() {
|
|
168
|
-
return VERSION;
|
|
169
|
-
}
|
|
170
|
-
}]);
|
|
210
|
+
data[config](this);
|
|
211
|
+
});
|
|
212
|
+
}
|
|
171
213
|
|
|
172
|
-
|
|
173
|
-
}();
|
|
214
|
+
}
|
|
174
215
|
/**
|
|
175
216
|
* ------------------------------------------------------------------------
|
|
176
217
|
* Data Api implementation
|
|
@@ -178,20 +219,15 @@
|
|
|
178
219
|
*/
|
|
179
220
|
|
|
180
221
|
|
|
181
|
-
|
|
222
|
+
enableDismissTrigger(Alert, 'close');
|
|
182
223
|
/**
|
|
183
224
|
* ------------------------------------------------------------------------
|
|
184
225
|
* jQuery
|
|
185
226
|
* ------------------------------------------------------------------------
|
|
227
|
+
* add .Alert to jQuery only if jQuery is present
|
|
186
228
|
*/
|
|
187
229
|
|
|
188
|
-
|
|
189
|
-
$.fn[NAME].Constructor = Alert;
|
|
190
|
-
|
|
191
|
-
$.fn[NAME].noConflict = function () {
|
|
192
|
-
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
|
193
|
-
return Alert._jQueryInterface;
|
|
194
|
-
};
|
|
230
|
+
defineJQueryPlugin(Alert);
|
|
195
231
|
|
|
196
232
|
return Alert;
|
|
197
233
|
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Bootstrap base-component.js v5.1.3 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
|
+
*/
|
|
6
|
+
(function (global, factory) {
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Base = factory(global.Data, global.EventHandler));
|
|
10
|
+
})(this, (function (Data, EventHandler) { 'use strict';
|
|
11
|
+
|
|
12
|
+
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
|
13
|
+
|
|
14
|
+
const Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
|
|
15
|
+
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* --------------------------------------------------------------------------
|
|
19
|
+
* Bootstrap (v5.1.3): util/index.js
|
|
20
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
21
|
+
* --------------------------------------------------------------------------
|
|
22
|
+
*/
|
|
23
|
+
const MILLISECONDS_MULTIPLIER = 1000;
|
|
24
|
+
const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
|
|
25
|
+
|
|
26
|
+
const getTransitionDurationFromElement = element => {
|
|
27
|
+
if (!element) {
|
|
28
|
+
return 0;
|
|
29
|
+
} // Get transition-duration of the element
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
let {
|
|
33
|
+
transitionDuration,
|
|
34
|
+
transitionDelay
|
|
35
|
+
} = window.getComputedStyle(element);
|
|
36
|
+
const floatTransitionDuration = Number.parseFloat(transitionDuration);
|
|
37
|
+
const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
|
|
38
|
+
|
|
39
|
+
if (!floatTransitionDuration && !floatTransitionDelay) {
|
|
40
|
+
return 0;
|
|
41
|
+
} // If multiple durations are defined, take the first
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
transitionDuration = transitionDuration.split(',')[0];
|
|
45
|
+
transitionDelay = transitionDelay.split(',')[0];
|
|
46
|
+
return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const triggerTransitionEnd = element => {
|
|
50
|
+
element.dispatchEvent(new Event(TRANSITION_END));
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const isElement = obj => {
|
|
54
|
+
if (!obj || typeof obj !== 'object') {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (typeof obj.jquery !== 'undefined') {
|
|
59
|
+
obj = obj[0];
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return typeof obj.nodeType !== 'undefined';
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const getElement = obj => {
|
|
66
|
+
if (isElement(obj)) {
|
|
67
|
+
// it's a jQuery object or a node element
|
|
68
|
+
return obj.jquery ? obj[0] : obj;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (typeof obj === 'string' && obj.length > 0) {
|
|
72
|
+
return document.querySelector(obj);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return null;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const execute = callback => {
|
|
79
|
+
if (typeof callback === 'function') {
|
|
80
|
+
callback();
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
|
|
85
|
+
if (!waitForTransition) {
|
|
86
|
+
execute(callback);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const durationPadding = 5;
|
|
91
|
+
const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
|
|
92
|
+
let called = false;
|
|
93
|
+
|
|
94
|
+
const handler = ({
|
|
95
|
+
target
|
|
96
|
+
}) => {
|
|
97
|
+
if (target !== transitionElement) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
called = true;
|
|
102
|
+
transitionElement.removeEventListener(TRANSITION_END, handler);
|
|
103
|
+
execute(callback);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
transitionElement.addEventListener(TRANSITION_END, handler);
|
|
107
|
+
setTimeout(() => {
|
|
108
|
+
if (!called) {
|
|
109
|
+
triggerTransitionEnd(transitionElement);
|
|
110
|
+
}
|
|
111
|
+
}, emulatedDuration);
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* --------------------------------------------------------------------------
|
|
116
|
+
* Bootstrap (v5.1.3): base-component.js
|
|
117
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
118
|
+
* --------------------------------------------------------------------------
|
|
119
|
+
*/
|
|
120
|
+
/**
|
|
121
|
+
* ------------------------------------------------------------------------
|
|
122
|
+
* Constants
|
|
123
|
+
* ------------------------------------------------------------------------
|
|
124
|
+
*/
|
|
125
|
+
|
|
126
|
+
const VERSION = '5.1.3';
|
|
127
|
+
|
|
128
|
+
class BaseComponent {
|
|
129
|
+
constructor(element) {
|
|
130
|
+
element = getElement(element);
|
|
131
|
+
|
|
132
|
+
if (!element) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
this._element = element;
|
|
137
|
+
Data__default.default.set(this._element, this.constructor.DATA_KEY, this);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
dispose() {
|
|
141
|
+
Data__default.default.remove(this._element, this.constructor.DATA_KEY);
|
|
142
|
+
EventHandler__default.default.off(this._element, this.constructor.EVENT_KEY);
|
|
143
|
+
Object.getOwnPropertyNames(this).forEach(propertyName => {
|
|
144
|
+
this[propertyName] = null;
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
_queueCallback(callback, element, isAnimated = true) {
|
|
149
|
+
executeAfterTransition(callback, element, isAnimated);
|
|
150
|
+
}
|
|
151
|
+
/** Static */
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
static getInstance(element) {
|
|
155
|
+
return Data__default.default.get(getElement(element), this.DATA_KEY);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
static getOrCreateInstance(element, config = {}) {
|
|
159
|
+
return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
static get VERSION() {
|
|
163
|
+
return VERSION;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
static get NAME() {
|
|
167
|
+
throw new Error('You have to implement the static method "NAME", for each component!');
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
static get DATA_KEY() {
|
|
171
|
+
return `bs.${this.NAME}`;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
static get EVENT_KEY() {
|
|
175
|
+
return `.${this.DATA_KEY}`;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return BaseComponent;
|
|
181
|
+
|
|
182
|
+
}));
|