bootstrap 4.3.1 → 4.6.2.1
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 +15 -1
- data/CHANGELOG.md +4 -12
- data/README.md +7 -1
- data/Rakefile +16 -4
- data/assets/javascripts/bootstrap/alert.js +43 -55
- data/assets/javascripts/bootstrap/button.js +112 -70
- data/assets/javascripts/bootstrap/carousel.js +164 -189
- data/assets/javascripts/bootstrap/collapse.js +98 -129
- data/assets/javascripts/bootstrap/dropdown.js +165 -200
- data/assets/javascripts/bootstrap/modal.js +218 -205
- data/assets/javascripts/bootstrap/popover.js +63 -79
- data/assets/javascripts/bootstrap/scrollspy.js +82 -119
- data/assets/javascripts/bootstrap/tab.js +79 -85
- data/assets/javascripts/bootstrap/toast.js +100 -115
- data/assets/javascripts/bootstrap/tooltip.js +207 -225
- data/assets/javascripts/bootstrap/util.js +41 -23
- data/assets/javascripts/bootstrap.js +1235 -1314
- data/assets/javascripts/bootstrap.min.js +4 -4
- data/assets/stylesheets/_bootstrap-grid.scss +5 -4
- data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
- data/assets/stylesheets/_bootstrap.scss +4 -4
- data/assets/stylesheets/bootstrap/_alert.scss +1 -0
- data/assets/stylesheets/bootstrap/_badge.scss +1 -1
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +3 -2
- data/assets/stylesheets/bootstrap/_button-group.scss +1 -1
- data/assets/stylesheets/bootstrap/_buttons.scss +13 -8
- data/assets/stylesheets/bootstrap/_card.scss +47 -50
- data/assets/stylesheets/bootstrap/_carousel.scss +12 -9
- data/assets/stylesheets/bootstrap/_close.scss +2 -3
- data/assets/stylesheets/bootstrap/_code.scss +1 -1
- data/assets/stylesheets/bootstrap/_custom-forms.scss +43 -24
- data/assets/stylesheets/bootstrap/_dropdown.scss +7 -6
- data/assets/stylesheets/bootstrap/_forms.scss +30 -13
- data/assets/stylesheets/bootstrap/_functions.scss +110 -6
- data/assets/stylesheets/bootstrap/_grid.scss +32 -11
- data/assets/stylesheets/bootstrap/_images.scss +3 -3
- data/assets/stylesheets/bootstrap/_input-group.scss +23 -5
- data/assets/stylesheets/bootstrap/_jumbotron.scss +1 -1
- data/assets/stylesheets/bootstrap/_list-group.scss +36 -31
- data/assets/stylesheets/bootstrap/_mixins.scss +3 -3
- data/assets/stylesheets/bootstrap/_modal.scss +26 -15
- data/assets/stylesheets/bootstrap/_nav.scss +12 -7
- data/assets/stylesheets/bootstrap/_navbar.scss +55 -17
- data/assets/stylesheets/bootstrap/_pagination.scss +5 -4
- data/assets/stylesheets/bootstrap/_popover.scss +17 -18
- data/assets/stylesheets/bootstrap/_print.scss +1 -10
- data/assets/stylesheets/bootstrap/_progress.scss +7 -3
- data/assets/stylesheets/bootstrap/_reboot.scss +39 -38
- data/assets/stylesheets/bootstrap/_spinners.scss +18 -8
- data/assets/stylesheets/bootstrap/_tables.scss +3 -3
- data/assets/stylesheets/bootstrap/_toasts.scss +4 -2
- data/assets/stylesheets/bootstrap/_tooltip.scss +4 -4
- data/assets/stylesheets/bootstrap/_transitions.scss +6 -0
- data/assets/stylesheets/bootstrap/_type.scss +3 -3
- data/assets/stylesheets/bootstrap/_utilities.scss +2 -1
- data/assets/stylesheets/bootstrap/_variables.scss +71 -45
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
- data/assets/stylesheets/bootstrap/mixins/_badge.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +27 -14
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +11 -8
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +8 -8
- data/assets/stylesheets/bootstrap/mixins/_float.scss +3 -3
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +52 -49
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +31 -17
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +32 -14
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +4 -4
- data/assets/stylesheets/bootstrap/mixins/_image.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +2 -1
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +5 -4
- data/assets/stylesheets/bootstrap/mixins/_table-row.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +3 -2
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
- data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +1 -1
- data/assets/stylesheets/bootstrap/utilities/_embed.scss +1 -1
- data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +1 -1
- data/assets/stylesheets/bootstrap/utilities/_text.scss +4 -4
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +126 -102
- data/bootstrap.gemspec +2 -4
- data/lib/bootstrap/engine.rb +17 -1
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +18 -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/stylesheets/.browserslistrc +1 -0
- data/test/gemfiles/rails_6_0.gemfile +7 -0
- data/test/gemfiles/rails_7_0_dartsass.gemfile +8 -0
- data/test/gemfiles/rails_7_0_sassc.gemfile +8 -0
- data/test/support/dummy_rails_integration.rb +3 -1
- data/test/test_helper.rb +18 -13
- metadata +17 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd382f63309c8fbf7da627ee4990fdaeb3e9eb7f25ba5d06f77346c0dcc68de4
|
4
|
+
data.tar.gz: 2c24101f290892643a48f3d530132cca24fb35b9d05e8b19c5305056508065ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed3113b844e211e9bd1875de399f167043a7b57c81d399fedaa9fb2a6e9b49dd01d1164c89801476bf6ccce66baf3c88fa88d086895cfc655429f14f821c6b2b
|
7
|
+
data.tar.gz: b79d08b3e67931da95f530aea47619c1eb486f7f1cf3eae873645b875f65aec62f30018fbd169a490add197037650f0f3cca4dd11de4a7b07f603bbb6c2fb0c8
|
data/.travis.yml
CHANGED
@@ -1,11 +1,25 @@
|
|
1
1
|
language: ruby
|
2
2
|
sudo: false
|
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
|
+
|
18
|
+
jobs:
|
19
|
+
exclude:
|
20
|
+
rvm: 2.7
|
21
|
+
gemfile: test/gemfiles/rails_4_2.gemfile
|
22
|
+
|
9
23
|
cache: bundler
|
10
24
|
bundler_args: --path ../../vendor/bundle --without debug
|
11
25
|
notifications:
|
data/CHANGELOG.md
CHANGED
@@ -6,21 +6,13 @@ 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.6.2.1
|
10
10
|
|
11
|
-
|
11
|
+
* Adds support for other Sass compilers. [#278](https://github.com/twbs/bootstrap-rubygem/pull/278)
|
12
12
|
|
13
|
-
# 4.1
|
13
|
+
# 4.2.1
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
# 4.0.0
|
18
|
-
|
19
|
-
No gem-specific changes.
|
20
|
-
|
21
|
-
# 4.0.0.beta3
|
22
|
-
|
23
|
-
No gem-specific changes.
|
15
|
+
* Bootstrap rubygem now depends on SassC instead of Sass.
|
24
16
|
|
25
17
|
# 4.0.0.beta2.1
|
26
18
|
|
data/README.md
CHANGED
@@ -17,9 +17,15 @@ Please see the appropriate guide for your environment of choice:
|
|
17
17
|
Add `bootstrap` to your Gemfile:
|
18
18
|
|
19
19
|
```ruby
|
20
|
-
gem 'bootstrap', '~> 4.
|
20
|
+
gem 'bootstrap', '~> 4.6.2.1'
|
21
21
|
```
|
22
22
|
|
23
|
+
This gem requires a Sass engine, so make sure you have **one** of these four gems in your Gemfile:
|
24
|
+
- [`dartsass-sprockets`](https://github.com/tablecheck/dartsass-sprockets): Dart Sass engine, recommended but only works for Ruby 2.6+ and Rails 5+
|
25
|
+
- [`dartsass-rails`](https://github.com/rails/dartsass-rails): Dart Sass engine, recommended for Rails projects that use Propshaft
|
26
|
+
- [`cssbundling-rails`](https://github.com/rails/cssbundling-rails): External Sass engine
|
27
|
+
- [`sassc-rails`](https://github.com/sass/sassc-rails): SassC engine, deprecated but compatible with Ruby 2.3+ and Rails 4
|
28
|
+
|
23
29
|
Ensure that `sprockets-rails` is at least v2.3.2.
|
24
30
|
|
25
31
|
`bundle install` and restart your server to make the files available through the pipeline.
|
data/Rakefile
CHANGED
@@ -45,16 +45,28 @@ end
|
|
45
45
|
|
46
46
|
desc 'Dumps output to a CSS file for testing'
|
47
47
|
task :debug do
|
48
|
-
|
48
|
+
begin
|
49
|
+
require 'sass-embedded'
|
50
|
+
rescue LoadError
|
51
|
+
begin
|
52
|
+
require 'sassc'
|
53
|
+
rescue LoadError
|
54
|
+
raise LoadError.new("bootstrap-rubygem requires a Sass engine. Please add dartsass-sprockets or sassc-rails to your dependencies.")
|
55
|
+
end
|
56
|
+
end
|
49
57
|
require './lib/bootstrap'
|
50
58
|
require 'term/ansicolor'
|
51
59
|
require 'autoprefixer-rails'
|
52
60
|
path = Bootstrap.stylesheets_path
|
53
61
|
%w(_bootstrap _bootstrap-reboot _bootstrap-grid).each do |file|
|
54
|
-
|
55
|
-
|
56
|
-
|
62
|
+
filename = "#{path}/#{file}.scss"
|
63
|
+
css = if defined?(SassC::Engine)
|
64
|
+
SassC::Engine.new(File.read(filename), filename: filename, syntax: :scss).render
|
65
|
+
else
|
66
|
+
Sass.compile(filename).css
|
67
|
+
end
|
57
68
|
css = AutoprefixerRails.process(css)
|
69
|
+
out = File.join('tmp', "#{file[1..-1]}.css")
|
58
70
|
File.write(out, css)
|
59
71
|
$stderr.puts Term::ANSIColor.green "Compiled #{out}"
|
60
72
|
end
|
@@ -1,16 +1,18 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap alert.js v4.
|
3
|
-
* Copyright 2011-
|
4
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/
|
2
|
+
* Bootstrap alert.js v4.6.2 (https://getbootstrap.com/)
|
3
|
+
* Copyright 2011-2022 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
7
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :
|
8
|
-
typeof define === 'function' && define.amd ? define(['jquery', './util
|
9
|
-
(global = global || self, global.Alert = factory(global.jQuery, global.Util));
|
10
|
-
}(this, function ($, Util) { 'use strict';
|
8
|
+
typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) :
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.jQuery, global.Util));
|
10
|
+
})(this, (function ($, Util) { 'use strict';
|
11
11
|
|
12
|
-
|
13
|
-
|
12
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
13
|
+
|
14
|
+
var $__default = /*#__PURE__*/_interopDefaultLegacy($);
|
15
|
+
var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);
|
14
16
|
|
15
17
|
function _defineProperties(target, props) {
|
16
18
|
for (var i = 0; i < props.length; i++) {
|
@@ -25,44 +27,34 @@
|
|
25
27
|
function _createClass(Constructor, protoProps, staticProps) {
|
26
28
|
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
27
29
|
if (staticProps) _defineProperties(Constructor, staticProps);
|
30
|
+
Object.defineProperty(Constructor, "prototype", {
|
31
|
+
writable: false
|
32
|
+
});
|
28
33
|
return Constructor;
|
29
34
|
}
|
30
35
|
|
31
36
|
/**
|
32
|
-
* ------------------------------------------------------------------------
|
33
37
|
* Constants
|
34
|
-
* ------------------------------------------------------------------------
|
35
38
|
*/
|
36
39
|
|
37
40
|
var NAME = 'alert';
|
38
|
-
var VERSION = '4.
|
41
|
+
var VERSION = '4.6.2';
|
39
42
|
var DATA_KEY = 'bs.alert';
|
40
43
|
var EVENT_KEY = "." + DATA_KEY;
|
41
44
|
var DATA_API_KEY = '.data-api';
|
42
|
-
var JQUERY_NO_CONFLICT =
|
43
|
-
var
|
44
|
-
|
45
|
-
|
46
|
-
var
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
FADE: 'fade',
|
54
|
-
SHOW: 'show'
|
55
|
-
/**
|
56
|
-
* ------------------------------------------------------------------------
|
57
|
-
* Class Definition
|
58
|
-
* ------------------------------------------------------------------------
|
59
|
-
*/
|
60
|
-
|
61
|
-
};
|
45
|
+
var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
|
46
|
+
var CLASS_NAME_ALERT = 'alert';
|
47
|
+
var CLASS_NAME_FADE = 'fade';
|
48
|
+
var CLASS_NAME_SHOW = 'show';
|
49
|
+
var EVENT_CLOSE = "close" + EVENT_KEY;
|
50
|
+
var EVENT_CLOSED = "closed" + EVENT_KEY;
|
51
|
+
var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
|
52
|
+
var SELECTOR_DISMISS = '[data-dismiss="alert"]';
|
53
|
+
/**
|
54
|
+
* Class definition
|
55
|
+
*/
|
62
56
|
|
63
|
-
var Alert =
|
64
|
-
/*#__PURE__*/
|
65
|
-
function () {
|
57
|
+
var Alert = /*#__PURE__*/function () {
|
66
58
|
function Alert(element) {
|
67
59
|
this._element = element;
|
68
60
|
} // Getters
|
@@ -88,13 +80,13 @@
|
|
88
80
|
};
|
89
81
|
|
90
82
|
_proto.dispose = function dispose() {
|
91
|
-
|
83
|
+
$__default["default"].removeData(this._element, DATA_KEY);
|
92
84
|
this._element = null;
|
93
85
|
} // Private
|
94
86
|
;
|
95
87
|
|
96
88
|
_proto._getRootElement = function _getRootElement(element) {
|
97
|
-
var selector =
|
89
|
+
var selector = Util__default["default"].getSelectorFromElement(element);
|
98
90
|
var parent = false;
|
99
91
|
|
100
92
|
if (selector) {
|
@@ -102,43 +94,43 @@
|
|
102
94
|
}
|
103
95
|
|
104
96
|
if (!parent) {
|
105
|
-
parent = $(element).closest("." +
|
97
|
+
parent = $__default["default"](element).closest("." + CLASS_NAME_ALERT)[0];
|
106
98
|
}
|
107
99
|
|
108
100
|
return parent;
|
109
101
|
};
|
110
102
|
|
111
103
|
_proto._triggerCloseEvent = function _triggerCloseEvent(element) {
|
112
|
-
var closeEvent =
|
113
|
-
$(element).trigger(closeEvent);
|
104
|
+
var closeEvent = $__default["default"].Event(EVENT_CLOSE);
|
105
|
+
$__default["default"](element).trigger(closeEvent);
|
114
106
|
return closeEvent;
|
115
107
|
};
|
116
108
|
|
117
109
|
_proto._removeElement = function _removeElement(element) {
|
118
110
|
var _this = this;
|
119
111
|
|
120
|
-
$(element).removeClass(
|
112
|
+
$__default["default"](element).removeClass(CLASS_NAME_SHOW);
|
121
113
|
|
122
|
-
if (!$(element).hasClass(
|
114
|
+
if (!$__default["default"](element).hasClass(CLASS_NAME_FADE)) {
|
123
115
|
this._destroyElement(element);
|
124
116
|
|
125
117
|
return;
|
126
118
|
}
|
127
119
|
|
128
|
-
var transitionDuration =
|
129
|
-
$(element).one(
|
120
|
+
var transitionDuration = Util__default["default"].getTransitionDurationFromElement(element);
|
121
|
+
$__default["default"](element).one(Util__default["default"].TRANSITION_END, function (event) {
|
130
122
|
return _this._destroyElement(element, event);
|
131
123
|
}).emulateTransitionEnd(transitionDuration);
|
132
124
|
};
|
133
125
|
|
134
126
|
_proto._destroyElement = function _destroyElement(element) {
|
135
|
-
$(element).detach().trigger(
|
127
|
+
$__default["default"](element).detach().trigger(EVENT_CLOSED).remove();
|
136
128
|
} // Static
|
137
129
|
;
|
138
130
|
|
139
131
|
Alert._jQueryInterface = function _jQueryInterface(config) {
|
140
132
|
return this.each(function () {
|
141
|
-
var $element = $(this);
|
133
|
+
var $element = $__default["default"](this);
|
142
134
|
var data = $element.data(DATA_KEY);
|
143
135
|
|
144
136
|
if (!data) {
|
@@ -172,24 +164,20 @@
|
|
172
164
|
return Alert;
|
173
165
|
}();
|
174
166
|
/**
|
175
|
-
*
|
176
|
-
* Data Api implementation
|
177
|
-
* ------------------------------------------------------------------------
|
167
|
+
* Data API implementation
|
178
168
|
*/
|
179
169
|
|
180
170
|
|
181
|
-
$(document).on(
|
171
|
+
$__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));
|
182
172
|
/**
|
183
|
-
* ------------------------------------------------------------------------
|
184
173
|
* jQuery
|
185
|
-
* ------------------------------------------------------------------------
|
186
174
|
*/
|
187
175
|
|
188
|
-
|
189
|
-
|
176
|
+
$__default["default"].fn[NAME] = Alert._jQueryInterface;
|
177
|
+
$__default["default"].fn[NAME].Constructor = Alert;
|
190
178
|
|
191
|
-
|
192
|
-
|
179
|
+
$__default["default"].fn[NAME].noConflict = function () {
|
180
|
+
$__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
|
193
181
|
return Alert._jQueryInterface;
|
194
182
|
};
|
195
183
|
|
@@ -1,15 +1,17 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap button.js v4.
|
3
|
-
* Copyright 2011-
|
4
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/
|
2
|
+
* Bootstrap button.js v4.6.2 (https://getbootstrap.com/)
|
3
|
+
* Copyright 2011-2022 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
7
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :
|
8
8
|
typeof define === 'function' && define.amd ? define(['jquery'], factory) :
|
9
|
-
(global = global || self, global.Button = factory(global.jQuery));
|
10
|
-
}(this, function ($) { 'use strict';
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.jQuery));
|
10
|
+
})(this, (function ($) { 'use strict';
|
11
11
|
|
12
|
-
|
12
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
13
|
+
|
14
|
+
var $__default = /*#__PURE__*/_interopDefaultLegacy($);
|
13
15
|
|
14
16
|
function _defineProperties(target, props) {
|
15
17
|
for (var i = 0; i < props.length; i++) {
|
@@ -24,49 +26,43 @@
|
|
24
26
|
function _createClass(Constructor, protoProps, staticProps) {
|
25
27
|
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
26
28
|
if (staticProps) _defineProperties(Constructor, staticProps);
|
29
|
+
Object.defineProperty(Constructor, "prototype", {
|
30
|
+
writable: false
|
31
|
+
});
|
27
32
|
return Constructor;
|
28
33
|
}
|
29
34
|
|
30
35
|
/**
|
31
|
-
* ------------------------------------------------------------------------
|
32
36
|
* Constants
|
33
|
-
* ------------------------------------------------------------------------
|
34
37
|
*/
|
35
38
|
|
36
39
|
var NAME = 'button';
|
37
|
-
var VERSION = '4.
|
40
|
+
var VERSION = '4.6.2';
|
38
41
|
var DATA_KEY = 'bs.button';
|
39
42
|
var EVENT_KEY = "." + DATA_KEY;
|
40
43
|
var DATA_API_KEY = '.data-api';
|
41
|
-
var JQUERY_NO_CONFLICT =
|
42
|
-
var
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
var
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
var
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
* ------------------------------------------------------------------------
|
59
|
-
* Class Definition
|
60
|
-
* ------------------------------------------------------------------------
|
61
|
-
*/
|
62
|
-
|
63
|
-
};
|
44
|
+
var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
|
45
|
+
var CLASS_NAME_ACTIVE = 'active';
|
46
|
+
var CLASS_NAME_BUTTON = 'btn';
|
47
|
+
var CLASS_NAME_FOCUS = 'focus';
|
48
|
+
var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
|
49
|
+
var EVENT_FOCUS_BLUR_DATA_API = "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY);
|
50
|
+
var EVENT_LOAD_DATA_API = "load" + EVENT_KEY + DATA_API_KEY;
|
51
|
+
var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^="button"]';
|
52
|
+
var SELECTOR_DATA_TOGGLES = '[data-toggle="buttons"]';
|
53
|
+
var SELECTOR_DATA_TOGGLE = '[data-toggle="button"]';
|
54
|
+
var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle="buttons"] .btn';
|
55
|
+
var SELECTOR_INPUT = 'input:not([type="hidden"])';
|
56
|
+
var SELECTOR_ACTIVE = '.active';
|
57
|
+
var SELECTOR_BUTTON = '.btn';
|
58
|
+
/**
|
59
|
+
* Class definition
|
60
|
+
*/
|
64
61
|
|
65
|
-
var Button =
|
66
|
-
/*#__PURE__*/
|
67
|
-
function () {
|
62
|
+
var Button = /*#__PURE__*/function () {
|
68
63
|
function Button(element) {
|
69
64
|
this._element = element;
|
65
|
+
this.shouldAvoidTriggerChange = false;
|
70
66
|
} // Getters
|
71
67
|
|
72
68
|
|
@@ -76,31 +72,33 @@
|
|
76
72
|
_proto.toggle = function toggle() {
|
77
73
|
var triggerChangeEvent = true;
|
78
74
|
var addAriaPressed = true;
|
79
|
-
var rootElement = $(this._element).closest(
|
75
|
+
var rootElement = $__default["default"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];
|
80
76
|
|
81
77
|
if (rootElement) {
|
82
|
-
var input = this._element.querySelector(
|
78
|
+
var input = this._element.querySelector(SELECTOR_INPUT);
|
83
79
|
|
84
80
|
if (input) {
|
85
81
|
if (input.type === 'radio') {
|
86
|
-
if (input.checked && this._element.classList.contains(
|
82
|
+
if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {
|
87
83
|
triggerChangeEvent = false;
|
88
84
|
} else {
|
89
|
-
var activeElement = rootElement.querySelector(
|
85
|
+
var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);
|
90
86
|
|
91
87
|
if (activeElement) {
|
92
|
-
$(activeElement).removeClass(
|
88
|
+
$__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE);
|
93
89
|
}
|
94
90
|
}
|
95
91
|
}
|
96
92
|
|
97
93
|
if (triggerChangeEvent) {
|
98
|
-
if
|
99
|
-
|
94
|
+
// if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input
|
95
|
+
if (input.type === 'checkbox' || input.type === 'radio') {
|
96
|
+
input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE);
|
100
97
|
}
|
101
98
|
|
102
|
-
|
103
|
-
|
99
|
+
if (!this.shouldAvoidTriggerChange) {
|
100
|
+
$__default["default"](input).trigger('change');
|
101
|
+
}
|
104
102
|
}
|
105
103
|
|
106
104
|
input.focus();
|
@@ -108,30 +106,35 @@
|
|
108
106
|
}
|
109
107
|
}
|
110
108
|
|
111
|
-
if (
|
112
|
-
|
113
|
-
|
109
|
+
if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {
|
110
|
+
if (addAriaPressed) {
|
111
|
+
this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE));
|
112
|
+
}
|
114
113
|
|
115
|
-
|
116
|
-
|
114
|
+
if (triggerChangeEvent) {
|
115
|
+
$__default["default"](this._element).toggleClass(CLASS_NAME_ACTIVE);
|
116
|
+
}
|
117
117
|
}
|
118
118
|
};
|
119
119
|
|
120
120
|
_proto.dispose = function dispose() {
|
121
|
-
|
121
|
+
$__default["default"].removeData(this._element, DATA_KEY);
|
122
122
|
this._element = null;
|
123
123
|
} // Static
|
124
124
|
;
|
125
125
|
|
126
|
-
Button._jQueryInterface = function _jQueryInterface(config) {
|
126
|
+
Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {
|
127
127
|
return this.each(function () {
|
128
|
-
var
|
128
|
+
var $element = $__default["default"](this);
|
129
|
+
var data = $element.data(DATA_KEY);
|
129
130
|
|
130
131
|
if (!data) {
|
131
132
|
data = new Button(this);
|
132
|
-
$
|
133
|
+
$element.data(DATA_KEY, data);
|
133
134
|
}
|
134
135
|
|
136
|
+
data.shouldAvoidTriggerChange = avoidTriggerChange;
|
137
|
+
|
135
138
|
if (config === 'toggle') {
|
136
139
|
data[config]();
|
137
140
|
}
|
@@ -148,36 +151,75 @@
|
|
148
151
|
return Button;
|
149
152
|
}();
|
150
153
|
/**
|
151
|
-
*
|
152
|
-
* Data Api implementation
|
153
|
-
* ------------------------------------------------------------------------
|
154
|
+
* Data API implementation
|
154
155
|
*/
|
155
156
|
|
156
157
|
|
157
|
-
$(document).on(
|
158
|
-
event.preventDefault();
|
158
|
+
$__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {
|
159
159
|
var button = event.target;
|
160
|
+
var initialButton = button;
|
161
|
+
|
162
|
+
if (!$__default["default"](button).hasClass(CLASS_NAME_BUTTON)) {
|
163
|
+
button = $__default["default"](button).closest(SELECTOR_BUTTON)[0];
|
164
|
+
}
|
165
|
+
|
166
|
+
if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {
|
167
|
+
event.preventDefault(); // work around Firefox bug #1540995
|
168
|
+
} else {
|
169
|
+
var inputBtn = button.querySelector(SELECTOR_INPUT);
|
160
170
|
|
161
|
-
|
162
|
-
|
171
|
+
if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {
|
172
|
+
event.preventDefault(); // work around Firefox bug #1540995
|
173
|
+
|
174
|
+
return;
|
175
|
+
}
|
176
|
+
|
177
|
+
if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {
|
178
|
+
Button._jQueryInterface.call($__default["default"](button), 'toggle', initialButton.tagName === 'INPUT');
|
179
|
+
}
|
163
180
|
}
|
181
|
+
}).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {
|
182
|
+
var button = $__default["default"](event.target).closest(SELECTOR_BUTTON)[0];
|
183
|
+
$__default["default"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));
|
184
|
+
});
|
185
|
+
$__default["default"](window).on(EVENT_LOAD_DATA_API, function () {
|
186
|
+
// ensure correct active class is set to match the controls' actual values/states
|
187
|
+
// find all checkboxes/readio buttons inside data-toggle groups
|
188
|
+
var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));
|
189
|
+
|
190
|
+
for (var i = 0, len = buttons.length; i < len; i++) {
|
191
|
+
var button = buttons[i];
|
192
|
+
var input = button.querySelector(SELECTOR_INPUT);
|
193
|
+
|
194
|
+
if (input.checked || input.hasAttribute('checked')) {
|
195
|
+
button.classList.add(CLASS_NAME_ACTIVE);
|
196
|
+
} else {
|
197
|
+
button.classList.remove(CLASS_NAME_ACTIVE);
|
198
|
+
}
|
199
|
+
} // find all button toggles
|
200
|
+
|
201
|
+
|
202
|
+
buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
|
164
203
|
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
204
|
+
for (var _i = 0, _len = buttons.length; _i < _len; _i++) {
|
205
|
+
var _button = buttons[_i];
|
206
|
+
|
207
|
+
if (_button.getAttribute('aria-pressed') === 'true') {
|
208
|
+
_button.classList.add(CLASS_NAME_ACTIVE);
|
209
|
+
} else {
|
210
|
+
_button.classList.remove(CLASS_NAME_ACTIVE);
|
211
|
+
}
|
212
|
+
}
|
169
213
|
});
|
170
214
|
/**
|
171
|
-
* ------------------------------------------------------------------------
|
172
215
|
* jQuery
|
173
|
-
* ------------------------------------------------------------------------
|
174
216
|
*/
|
175
217
|
|
176
|
-
|
177
|
-
|
218
|
+
$__default["default"].fn[NAME] = Button._jQueryInterface;
|
219
|
+
$__default["default"].fn[NAME].Constructor = Button;
|
178
220
|
|
179
|
-
|
180
|
-
|
221
|
+
$__default["default"].fn[NAME].noConflict = function () {
|
222
|
+
$__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
|
181
223
|
return Button._jQueryInterface;
|
182
224
|
};
|
183
225
|
|