bootstrap 4.0.0 → 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 (116) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +15 -1
  3. data/CHANGELOG.md +4 -4
  4. data/README.md +8 -2
  5. data/Rakefile +18 -4
  6. data/assets/javascripts/bootstrap/alert.js +77 -66
  7. data/assets/javascripts/bootstrap/button.js +138 -76
  8. data/assets/javascripts/bootstrap/carousel.js +289 -152
  9. data/assets/javascripts/bootstrap/collapse.js +150 -128
  10. data/assets/javascripts/bootstrap/dropdown.js +249 -160
  11. data/assets/javascripts/bootstrap/modal.js +280 -199
  12. data/assets/javascripts/bootstrap/popover.js +99 -58
  13. data/assets/javascripts/bootstrap/scrollspy.js +123 -102
  14. data/assets/javascripts/bootstrap/tab.js +110 -98
  15. data/assets/javascripts/bootstrap/toast.js +267 -0
  16. data/assets/javascripts/bootstrap/tooltip.js +401 -183
  17. data/assets/javascripts/bootstrap/util.js +106 -55
  18. data/assets/javascripts/bootstrap-sprockets.js +7 -6
  19. data/assets/javascripts/bootstrap.js +1903 -1441
  20. data/assets/javascripts/bootstrap.min.js +4 -4
  21. data/assets/stylesheets/_bootstrap-grid.scss +6 -8
  22. data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
  23. data/assets/stylesheets/_bootstrap.scss +6 -4
  24. data/assets/stylesheets/bootstrap/_alert.scss +2 -1
  25. data/assets/stylesheets/bootstrap/_badge.scss +8 -1
  26. data/assets/stylesheets/bootstrap/_breadcrumb.scss +10 -6
  27. data/assets/stylesheets/bootstrap/_button-group.scss +17 -20
  28. data/assets/stylesheets/bootstrap/_buttons.scss +20 -21
  29. data/assets/stylesheets/bootstrap/_card.scss +77 -61
  30. data/assets/stylesheets/bootstrap/_carousel.scss +72 -63
  31. data/assets/stylesheets/bootstrap/_close.scss +14 -8
  32. data/assets/stylesheets/bootstrap/_code.scss +6 -14
  33. data/assets/stylesheets/bootstrap/_custom-forms.scss +274 -45
  34. data/assets/stylesheets/bootstrap/_dropdown.scss +70 -9
  35. data/assets/stylesheets/bootstrap/_forms.scss +56 -42
  36. data/assets/stylesheets/bootstrap/_functions.scss +117 -13
  37. data/assets/stylesheets/bootstrap/_grid.scss +32 -11
  38. data/assets/stylesheets/bootstrap/_images.scss +4 -4
  39. data/assets/stylesheets/bootstrap/_input-group.scss +68 -16
  40. data/assets/stylesheets/bootstrap/_jumbotron.scss +2 -1
  41. data/assets/stylesheets/bootstrap/_list-group.scss +63 -24
  42. data/assets/stylesheets/bootstrap/_mixins.scss +9 -4
  43. data/assets/stylesheets/bootstrap/_modal.scss +96 -24
  44. data/assets/stylesheets/bootstrap/_nav.scss +14 -7
  45. data/assets/stylesheets/bootstrap/_navbar.scss +64 -43
  46. data/assets/stylesheets/bootstrap/_pagination.scss +7 -10
  47. data/assets/stylesheets/bootstrap/_popover.scss +55 -68
  48. data/assets/stylesheets/bootstrap/_print.scss +24 -16
  49. data/assets/stylesheets/bootstrap/_progress.scss +20 -6
  50. data/assets/stylesheets/bootstrap/_reboot.scss +88 -86
  51. data/assets/stylesheets/bootstrap/_spinners.scss +65 -0
  52. data/assets/stylesheets/bootstrap/_tables.scss +19 -14
  53. data/assets/stylesheets/bootstrap/_toasts.scss +46 -0
  54. data/assets/stylesheets/bootstrap/_tooltip.scss +5 -5
  55. data/assets/stylesheets/bootstrap/_transitions.scss +10 -20
  56. data/assets/stylesheets/bootstrap/_type.scss +19 -19
  57. data/assets/stylesheets/bootstrap/_utilities.scss +4 -0
  58. data/assets/stylesheets/bootstrap/_variables.scss +462 -207
  59. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
  60. data/assets/stylesheets/bootstrap/mixins/_badge.scss +8 -3
  61. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +51 -10
  62. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +16 -1
  63. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +3 -3
  64. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +20 -19
  65. data/assets/stylesheets/bootstrap/mixins/_caret.scss +13 -16
  66. data/assets/stylesheets/bootstrap/mixins/_deprecate.scss +10 -0
  67. data/assets/stylesheets/bootstrap/mixins/_float.scss +6 -3
  68. data/assets/stylesheets/bootstrap/mixins/_forms.scss +96 -38
  69. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +7 -7
  70. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +31 -18
  71. data/assets/stylesheets/bootstrap/mixins/_grid.scss +34 -17
  72. data/assets/stylesheets/bootstrap/mixins/_hover.scss +7 -9
  73. data/assets/stylesheets/bootstrap/mixins/_image.scss +4 -4
  74. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -2
  75. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  76. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +3 -2
  77. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +1 -1
  78. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +3 -3
  79. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +5 -6
  80. data/assets/stylesheets/bootstrap/mixins/_size.scss +1 -0
  81. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +11 -2
  82. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +7 -4
  83. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +3 -1
  84. data/assets/stylesheets/bootstrap/mixins/_transition.scss +20 -3
  85. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +1 -0
  86. data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
  87. data/assets/stylesheets/bootstrap/utilities/_borders.scss +17 -1
  88. data/assets/stylesheets/bootstrap/utilities/_display.scss +6 -18
  89. data/assets/stylesheets/bootstrap/utilities/_embed.scss +7 -20
  90. data/assets/stylesheets/bootstrap/utilities/_flex.scss +5 -0
  91. data/assets/stylesheets/bootstrap/utilities/_float.scss +5 -3
  92. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
  93. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +5 -0
  94. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -4
  95. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +6 -0
  96. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +8 -0
  97. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +23 -1
  98. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +19 -0
  99. data/assets/stylesheets/bootstrap/utilities/_text.scss +28 -8
  100. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +4 -2
  101. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +228 -0
  102. data/bootstrap.gemspec +5 -4
  103. data/lib/bootstrap/engine.rb +19 -0
  104. data/lib/bootstrap/version.rb +4 -2
  105. data/lib/bootstrap.rb +10 -7
  106. data/tasks/updater/js.rb +18 -6
  107. data/tasks/updater/network.rb +8 -2
  108. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  109. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  110. data/test/gemfiles/rails_6_0.gemfile +7 -0
  111. data/test/gemfiles/rails_7_0_dartsass.gemfile +8 -0
  112. data/test/gemfiles/rails_7_0_sassc.gemfile +8 -0
  113. data/test/support/dummy_rails_integration.rb +3 -1
  114. data/test/test_helper.rb +21 -15
  115. metadata +28 -25
  116. data/assets/stylesheets/bootstrap/mixins/_navbar-align.scss +0 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 20d4d19b9e96d1a891aab9466010e01c1842c7cf
4
- data.tar.gz: 6d91e6aeee143e15d974f7ff3d24a2ad87d65b53
2
+ SHA256:
3
+ metadata.gz: dd382f63309c8fbf7da627ee4990fdaeb3e9eb7f25ba5d06f77346c0dcc68de4
4
+ data.tar.gz: 2c24101f290892643a48f3d530132cca24fb35b9d05e8b19c5305056508065ac
5
5
  SHA512:
6
- metadata.gz: aac524ee7e9d87f5107f8041f286a12c7c16ba99b64f5e8b0d7a23d23a767cc6420e6bf18be9595d84afad7861ef048fee85fddcd84b6712aae9d0146bb72afe
7
- data.tar.gz: b69acad263dceffeb101cefbfa76efd849b634d6a61f5567eae8800e250a674a06ef43ace048f187d8a2b441e62311242eb3eea96bcada84fef2a0a83744a35a
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.3.1
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,13 +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.0.0
9
+ # 4.6.2.1
10
10
 
11
- No gem-specific changes.
11
+ * Adds support for other Sass compilers. [#278](https://github.com/twbs/bootstrap-rubygem/pull/278)
12
12
 
13
- # 4.0.0.beta3
13
+ # 4.2.1
14
14
 
15
- No gem-specific changes.
15
+ * Bootstrap rubygem now depends on SassC instead of Sass.
16
16
 
17
17
  # 4.0.0.beta2.1
18
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.0.0'
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.
@@ -105,7 +111,7 @@ In the application Sass file, replace `@import 'bootstrap'` with:
105
111
  @import 'bootstrap-custom';
106
112
  ```
107
113
 
108
- [bootstrap-home]: http://v4-alpha.getbootstrap.com/
114
+ [bootstrap-home]: https://getbootstrap.com
109
115
  [bootstrap-variables.scss]: https://github.com/twbs/bootstrap-rubygem/blob/master/templates/project/_bootstrap-variables.scss
110
116
  [autoprefixer]: https://github.com/ai/autoprefixer
111
117
  [popper.js]: https://popper.js.org
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ require 'bundler/gem_tasks'
2
+
1
3
  lib_path = File.join(File.dirname(__FILE__), 'lib')
2
4
  $:.unshift(lib_path) unless $:.include?(lib_path)
3
5
 
@@ -43,16 +45,28 @@ end
43
45
 
44
46
  desc 'Dumps output to a CSS file for testing'
45
47
  task :debug do
46
- require 'sass'
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
47
57
  require './lib/bootstrap'
48
58
  require 'term/ansicolor'
49
59
  require 'autoprefixer-rails'
50
60
  path = Bootstrap.stylesheets_path
51
61
  %w(_bootstrap _bootstrap-reboot _bootstrap-grid).each do |file|
52
- engine = Sass::Engine.for_file("#{path}/#{file}.scss", syntax: :scss, load_paths: [path])
53
- out = File.join('tmp', "#{file[1..-1]}.css")
54
- 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
55
68
  css = AutoprefixerRails.process(css)
69
+ out = File.join('tmp', "#{file[1..-1]}.css")
56
70
  File.write(out, css)
57
71
  $stderr.puts Term::ANSIColor.green "Compiled #{out}"
58
72
  end
@@ -1,49 +1,60 @@
1
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
1
+ /*!
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
+ */
6
+ (function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :
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
+
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);
16
+
17
+ function _defineProperties(target, props) {
18
+ for (var i = 0; i < props.length; i++) {
19
+ var descriptor = props[i];
20
+ descriptor.enumerable = descriptor.enumerable || false;
21
+ descriptor.configurable = true;
22
+ if ("value" in descriptor) descriptor.writable = true;
23
+ Object.defineProperty(target, descriptor.key, descriptor);
24
+ }
25
+ }
26
+
27
+ function _createClass(Constructor, protoProps, staticProps) {
28
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29
+ if (staticProps) _defineProperties(Constructor, staticProps);
30
+ Object.defineProperty(Constructor, "prototype", {
31
+ writable: false
32
+ });
33
+ return Constructor;
34
+ }
2
35
 
3
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
4
-
5
- /**
6
- * --------------------------------------------------------------------------
7
- * Bootstrap (v4.0.0): alert.js
8
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
9
- * --------------------------------------------------------------------------
10
- */
11
- var Alert = function ($) {
12
36
  /**
13
- * ------------------------------------------------------------------------
14
37
  * Constants
15
- * ------------------------------------------------------------------------
16
38
  */
39
+
17
40
  var NAME = 'alert';
18
- var VERSION = '4.0.0';
41
+ var VERSION = '4.6.2';
19
42
  var DATA_KEY = 'bs.alert';
20
43
  var EVENT_KEY = "." + DATA_KEY;
21
44
  var DATA_API_KEY = '.data-api';
22
- var JQUERY_NO_CONFLICT = $.fn[NAME];
23
- var TRANSITION_DURATION = 150;
24
- var Selector = {
25
- DISMISS: '[data-dismiss="alert"]'
26
- };
27
- var Event = {
28
- CLOSE: "close" + EVENT_KEY,
29
- CLOSED: "closed" + EVENT_KEY,
30
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
31
- };
32
- var ClassName = {
33
- ALERT: 'alert',
34
- FADE: 'fade',
35
- SHOW: 'show'
36
- /**
37
- * ------------------------------------------------------------------------
38
- * Class Definition
39
- * ------------------------------------------------------------------------
40
- */
41
-
42
- };
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
+ */
43
56
 
44
- var Alert =
45
- /*#__PURE__*/
46
- function () {
57
+ var Alert = /*#__PURE__*/function () {
47
58
  function Alert(element) {
48
59
  this._element = element;
49
60
  } // Getters
@@ -53,9 +64,11 @@ var Alert = function ($) {
53
64
 
54
65
  // Public
55
66
  _proto.close = function close(element) {
56
- element = element || this._element;
67
+ var rootElement = this._element;
57
68
 
58
- var rootElement = this._getRootElement(element);
69
+ if (element) {
70
+ rootElement = this._getRootElement(element);
71
+ }
59
72
 
60
73
  var customEvent = this._triggerCloseEvent(rootElement);
61
74
 
@@ -67,56 +80,57 @@ var Alert = function ($) {
67
80
  };
68
81
 
69
82
  _proto.dispose = function dispose() {
70
- $.removeData(this._element, DATA_KEY);
83
+ $__default["default"].removeData(this._element, DATA_KEY);
71
84
  this._element = null;
72
- }; // Private
73
-
85
+ } // Private
86
+ ;
74
87
 
75
88
  _proto._getRootElement = function _getRootElement(element) {
76
- var selector = Util.getSelectorFromElement(element);
89
+ var selector = Util__default["default"].getSelectorFromElement(element);
77
90
  var parent = false;
78
91
 
79
92
  if (selector) {
80
- parent = $(selector)[0];
93
+ parent = document.querySelector(selector);
81
94
  }
82
95
 
83
96
  if (!parent) {
84
- parent = $(element).closest("." + ClassName.ALERT)[0];
97
+ parent = $__default["default"](element).closest("." + CLASS_NAME_ALERT)[0];
85
98
  }
86
99
 
87
100
  return parent;
88
101
  };
89
102
 
90
103
  _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
91
- var closeEvent = $.Event(Event.CLOSE);
92
- $(element).trigger(closeEvent);
104
+ var closeEvent = $__default["default"].Event(EVENT_CLOSE);
105
+ $__default["default"](element).trigger(closeEvent);
93
106
  return closeEvent;
94
107
  };
95
108
 
96
109
  _proto._removeElement = function _removeElement(element) {
97
110
  var _this = this;
98
111
 
99
- $(element).removeClass(ClassName.SHOW);
112
+ $__default["default"](element).removeClass(CLASS_NAME_SHOW);
100
113
 
101
- if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) {
114
+ if (!$__default["default"](element).hasClass(CLASS_NAME_FADE)) {
102
115
  this._destroyElement(element);
103
116
 
104
117
  return;
105
118
  }
106
119
 
107
- $(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) {
108
122
  return _this._destroyElement(element, event);
109
- }).emulateTransitionEnd(TRANSITION_DURATION);
123
+ }).emulateTransitionEnd(transitionDuration);
110
124
  };
111
125
 
112
126
  _proto._destroyElement = function _destroyElement(element) {
113
- $(element).detach().trigger(Event.CLOSED).remove();
114
- }; // Static
115
-
127
+ $__default["default"](element).detach().trigger(EVENT_CLOSED).remove();
128
+ } // Static
129
+ ;
116
130
 
117
131
  Alert._jQueryInterface = function _jQueryInterface(config) {
118
132
  return this.each(function () {
119
- var $element = $(this);
133
+ var $element = $__default["default"](this);
120
134
  var data = $element.data(DATA_KEY);
121
135
 
122
136
  if (!data) {
@@ -150,26 +164,23 @@ var Alert = function ($) {
150
164
  return Alert;
151
165
  }();
152
166
  /**
153
- * ------------------------------------------------------------------------
154
- * Data Api implementation
155
- * ------------------------------------------------------------------------
167
+ * Data API implementation
156
168
  */
157
169
 
158
170
 
159
- $(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()));
160
172
  /**
161
- * ------------------------------------------------------------------------
162
173
  * jQuery
163
- * ------------------------------------------------------------------------
164
174
  */
165
175
 
166
- $.fn[NAME] = Alert._jQueryInterface;
167
- $.fn[NAME].Constructor = Alert;
176
+ $__default["default"].fn[NAME] = Alert._jQueryInterface;
177
+ $__default["default"].fn[NAME].Constructor = Alert;
168
178
 
169
- $.fn[NAME].noConflict = function () {
170
- $.fn[NAME] = JQUERY_NO_CONFLICT;
179
+ $__default["default"].fn[NAME].noConflict = function () {
180
+ $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
171
181
  return Alert._jQueryInterface;
172
182
  };
173
183
 
174
184
  return Alert;
175
- }($);
185
+
186
+ }));
@@ -1,53 +1,68 @@
1
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
1
+ /*!
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
+ */
6
+ (function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :
8
+ typeof define === 'function' && define.amd ? define(['jquery'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.jQuery));
10
+ })(this, (function ($) { 'use strict';
11
+
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
14
+ var $__default = /*#__PURE__*/_interopDefaultLegacy($);
15
+
16
+ function _defineProperties(target, props) {
17
+ for (var i = 0; i < props.length; i++) {
18
+ var descriptor = props[i];
19
+ descriptor.enumerable = descriptor.enumerable || false;
20
+ descriptor.configurable = true;
21
+ if ("value" in descriptor) descriptor.writable = true;
22
+ Object.defineProperty(target, descriptor.key, descriptor);
23
+ }
24
+ }
2
25
 
3
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
26
+ function _createClass(Constructor, protoProps, staticProps) {
27
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
28
+ if (staticProps) _defineProperties(Constructor, staticProps);
29
+ Object.defineProperty(Constructor, "prototype", {
30
+ writable: false
31
+ });
32
+ return Constructor;
33
+ }
4
34
 
5
- /**
6
- * --------------------------------------------------------------------------
7
- * Bootstrap (v4.0.0): button.js
8
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
9
- * --------------------------------------------------------------------------
10
- */
11
- var Button = function ($) {
12
35
  /**
13
- * ------------------------------------------------------------------------
14
36
  * Constants
15
- * ------------------------------------------------------------------------
16
37
  */
38
+
17
39
  var NAME = 'button';
18
- var VERSION = '4.0.0';
40
+ var VERSION = '4.6.2';
19
41
  var DATA_KEY = 'bs.button';
20
42
  var EVENT_KEY = "." + DATA_KEY;
21
43
  var DATA_API_KEY = '.data-api';
22
- var JQUERY_NO_CONFLICT = $.fn[NAME];
23
- var ClassName = {
24
- ACTIVE: 'active',
25
- BUTTON: 'btn',
26
- FOCUS: 'focus'
27
- };
28
- var Selector = {
29
- DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
30
- DATA_TOGGLE: '[data-toggle="buttons"]',
31
- INPUT: 'input',
32
- ACTIVE: '.active',
33
- BUTTON: '.btn'
34
- };
35
- var Event = {
36
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
37
- FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY)
38
- /**
39
- * ------------------------------------------------------------------------
40
- * Class Definition
41
- * ------------------------------------------------------------------------
42
- */
43
-
44
- };
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
+ */
45
61
 
46
- var Button =
47
- /*#__PURE__*/
48
- function () {
62
+ var Button = /*#__PURE__*/function () {
49
63
  function Button(element) {
50
64
  this._element = element;
65
+ this.shouldAvoidTriggerChange = false;
51
66
  } // Getters
52
67
 
53
68
 
@@ -57,31 +72,33 @@ var Button = function ($) {
57
72
  _proto.toggle = function toggle() {
58
73
  var triggerChangeEvent = true;
59
74
  var addAriaPressed = true;
60
- var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];
75
+ var rootElement = $__default["default"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];
61
76
 
62
77
  if (rootElement) {
63
- var input = $(this._element).find(Selector.INPUT)[0];
78
+ var input = this._element.querySelector(SELECTOR_INPUT);
64
79
 
65
80
  if (input) {
66
81
  if (input.type === 'radio') {
67
- if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) {
82
+ if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {
68
83
  triggerChangeEvent = false;
69
84
  } else {
70
- var activeElement = $(rootElement).find(Selector.ACTIVE)[0];
85
+ var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);
71
86
 
72
87
  if (activeElement) {
73
- $(activeElement).removeClass(ClassName.ACTIVE);
88
+ $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE);
74
89
  }
75
90
  }
76
91
  }
77
92
 
78
93
  if (triggerChangeEvent) {
79
- if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
80
- return;
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);
81
97
  }
82
98
 
83
- input.checked = !$(this._element).hasClass(ClassName.ACTIVE);
84
- $(input).trigger('change');
99
+ if (!this.shouldAvoidTriggerChange) {
100
+ $__default["default"](input).trigger('change');
101
+ }
85
102
  }
86
103
 
87
104
  input.focus();
@@ -89,30 +106,35 @@ var Button = function ($) {
89
106
  }
90
107
  }
91
108
 
92
- if (addAriaPressed) {
93
- this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
94
- }
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
+ }
95
113
 
96
- if (triggerChangeEvent) {
97
- $(this._element).toggleClass(ClassName.ACTIVE);
114
+ if (triggerChangeEvent) {
115
+ $__default["default"](this._element).toggleClass(CLASS_NAME_ACTIVE);
116
+ }
98
117
  }
99
118
  };
100
119
 
101
120
  _proto.dispose = function dispose() {
102
- $.removeData(this._element, DATA_KEY);
121
+ $__default["default"].removeData(this._element, DATA_KEY);
103
122
  this._element = null;
104
- }; // Static
123
+ } // Static
124
+ ;
105
125
 
106
-
107
- Button._jQueryInterface = function _jQueryInterface(config) {
126
+ Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {
108
127
  return this.each(function () {
109
- var data = $(this).data(DATA_KEY);
128
+ var $element = $__default["default"](this);
129
+ var data = $element.data(DATA_KEY);
110
130
 
111
131
  if (!data) {
112
132
  data = new Button(this);
113
- $(this).data(DATA_KEY, data);
133
+ $element.data(DATA_KEY, data);
114
134
  }
115
135
 
136
+ data.shouldAvoidTriggerChange = avoidTriggerChange;
137
+
116
138
  if (config === 'toggle') {
117
139
  data[config]();
118
140
  }
@@ -129,38 +151,78 @@ var Button = function ($) {
129
151
  return Button;
130
152
  }();
131
153
  /**
132
- * ------------------------------------------------------------------------
133
- * Data Api implementation
134
- * ------------------------------------------------------------------------
154
+ * Data API implementation
135
155
  */
136
156
 
137
157
 
138
- $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
139
- event.preventDefault();
158
+ $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {
140
159
  var button = event.target;
160
+ var initialButton = button;
141
161
 
142
- if (!$(button).hasClass(ClassName.BUTTON)) {
143
- button = $(button).closest(Selector.BUTTON);
162
+ if (!$__default["default"](button).hasClass(CLASS_NAME_BUTTON)) {
163
+ button = $__default["default"](button).closest(SELECTOR_BUTTON)[0];
144
164
  }
145
165
 
146
- Button._jQueryInterface.call($(button), 'toggle');
147
- }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
148
- var button = $(event.target).closest(Selector.BUTTON)[0];
149
- $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
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);
170
+
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
+ }
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));
203
+
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
+ }
150
213
  });
151
214
  /**
152
- * ------------------------------------------------------------------------
153
215
  * jQuery
154
- * ------------------------------------------------------------------------
155
216
  */
156
217
 
157
- $.fn[NAME] = Button._jQueryInterface;
158
- $.fn[NAME].Constructor = Button;
218
+ $__default["default"].fn[NAME] = Button._jQueryInterface;
219
+ $__default["default"].fn[NAME].Constructor = Button;
159
220
 
160
- $.fn[NAME].noConflict = function () {
161
- $.fn[NAME] = JQUERY_NO_CONFLICT;
221
+ $__default["default"].fn[NAME].noConflict = function () {
222
+ $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
162
223
  return Button._jQueryInterface;
163
224
  };
164
225
 
165
226
  return Button;
166
- }($);
227
+
228
+ }));