bootstrap 4.4.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 +11 -1
- data/CHANGELOG.md +4 -0
- data/README.md +7 -1
- data/Rakefile +16 -4
- data/assets/javascripts/bootstrap/alert.js +42 -53
- data/assets/javascripts/bootstrap/button.js +76 -81
- data/assets/javascripts/bootstrap/carousel.js +161 -199
- data/assets/javascripts/bootstrap/collapse.js +97 -142
- data/assets/javascripts/bootstrap/dropdown.js +130 -186
- data/assets/javascripts/bootstrap/modal.js +191 -213
- data/assets/javascripts/bootstrap/popover.js +62 -92
- data/assets/javascripts/bootstrap/scrollspy.js +81 -132
- data/assets/javascripts/bootstrap/tab.js +78 -83
- data/assets/javascripts/bootstrap/toast.js +83 -118
- data/assets/javascripts/bootstrap/tooltip.js +158 -198
- data/assets/javascripts/bootstrap/util.js +27 -26
- data/assets/javascripts/bootstrap-sprockets.js +7 -7
- data/assets/javascripts/bootstrap.js +1037 -1202
- 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/_breadcrumb.scss +1 -1
- data/assets/stylesheets/bootstrap/_buttons.scss +10 -7
- data/assets/stylesheets/bootstrap/_card.scss +30 -22
- data/assets/stylesheets/bootstrap/_carousel.scss +6 -3
- data/assets/stylesheets/bootstrap/_close.scss +0 -1
- data/assets/stylesheets/bootstrap/_custom-forms.scss +23 -18
- data/assets/stylesheets/bootstrap/_dropdown.scss +4 -3
- data/assets/stylesheets/bootstrap/_forms.scss +19 -10
- data/assets/stylesheets/bootstrap/_functions.scss +62 -6
- data/assets/stylesheets/bootstrap/_grid.scss +10 -6
- data/assets/stylesheets/bootstrap/_images.scss +1 -1
- data/assets/stylesheets/bootstrap/_input-group.scss +24 -4
- data/assets/stylesheets/bootstrap/_jumbotron.scss +1 -1
- data/assets/stylesheets/bootstrap/_list-group.scss +10 -14
- data/assets/stylesheets/bootstrap/_modal.scss +4 -3
- data/assets/stylesheets/bootstrap/_nav.scss +9 -4
- data/assets/stylesheets/bootstrap/_navbar.scss +10 -2
- data/assets/stylesheets/bootstrap/_pagination.scss +3 -2
- data/assets/stylesheets/bootstrap/_popover.scss +9 -9
- data/assets/stylesheets/bootstrap/_print.scss +0 -9
- data/assets/stylesheets/bootstrap/_progress.scss +2 -1
- data/assets/stylesheets/bootstrap/_reboot.scss +27 -25
- data/assets/stylesheets/bootstrap/_root.scss +0 -1
- data/assets/stylesheets/bootstrap/_spinners.scss +18 -8
- 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 +1 -1
- data/assets/stylesheets/bootstrap/_utilities.scss +2 -1
- data/assets/stylesheets/bootstrap/_variables.scss +34 -28
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +2 -1
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +27 -14
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +6 -6
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +23 -5
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +26 -17
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +17 -17
- data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
- data/assets/stylesheets/bootstrap/utilities/_background.scss +1 -1
- 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 +2 -2
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +126 -102
- data/bootstrap.gemspec +1 -3
- 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/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
- metadata +12 -19
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
|
@@ -5,11 +5,21 @@ addons:
|
|
|
5
5
|
packages:
|
|
6
6
|
- chromium-browser
|
|
7
7
|
rvm:
|
|
8
|
-
- 2.
|
|
8
|
+
- 2.5
|
|
9
|
+
- 2.6
|
|
10
|
+
- 2.7
|
|
11
|
+
|
|
9
12
|
gemfile:
|
|
10
13
|
- test/gemfiles/rails_4_2.gemfile
|
|
11
14
|
- test/gemfiles/rails_5_0.gemfile
|
|
12
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
|
+
|
|
13
23
|
cache: bundler
|
|
14
24
|
bundler_args: --path ../../vendor/bundle --without debug
|
|
15
25
|
notifications:
|
data/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,10 @@ 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.6.2.1
|
|
10
|
+
|
|
11
|
+
* Adds support for other Sass compilers. [#278](https://github.com/twbs/bootstrap-rubygem/pull/278)
|
|
12
|
+
|
|
9
13
|
# 4.2.1
|
|
10
14
|
|
|
11
15
|
* Bootstrap rubygem now depends on SassC instead of Sass.
|
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,43 +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
|
-
var ClassName = {
|
|
52
|
-
ALERT: 'alert',
|
|
53
|
-
FADE: 'fade',
|
|
54
|
-
SHOW: 'show'
|
|
55
|
-
};
|
|
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"]';
|
|
56
53
|
/**
|
|
57
|
-
*
|
|
58
|
-
* Class Definition
|
|
59
|
-
* ------------------------------------------------------------------------
|
|
54
|
+
* Class definition
|
|
60
55
|
*/
|
|
61
56
|
|
|
62
|
-
var Alert =
|
|
63
|
-
/*#__PURE__*/
|
|
64
|
-
function () {
|
|
57
|
+
var Alert = /*#__PURE__*/function () {
|
|
65
58
|
function Alert(element) {
|
|
66
59
|
this._element = element;
|
|
67
60
|
} // Getters
|
|
@@ -87,13 +80,13 @@
|
|
|
87
80
|
};
|
|
88
81
|
|
|
89
82
|
_proto.dispose = function dispose() {
|
|
90
|
-
|
|
83
|
+
$__default["default"].removeData(this._element, DATA_KEY);
|
|
91
84
|
this._element = null;
|
|
92
85
|
} // Private
|
|
93
86
|
;
|
|
94
87
|
|
|
95
88
|
_proto._getRootElement = function _getRootElement(element) {
|
|
96
|
-
var selector =
|
|
89
|
+
var selector = Util__default["default"].getSelectorFromElement(element);
|
|
97
90
|
var parent = false;
|
|
98
91
|
|
|
99
92
|
if (selector) {
|
|
@@ -101,43 +94,43 @@
|
|
|
101
94
|
}
|
|
102
95
|
|
|
103
96
|
if (!parent) {
|
|
104
|
-
parent = $(element).closest("." +
|
|
97
|
+
parent = $__default["default"](element).closest("." + CLASS_NAME_ALERT)[0];
|
|
105
98
|
}
|
|
106
99
|
|
|
107
100
|
return parent;
|
|
108
101
|
};
|
|
109
102
|
|
|
110
103
|
_proto._triggerCloseEvent = function _triggerCloseEvent(element) {
|
|
111
|
-
var closeEvent =
|
|
112
|
-
$(element).trigger(closeEvent);
|
|
104
|
+
var closeEvent = $__default["default"].Event(EVENT_CLOSE);
|
|
105
|
+
$__default["default"](element).trigger(closeEvent);
|
|
113
106
|
return closeEvent;
|
|
114
107
|
};
|
|
115
108
|
|
|
116
109
|
_proto._removeElement = function _removeElement(element) {
|
|
117
110
|
var _this = this;
|
|
118
111
|
|
|
119
|
-
$(element).removeClass(
|
|
112
|
+
$__default["default"](element).removeClass(CLASS_NAME_SHOW);
|
|
120
113
|
|
|
121
|
-
if (!$(element).hasClass(
|
|
114
|
+
if (!$__default["default"](element).hasClass(CLASS_NAME_FADE)) {
|
|
122
115
|
this._destroyElement(element);
|
|
123
116
|
|
|
124
117
|
return;
|
|
125
118
|
}
|
|
126
119
|
|
|
127
|
-
var transitionDuration =
|
|
128
|
-
$(element).one(
|
|
120
|
+
var transitionDuration = Util__default["default"].getTransitionDurationFromElement(element);
|
|
121
|
+
$__default["default"](element).one(Util__default["default"].TRANSITION_END, function (event) {
|
|
129
122
|
return _this._destroyElement(element, event);
|
|
130
123
|
}).emulateTransitionEnd(transitionDuration);
|
|
131
124
|
};
|
|
132
125
|
|
|
133
126
|
_proto._destroyElement = function _destroyElement(element) {
|
|
134
|
-
$(element).detach().trigger(
|
|
127
|
+
$__default["default"](element).detach().trigger(EVENT_CLOSED).remove();
|
|
135
128
|
} // Static
|
|
136
129
|
;
|
|
137
130
|
|
|
138
131
|
Alert._jQueryInterface = function _jQueryInterface(config) {
|
|
139
132
|
return this.each(function () {
|
|
140
|
-
var $element = $(this);
|
|
133
|
+
var $element = $__default["default"](this);
|
|
141
134
|
var data = $element.data(DATA_KEY);
|
|
142
135
|
|
|
143
136
|
if (!data) {
|
|
@@ -171,27 +164,23 @@
|
|
|
171
164
|
return Alert;
|
|
172
165
|
}();
|
|
173
166
|
/**
|
|
174
|
-
*
|
|
175
|
-
* Data Api implementation
|
|
176
|
-
* ------------------------------------------------------------------------
|
|
167
|
+
* Data API implementation
|
|
177
168
|
*/
|
|
178
169
|
|
|
179
170
|
|
|
180
|
-
$(document).on(
|
|
171
|
+
$__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));
|
|
181
172
|
/**
|
|
182
|
-
* ------------------------------------------------------------------------
|
|
183
173
|
* jQuery
|
|
184
|
-
* ------------------------------------------------------------------------
|
|
185
174
|
*/
|
|
186
175
|
|
|
187
|
-
|
|
188
|
-
|
|
176
|
+
$__default["default"].fn[NAME] = Alert._jQueryInterface;
|
|
177
|
+
$__default["default"].fn[NAME].Constructor = Alert;
|
|
189
178
|
|
|
190
|
-
|
|
191
|
-
|
|
179
|
+
$__default["default"].fn[NAME].noConflict = function () {
|
|
180
|
+
$__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
|
|
192
181
|
return Alert._jQueryInterface;
|
|
193
182
|
};
|
|
194
183
|
|
|
195
184
|
return Alert;
|
|
196
185
|
|
|
197
|
-
}))
|
|
186
|
+
}));
|
|
@@ -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,51 +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
|
-
|
|
55
|
-
};
|
|
56
|
-
var Event = {
|
|
57
|
-
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
|
|
58
|
-
FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY),
|
|
59
|
-
LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY
|
|
60
|
-
};
|
|
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';
|
|
61
58
|
/**
|
|
62
|
-
*
|
|
63
|
-
* Class Definition
|
|
64
|
-
* ------------------------------------------------------------------------
|
|
59
|
+
* Class definition
|
|
65
60
|
*/
|
|
66
61
|
|
|
67
|
-
var Button =
|
|
68
|
-
/*#__PURE__*/
|
|
69
|
-
function () {
|
|
62
|
+
var Button = /*#__PURE__*/function () {
|
|
70
63
|
function Button(element) {
|
|
71
64
|
this._element = element;
|
|
65
|
+
this.shouldAvoidTriggerChange = false;
|
|
72
66
|
} // Getters
|
|
73
67
|
|
|
74
68
|
|
|
@@ -78,34 +72,33 @@
|
|
|
78
72
|
_proto.toggle = function toggle() {
|
|
79
73
|
var triggerChangeEvent = true;
|
|
80
74
|
var addAriaPressed = true;
|
|
81
|
-
var rootElement = $(this._element).closest(
|
|
75
|
+
var rootElement = $__default["default"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];
|
|
82
76
|
|
|
83
77
|
if (rootElement) {
|
|
84
|
-
var input = this._element.querySelector(
|
|
78
|
+
var input = this._element.querySelector(SELECTOR_INPUT);
|
|
85
79
|
|
|
86
80
|
if (input) {
|
|
87
81
|
if (input.type === 'radio') {
|
|
88
|
-
if (input.checked && this._element.classList.contains(
|
|
82
|
+
if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {
|
|
89
83
|
triggerChangeEvent = false;
|
|
90
84
|
} else {
|
|
91
|
-
var activeElement = rootElement.querySelector(
|
|
85
|
+
var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);
|
|
92
86
|
|
|
93
87
|
if (activeElement) {
|
|
94
|
-
$(activeElement).removeClass(
|
|
88
|
+
$__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE);
|
|
95
89
|
}
|
|
96
90
|
}
|
|
97
|
-
} else if (input.type === 'checkbox') {
|
|
98
|
-
if (this._element.tagName === 'LABEL' && input.checked === this._element.classList.contains(ClassName.ACTIVE)) {
|
|
99
|
-
triggerChangeEvent = false;
|
|
100
|
-
}
|
|
101
|
-
} else {
|
|
102
|
-
// if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input
|
|
103
|
-
triggerChangeEvent = false;
|
|
104
91
|
}
|
|
105
92
|
|
|
106
93
|
if (triggerChangeEvent) {
|
|
107
|
-
|
|
108
|
-
|
|
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);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (!this.shouldAvoidTriggerChange) {
|
|
100
|
+
$__default["default"](input).trigger('change');
|
|
101
|
+
}
|
|
109
102
|
}
|
|
110
103
|
|
|
111
104
|
input.focus();
|
|
@@ -115,30 +108,33 @@
|
|
|
115
108
|
|
|
116
109
|
if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {
|
|
117
110
|
if (addAriaPressed) {
|
|
118
|
-
this._element.setAttribute('aria-pressed', !this._element.classList.contains(
|
|
111
|
+
this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE));
|
|
119
112
|
}
|
|
120
113
|
|
|
121
114
|
if (triggerChangeEvent) {
|
|
122
|
-
$(this._element).toggleClass(
|
|
115
|
+
$__default["default"](this._element).toggleClass(CLASS_NAME_ACTIVE);
|
|
123
116
|
}
|
|
124
117
|
}
|
|
125
118
|
};
|
|
126
119
|
|
|
127
120
|
_proto.dispose = function dispose() {
|
|
128
|
-
|
|
121
|
+
$__default["default"].removeData(this._element, DATA_KEY);
|
|
129
122
|
this._element = null;
|
|
130
123
|
} // Static
|
|
131
124
|
;
|
|
132
125
|
|
|
133
|
-
Button._jQueryInterface = function _jQueryInterface(config) {
|
|
126
|
+
Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {
|
|
134
127
|
return this.each(function () {
|
|
135
|
-
var
|
|
128
|
+
var $element = $__default["default"](this);
|
|
129
|
+
var data = $element.data(DATA_KEY);
|
|
136
130
|
|
|
137
131
|
if (!data) {
|
|
138
132
|
data = new Button(this);
|
|
139
|
-
$
|
|
133
|
+
$element.data(DATA_KEY, data);
|
|
140
134
|
}
|
|
141
135
|
|
|
136
|
+
data.shouldAvoidTriggerChange = avoidTriggerChange;
|
|
137
|
+
|
|
142
138
|
if (config === 'toggle') {
|
|
143
139
|
data[config]();
|
|
144
140
|
}
|
|
@@ -155,23 +151,22 @@
|
|
|
155
151
|
return Button;
|
|
156
152
|
}();
|
|
157
153
|
/**
|
|
158
|
-
*
|
|
159
|
-
* Data Api implementation
|
|
160
|
-
* ------------------------------------------------------------------------
|
|
154
|
+
* Data API implementation
|
|
161
155
|
*/
|
|
162
156
|
|
|
163
157
|
|
|
164
|
-
$(document).on(
|
|
158
|
+
$__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {
|
|
165
159
|
var button = event.target;
|
|
160
|
+
var initialButton = button;
|
|
166
161
|
|
|
167
|
-
if (!$(button).hasClass(
|
|
168
|
-
button = $(button).closest(
|
|
162
|
+
if (!$__default["default"](button).hasClass(CLASS_NAME_BUTTON)) {
|
|
163
|
+
button = $__default["default"](button).closest(SELECTOR_BUTTON)[0];
|
|
169
164
|
}
|
|
170
165
|
|
|
171
166
|
if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {
|
|
172
167
|
event.preventDefault(); // work around Firefox bug #1540995
|
|
173
168
|
} else {
|
|
174
|
-
var inputBtn = button.querySelector(
|
|
169
|
+
var inputBtn = button.querySelector(SELECTOR_INPUT);
|
|
175
170
|
|
|
176
171
|
if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {
|
|
177
172
|
event.preventDefault(); // work around Firefox bug #1540995
|
|
@@ -179,55 +174,55 @@
|
|
|
179
174
|
return;
|
|
180
175
|
}
|
|
181
176
|
|
|
182
|
-
|
|
177
|
+
if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {
|
|
178
|
+
Button._jQueryInterface.call($__default["default"](button), 'toggle', initialButton.tagName === 'INPUT');
|
|
179
|
+
}
|
|
183
180
|
}
|
|
184
|
-
}).on(
|
|
185
|
-
var button = $(event.target).closest(
|
|
186
|
-
$(button).toggleClass(
|
|
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));
|
|
187
184
|
});
|
|
188
|
-
$(window).on(
|
|
185
|
+
$__default["default"](window).on(EVENT_LOAD_DATA_API, function () {
|
|
189
186
|
// ensure correct active class is set to match the controls' actual values/states
|
|
190
187
|
// find all checkboxes/readio buttons inside data-toggle groups
|
|
191
|
-
var buttons = [].slice.call(document.querySelectorAll(
|
|
188
|
+
var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));
|
|
192
189
|
|
|
193
190
|
for (var i = 0, len = buttons.length; i < len; i++) {
|
|
194
191
|
var button = buttons[i];
|
|
195
|
-
var input = button.querySelector(
|
|
192
|
+
var input = button.querySelector(SELECTOR_INPUT);
|
|
196
193
|
|
|
197
194
|
if (input.checked || input.hasAttribute('checked')) {
|
|
198
|
-
button.classList.add(
|
|
195
|
+
button.classList.add(CLASS_NAME_ACTIVE);
|
|
199
196
|
} else {
|
|
200
|
-
button.classList.remove(
|
|
197
|
+
button.classList.remove(CLASS_NAME_ACTIVE);
|
|
201
198
|
}
|
|
202
199
|
} // find all button toggles
|
|
203
200
|
|
|
204
201
|
|
|
205
|
-
buttons = [].slice.call(document.querySelectorAll(
|
|
202
|
+
buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
|
|
206
203
|
|
|
207
204
|
for (var _i = 0, _len = buttons.length; _i < _len; _i++) {
|
|
208
205
|
var _button = buttons[_i];
|
|
209
206
|
|
|
210
207
|
if (_button.getAttribute('aria-pressed') === 'true') {
|
|
211
|
-
_button.classList.add(
|
|
208
|
+
_button.classList.add(CLASS_NAME_ACTIVE);
|
|
212
209
|
} else {
|
|
213
|
-
_button.classList.remove(
|
|
210
|
+
_button.classList.remove(CLASS_NAME_ACTIVE);
|
|
214
211
|
}
|
|
215
212
|
}
|
|
216
213
|
});
|
|
217
214
|
/**
|
|
218
|
-
* ------------------------------------------------------------------------
|
|
219
215
|
* jQuery
|
|
220
|
-
* ------------------------------------------------------------------------
|
|
221
216
|
*/
|
|
222
217
|
|
|
223
|
-
|
|
224
|
-
|
|
218
|
+
$__default["default"].fn[NAME] = Button._jQueryInterface;
|
|
219
|
+
$__default["default"].fn[NAME].Constructor = Button;
|
|
225
220
|
|
|
226
|
-
|
|
227
|
-
|
|
221
|
+
$__default["default"].fn[NAME].noConflict = function () {
|
|
222
|
+
$__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
|
|
228
223
|
return Button._jQueryInterface;
|
|
229
224
|
};
|
|
230
225
|
|
|
231
226
|
return Button;
|
|
232
227
|
|
|
233
|
-
}))
|
|
228
|
+
}));
|