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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +11 -1
  3. data/CHANGELOG.md +4 -0
  4. data/README.md +7 -1
  5. data/Rakefile +16 -4
  6. data/assets/javascripts/bootstrap/alert.js +42 -53
  7. data/assets/javascripts/bootstrap/button.js +76 -81
  8. data/assets/javascripts/bootstrap/carousel.js +161 -199
  9. data/assets/javascripts/bootstrap/collapse.js +97 -142
  10. data/assets/javascripts/bootstrap/dropdown.js +130 -186
  11. data/assets/javascripts/bootstrap/modal.js +191 -213
  12. data/assets/javascripts/bootstrap/popover.js +62 -92
  13. data/assets/javascripts/bootstrap/scrollspy.js +81 -132
  14. data/assets/javascripts/bootstrap/tab.js +78 -83
  15. data/assets/javascripts/bootstrap/toast.js +83 -118
  16. data/assets/javascripts/bootstrap/tooltip.js +158 -198
  17. data/assets/javascripts/bootstrap/util.js +27 -26
  18. data/assets/javascripts/bootstrap-sprockets.js +7 -7
  19. data/assets/javascripts/bootstrap.js +1037 -1202
  20. data/assets/javascripts/bootstrap.min.js +4 -4
  21. data/assets/stylesheets/_bootstrap-grid.scss +5 -4
  22. data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
  23. data/assets/stylesheets/_bootstrap.scss +4 -4
  24. data/assets/stylesheets/bootstrap/_alert.scss +1 -0
  25. data/assets/stylesheets/bootstrap/_breadcrumb.scss +1 -1
  26. data/assets/stylesheets/bootstrap/_buttons.scss +10 -7
  27. data/assets/stylesheets/bootstrap/_card.scss +30 -22
  28. data/assets/stylesheets/bootstrap/_carousel.scss +6 -3
  29. data/assets/stylesheets/bootstrap/_close.scss +0 -1
  30. data/assets/stylesheets/bootstrap/_custom-forms.scss +23 -18
  31. data/assets/stylesheets/bootstrap/_dropdown.scss +4 -3
  32. data/assets/stylesheets/bootstrap/_forms.scss +19 -10
  33. data/assets/stylesheets/bootstrap/_functions.scss +62 -6
  34. data/assets/stylesheets/bootstrap/_grid.scss +10 -6
  35. data/assets/stylesheets/bootstrap/_images.scss +1 -1
  36. data/assets/stylesheets/bootstrap/_input-group.scss +24 -4
  37. data/assets/stylesheets/bootstrap/_jumbotron.scss +1 -1
  38. data/assets/stylesheets/bootstrap/_list-group.scss +10 -14
  39. data/assets/stylesheets/bootstrap/_modal.scss +4 -3
  40. data/assets/stylesheets/bootstrap/_nav.scss +9 -4
  41. data/assets/stylesheets/bootstrap/_navbar.scss +10 -2
  42. data/assets/stylesheets/bootstrap/_pagination.scss +3 -2
  43. data/assets/stylesheets/bootstrap/_popover.scss +9 -9
  44. data/assets/stylesheets/bootstrap/_print.scss +0 -9
  45. data/assets/stylesheets/bootstrap/_progress.scss +2 -1
  46. data/assets/stylesheets/bootstrap/_reboot.scss +27 -25
  47. data/assets/stylesheets/bootstrap/_root.scss +0 -1
  48. data/assets/stylesheets/bootstrap/_spinners.scss +18 -8
  49. data/assets/stylesheets/bootstrap/_toasts.scss +4 -2
  50. data/assets/stylesheets/bootstrap/_tooltip.scss +4 -4
  51. data/assets/stylesheets/bootstrap/_transitions.scss +6 -0
  52. data/assets/stylesheets/bootstrap/_type.scss +1 -1
  53. data/assets/stylesheets/bootstrap/_utilities.scss +2 -1
  54. data/assets/stylesheets/bootstrap/_variables.scss +34 -28
  55. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +2 -1
  56. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +27 -14
  57. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +6 -6
  58. data/assets/stylesheets/bootstrap/mixins/_forms.scss +23 -5
  59. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +26 -17
  60. data/assets/stylesheets/bootstrap/mixins/_grid.scss +17 -17
  61. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -1
  62. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  63. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +2 -2
  64. data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
  65. data/assets/stylesheets/bootstrap/utilities/_background.scss +1 -1
  66. data/assets/stylesheets/bootstrap/utilities/_borders.scss +1 -1
  67. data/assets/stylesheets/bootstrap/utilities/_embed.scss +1 -1
  68. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
  69. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +1 -1
  70. data/assets/stylesheets/bootstrap/utilities/_text.scss +2 -2
  71. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +126 -102
  72. data/bootstrap.gemspec +1 -3
  73. data/lib/bootstrap/engine.rb +17 -1
  74. data/lib/bootstrap/version.rb +2 -2
  75. data/tasks/updater/js.rb +18 -6
  76. data/tasks/updater/network.rb +8 -2
  77. data/test/gemfiles/rails_6_0.gemfile +7 -0
  78. data/test/gemfiles/rails_7_0_dartsass.gemfile +8 -0
  79. data/test/gemfiles/rails_7_0_sassc.gemfile +8 -0
  80. metadata +12 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d4e652e6f2ad9ba67c684f7c375952d78a4c57c3f4aa3b715dc8344c0315296b
4
- data.tar.gz: df777f6eb60e5d140371ad36df9feae91bb28afd1a355591ae84640dea0f2d1e
3
+ metadata.gz: dd382f63309c8fbf7da627ee4990fdaeb3e9eb7f25ba5d06f77346c0dcc68de4
4
+ data.tar.gz: 2c24101f290892643a48f3d530132cca24fb35b9d05e8b19c5305056508065ac
5
5
  SHA512:
6
- metadata.gz: be9fd21133a9d447f4a8514cada5ccc6392eae3d6c49d017c72b9c207fe3a996dd815892d244e7180aaa11a684f92d853d19cad220ba399017c808dc2fb953a2
7
- data.tar.gz: 79259239d7db27b752ee2fb3bf715cd70bcb77036de20aae43c1d4fad56d7814fb43ddb56c21093baf7ae80ebccab3b01bfc3d1e71967380d7d4bc6008361d45
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.3.8
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.4.1'
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
- require 'sassc'
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
- engine = SassC::Engine.new(File.read("#{path}/#{file}.scss"), syntax: :scss, load_paths: [path])
55
- out = File.join('tmp', "#{file[1..-1]}.css")
56
- css = engine.render
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.4.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
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.js'], factory) :
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
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
- Util = Util && Util.hasOwnProperty('default') ? Util['default'] : Util;
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.4.1';
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 = $.fn[NAME];
43
- var Selector = {
44
- DISMISS: '[data-dismiss="alert"]'
45
- };
46
- var Event = {
47
- CLOSE: "close" + EVENT_KEY,
48
- CLOSED: "closed" + EVENT_KEY,
49
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
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
- $.removeData(this._element, DATA_KEY);
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 = Util.getSelectorFromElement(element);
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("." + ClassName.ALERT)[0];
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 = $.Event(Event.CLOSE);
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(ClassName.SHOW);
112
+ $__default["default"](element).removeClass(CLASS_NAME_SHOW);
120
113
 
121
- if (!$(element).hasClass(ClassName.FADE)) {
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 = Util.getTransitionDurationFromElement(element);
128
- $(element).one(Util.TRANSITION_END, function (event) {
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(Event.CLOSED).remove();
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(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
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
- $.fn[NAME] = Alert._jQueryInterface;
188
- $.fn[NAME].Constructor = Alert;
176
+ $__default["default"].fn[NAME] = Alert._jQueryInterface;
177
+ $__default["default"].fn[NAME].Constructor = Alert;
189
178
 
190
- $.fn[NAME].noConflict = function () {
191
- $.fn[NAME] = JQUERY_NO_CONFLICT;
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.4.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
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
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
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.4.1';
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 = $.fn[NAME];
42
- var ClassName = {
43
- ACTIVE: 'active',
44
- BUTTON: 'btn',
45
- FOCUS: 'focus'
46
- };
47
- var Selector = {
48
- DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
49
- DATA_TOGGLES: '[data-toggle="buttons"]',
50
- DATA_TOGGLE: '[data-toggle="button"]',
51
- DATA_TOGGLES_BUTTONS: '[data-toggle="buttons"] .btn',
52
- INPUT: 'input:not([type="hidden"])',
53
- ACTIVE: '.active',
54
- BUTTON: '.btn'
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(Selector.DATA_TOGGLES)[0];
75
+ var rootElement = $__default["default"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];
82
76
 
83
77
  if (rootElement) {
84
- var input = this._element.querySelector(Selector.INPUT);
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(ClassName.ACTIVE)) {
82
+ if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {
89
83
  triggerChangeEvent = false;
90
84
  } else {
91
- var activeElement = rootElement.querySelector(Selector.ACTIVE);
85
+ var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);
92
86
 
93
87
  if (activeElement) {
94
- $(activeElement).removeClass(ClassName.ACTIVE);
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
- input.checked = !this._element.classList.contains(ClassName.ACTIVE);
108
- $(input).trigger('change');
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(ClassName.ACTIVE));
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(ClassName.ACTIVE);
115
+ $__default["default"](this._element).toggleClass(CLASS_NAME_ACTIVE);
123
116
  }
124
117
  }
125
118
  };
126
119
 
127
120
  _proto.dispose = function dispose() {
128
- $.removeData(this._element, DATA_KEY);
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 data = $(this).data(DATA_KEY);
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
- $(this).data(DATA_KEY, data);
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(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
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(ClassName.BUTTON)) {
168
- button = $(button).closest(Selector.BUTTON)[0];
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(Selector.INPUT);
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
- Button._jQueryInterface.call($(button), 'toggle');
177
+ if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {
178
+ Button._jQueryInterface.call($__default["default"](button), 'toggle', initialButton.tagName === 'INPUT');
179
+ }
183
180
  }
184
- }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
185
- var button = $(event.target).closest(Selector.BUTTON)[0];
186
- $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
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(Event.LOAD_DATA_API, function () {
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(Selector.DATA_TOGGLES_BUTTONS));
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(Selector.INPUT);
192
+ var input = button.querySelector(SELECTOR_INPUT);
196
193
 
197
194
  if (input.checked || input.hasAttribute('checked')) {
198
- button.classList.add(ClassName.ACTIVE);
195
+ button.classList.add(CLASS_NAME_ACTIVE);
199
196
  } else {
200
- button.classList.remove(ClassName.ACTIVE);
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(Selector.DATA_TOGGLE));
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(ClassName.ACTIVE);
208
+ _button.classList.add(CLASS_NAME_ACTIVE);
212
209
  } else {
213
- _button.classList.remove(ClassName.ACTIVE);
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
- $.fn[NAME] = Button._jQueryInterface;
224
- $.fn[NAME].Constructor = Button;
218
+ $__default["default"].fn[NAME] = Button._jQueryInterface;
219
+ $__default["default"].fn[NAME].Constructor = Button;
225
220
 
226
- $.fn[NAME].noConflict = function () {
227
- $.fn[NAME] = JQUERY_NO_CONFLICT;
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
+ }));