bootstrap 4.6.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -1
  3. data/README.md +7 -4
  4. data/assets/javascripts/bootstrap/alert.js +181 -109
  5. data/assets/javascripts/bootstrap/base-component.js +63 -0
  6. data/assets/javascripts/bootstrap/button.js +85 -173
  7. data/assets/javascripts/bootstrap/carousel.js +458 -355
  8. data/assets/javascripts/bootstrap/collapse.js +366 -218
  9. data/assets/javascripts/bootstrap/dom/data.js +68 -0
  10. data/assets/javascripts/bootstrap/dom/event-handler.js +322 -0
  11. data/assets/javascripts/bootstrap/dom/manipulator.js +88 -0
  12. data/assets/javascripts/bootstrap/dom/selector-engine.js +85 -0
  13. data/assets/javascripts/bootstrap/dropdown.js +459 -351
  14. data/assets/javascripts/bootstrap/modal.js +597 -429
  15. data/assets/javascripts/bootstrap/offcanvas.js +671 -0
  16. data/assets/javascripts/bootstrap/popover.js +130 -154
  17. data/assets/javascripts/bootstrap/scrollspy.js +238 -188
  18. data/assets/javascripts/bootstrap/tab.js +235 -137
  19. data/assets/javascripts/bootstrap/toast.js +210 -148
  20. data/assets/javascripts/bootstrap/tooltip.js +627 -466
  21. data/assets/javascripts/bootstrap-global-this-define.js +6 -0
  22. data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
  23. data/assets/javascripts/bootstrap-sprockets.js +15 -8
  24. data/assets/javascripts/bootstrap.js +3174 -2563
  25. data/assets/javascripts/bootstrap.min.js +2 -2
  26. data/assets/stylesheets/_bootstrap-grid.scss +51 -16
  27. data/assets/stylesheets/_bootstrap-reboot.scss +4 -1
  28. data/assets/stylesheets/_bootstrap.scss +16 -8
  29. data/assets/stylesheets/bootstrap/_accordion.scss +118 -0
  30. data/assets/stylesheets/bootstrap/_alert.scss +15 -10
  31. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  32. data/assets/stylesheets/bootstrap/_breadcrumb.scss +3 -17
  33. data/assets/stylesheets/bootstrap/_button-group.scss +21 -45
  34. data/assets/stylesheets/bootstrap/_buttons.scss +29 -60
  35. data/assets/stylesheets/bootstrap/_card.scss +20 -91
  36. data/assets/stylesheets/bootstrap/_carousel.scss +65 -33
  37. data/assets/stylesheets/bootstrap/_close.scss +30 -30
  38. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  39. data/assets/stylesheets/bootstrap/_dropdown.scss +84 -36
  40. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  41. data/assets/stylesheets/bootstrap/_functions.scss +84 -23
  42. data/assets/stylesheets/bootstrap/_grid.scss +3 -54
  43. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  44. data/assets/stylesheets/bootstrap/_list-group.scss +28 -8
  45. data/assets/stylesheets/bootstrap/_mixins.scss +8 -13
  46. data/assets/stylesheets/bootstrap/_modal.scss +43 -55
  47. data/assets/stylesheets/bootstrap/_nav.scss +23 -4
  48. data/assets/stylesheets/bootstrap/_navbar.scss +45 -71
  49. data/assets/stylesheets/bootstrap/_offcanvas.scss +77 -0
  50. data/assets/stylesheets/bootstrap/_pagination.scss +10 -20
  51. data/assets/stylesheets/bootstrap/_popover.scss +15 -27
  52. data/assets/stylesheets/bootstrap/_progress.scss +5 -4
  53. data/assets/stylesheets/bootstrap/_reboot.scss +316 -179
  54. data/assets/stylesheets/bootstrap/_root.scss +5 -8
  55. data/assets/stylesheets/bootstrap/_spinners.scss +11 -7
  56. data/assets/stylesheets/bootstrap/_tables.scss +79 -114
  57. data/assets/stylesheets/bootstrap/_toasts.scss +20 -15
  58. data/assets/stylesheets/bootstrap/_tooltip.scss +17 -17
  59. data/assets/stylesheets/bootstrap/_transitions.scss +2 -1
  60. data/assets/stylesheets/bootstrap/_type.scss +38 -59
  61. data/assets/stylesheets/bootstrap/_utilities.scss +594 -18
  62. data/assets/stylesheets/bootstrap/_variables.scss +800 -482
  63. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  64. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +61 -0
  65. data/assets/stylesheets/bootstrap/forms/_form-check.scss +152 -0
  66. data/assets/stylesheets/bootstrap/forms/_form-control.scss +219 -0
  67. data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
  68. data/assets/stylesheets/bootstrap/forms/_form-select.scss +67 -0
  69. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  70. data/assets/stylesheets/bootstrap/forms/_input-group.scss +121 -0
  71. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  72. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  73. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
  74. data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
  75. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
  76. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  77. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  78. data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
  79. data/assets/stylesheets/bootstrap/mixins/_alert.scss +3 -5
  80. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +10 -8
  81. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
  82. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +14 -10
  83. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +71 -48
  84. data/assets/stylesheets/bootstrap/mixins/_caret.scss +10 -8
  85. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  86. data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
  87. data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
  88. data/assets/stylesheets/bootstrap/mixins/_forms.scss +38 -86
  89. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
  90. data/assets/stylesheets/bootstrap/mixins/_grid.scss +89 -33
  91. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  92. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +5 -2
  93. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  94. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +17 -8
  95. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  96. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
  97. data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
  98. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +68 -0
  99. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +29 -0
  100. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  101. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +234 -126
  102. data/bootstrap.gemspec +1 -3
  103. data/lib/bootstrap/version.rb +2 -2
  104. data/tasks/updater/js.rb +20 -5
  105. data/tasks/updater/network.rb +7 -1
  106. data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
  107. data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
  108. data/test/dummy_rails/app/views/pages/root.html +89 -0
  109. data/test/dummy_rails/config/application.rb +0 -3
  110. data/test/gemfiles/rails_6_1.gemfile +7 -0
  111. metadata +45 -73
  112. data/assets/javascripts/bootstrap/util.js +0 -192
  113. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  114. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -526
  115. data/assets/stylesheets/bootstrap/_input-group.scss +0 -208
  116. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  117. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  118. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  119. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  120. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  121. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  122. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
  123. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  124. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  125. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
  126. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  127. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  128. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  129. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  130. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  131. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  132. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  133. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  134. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  135. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  136. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  137. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  138. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
  139. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  140. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  141. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  142. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  143. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  144. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  145. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  146. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  147. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
  148. data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
  149. /data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a6e184d00761a08f073305133ac6a53f543e19f3d1d803b18ddf7d245510e7e0
4
- data.tar.gz: effc3ea59c60d4782e6f1644a8b8df2855c0f7874f0c61bbb830642cfe41c6dc
3
+ metadata.gz: ab3cae7213a21110421a1bff463a4f8bccfdc085ce03953a9add6330fcc52f6f
4
+ data.tar.gz: f5e9f214138024c8adafcc459b934119657f9a0989b83c43dacf783ddd01a8a6
5
5
  SHA512:
6
- metadata.gz: 2dcc29c7e1c5fe86797d77b429917e81bd13f984a2253775c9f34b4906b18c61fa58a40537e1395965058a0109ec75ee74aca261136dafaf40e901710424e328
7
- data.tar.gz: cb7a7de3076461a58d42200f70228c4c269aad8d153799d14aa042acfe87b3ea7fdbf55b7e8a995f6af3aeebd64ffc61b4736b298d5c6b6b1743e6dc48c6850a
6
+ metadata.gz: a54dd7911c5a617cce35d57e7e8543859cd891e82fa919a85e74a7242337c6258175c7cacf09957b016d24a77957d85731a9373e948a9cfd1e85311513b05184
7
+ data.tar.gz: 63aac9f119c570a9826c14f6e1fefdf1c472bdd3befeac525c1d86c75a01e73e36c85bb238916ba09968b12541472c6f8727f3ca701366c7a72c161a32ff8c18
data/.travis.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  language: ruby
2
- sudo: false
2
+ dist: focal
3
3
  addons:
4
4
  apt:
5
5
  packages:
@@ -14,6 +14,7 @@ gemfile:
14
14
  - test/gemfiles/rails_5_0.gemfile
15
15
  - test/gemfiles/rails_5_1.gemfile
16
16
  - test/gemfiles/rails_6_0.gemfile
17
+ - test/gemfiles/rails_6_1.gemfile
17
18
 
18
19
  jobs:
19
20
  exclude:
data/README.md CHANGED
@@ -1,9 +1,12 @@
1
1
  # Bootstrap Ruby Gem [![Build Status](https://travis-ci.org/twbs/bootstrap-rubygem.svg?branch=master)](https://travis-ci.org/twbs/bootstrap-rubygem) [![Gem](https://img.shields.io/gem/v/bootstrap.svg)](https://rubygems.org/gems/bootstrap)
2
2
 
3
- [Bootstrap 4][bootstrap-home] ruby gem for Ruby on Rails (Sprockets) and Hanami (formerly Lotus).
3
+ [Bootstrap 4][bootstrap-home] ruby gem for Ruby on Rails (*Sprockets*) and Hanami (formerly Lotus).
4
4
 
5
5
  For Sass versions of Bootstrap 3 and 2 see [bootstrap-sass](https://github.com/twbs/bootstrap-sass) instead.
6
6
 
7
+ **Ruby on Rails 6 Note:**:
8
+ With the release of Rails 6 there have been some minor changes made to the default configuration for The Asset Pipeline. In specific, by default _Sprockets no longer processes JavaScript_ and instead Webpack is set as the default. The `twbs/bootstrap-rubygem` is for use with Sprockets not Webpack.
9
+
7
10
  ## Installation
8
11
 
9
12
  Please see the appropriate guide for your environment of choice:
@@ -17,7 +20,7 @@ Please see the appropriate guide for your environment of choice:
17
20
  Add `bootstrap` to your Gemfile:
18
21
 
19
22
  ```ruby
20
- gem 'bootstrap', '~> 4.6.0'
23
+ gem 'bootstrap', '~> 5.0.0'
21
24
  ```
22
25
 
23
26
  Ensure that `sprockets-rails` is at least v2.3.2.
@@ -44,8 +47,8 @@ Then, remove all the `*= require` and `*= require_tree` statements from the Sass
44
47
 
45
48
  Do not use `*= require` in Sass or your other stylesheets will not be able to access the Bootstrap mixins and variables.
46
49
 
47
- Bootstrap JavaScript depends on jQuery.
48
- If you're using Rails 5.1+, add the `jquery-rails` gem to your Gemfile:
50
+ Bootstrap JavaScript can optionally use jQuery.
51
+ If you're using Rails 5.1+, you can add the `jquery-rails` gem to your Gemfile:
49
52
 
50
53
  ```ruby
51
54
  gem 'jquery-rails'
@@ -1,151 +1,236 @@
1
1
  /*!
2
- * Bootstrap alert.js v4.6.0 (https://getbootstrap.com/)
2
+ * Bootstrap alert.js v5.0.0 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('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';
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./base-component.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler', './base-component'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.Data, global.EventHandler, global.Base));
10
+ }(this, (function (Data, EventHandler, BaseComponent) { 'use strict';
11
11
 
12
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
13
 
14
- var $__default = /*#__PURE__*/_interopDefaultLegacy($);
15
- var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);
14
+ var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
15
+ var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
16
+ var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
16
17
 
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);
18
+ /**
19
+ * --------------------------------------------------------------------------
20
+ * Bootstrap (v5.0.0): util/index.js
21
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
22
+ * --------------------------------------------------------------------------
23
+ */
24
+ const MILLISECONDS_MULTIPLIER = 1000;
25
+ const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
26
+
27
+ const getSelector = element => {
28
+ let selector = element.getAttribute('data-bs-target');
29
+
30
+ if (!selector || selector === '#') {
31
+ let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
32
+ // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
33
+ // `document.querySelector` will rightfully complain it is invalid.
34
+ // See https://github.com/twbs/bootstrap/issues/32273
35
+
36
+ if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
37
+ return null;
38
+ } // Just in case some CMS puts out a full URL with the anchor appended
39
+
40
+
41
+ if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
42
+ hrefAttr = `#${hrefAttr.split('#')[1]}`;
43
+ }
44
+
45
+ selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
24
46
  }
25
- }
26
47
 
27
- function _createClass(Constructor, protoProps, staticProps) {
28
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29
- if (staticProps) _defineProperties(Constructor, staticProps);
30
- return Constructor;
31
- }
48
+ return selector;
49
+ };
50
+
51
+ const getElementFromSelector = element => {
52
+ const selector = getSelector(element);
53
+ return selector ? document.querySelector(selector) : null;
54
+ };
55
+
56
+ const getTransitionDurationFromElement = element => {
57
+ if (!element) {
58
+ return 0;
59
+ } // Get transition-duration of the element
60
+
61
+
62
+ let {
63
+ transitionDuration,
64
+ transitionDelay
65
+ } = window.getComputedStyle(element);
66
+ const floatTransitionDuration = Number.parseFloat(transitionDuration);
67
+ const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
68
+
69
+ if (!floatTransitionDuration && !floatTransitionDelay) {
70
+ return 0;
71
+ } // If multiple durations are defined, take the first
72
+
73
+
74
+ transitionDuration = transitionDuration.split(',')[0];
75
+ transitionDelay = transitionDelay.split(',')[0];
76
+ return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
77
+ };
78
+
79
+ const triggerTransitionEnd = element => {
80
+ element.dispatchEvent(new Event(TRANSITION_END));
81
+ };
82
+
83
+ const emulateTransitionEnd = (element, duration) => {
84
+ let called = false;
85
+ const durationPadding = 5;
86
+ const emulatedDuration = duration + durationPadding;
87
+
88
+ function listener() {
89
+ called = true;
90
+ element.removeEventListener(TRANSITION_END, listener);
91
+ }
92
+
93
+ element.addEventListener(TRANSITION_END, listener);
94
+ setTimeout(() => {
95
+ if (!called) {
96
+ triggerTransitionEnd(element);
97
+ }
98
+ }, emulatedDuration);
99
+ };
100
+
101
+ const getjQuery = () => {
102
+ const {
103
+ jQuery
104
+ } = window;
105
+
106
+ if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
107
+ return jQuery;
108
+ }
109
+
110
+ return null;
111
+ };
112
+
113
+ const onDOMContentLoaded = callback => {
114
+ if (document.readyState === 'loading') {
115
+ document.addEventListener('DOMContentLoaded', callback);
116
+ } else {
117
+ callback();
118
+ }
119
+ };
120
+
121
+ const defineJQueryPlugin = (name, plugin) => {
122
+ onDOMContentLoaded(() => {
123
+ const $ = getjQuery();
124
+ /* istanbul ignore if */
125
+
126
+ if ($) {
127
+ const JQUERY_NO_CONFLICT = $.fn[name];
128
+ $.fn[name] = plugin.jQueryInterface;
129
+ $.fn[name].Constructor = plugin;
130
+
131
+ $.fn[name].noConflict = () => {
132
+ $.fn[name] = JQUERY_NO_CONFLICT;
133
+ return plugin.jQueryInterface;
134
+ };
135
+ }
136
+ });
137
+ };
32
138
 
139
+ /**
140
+ * --------------------------------------------------------------------------
141
+ * Bootstrap (v5.0.0): alert.js
142
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
143
+ * --------------------------------------------------------------------------
144
+ */
33
145
  /**
34
146
  * ------------------------------------------------------------------------
35
147
  * Constants
36
148
  * ------------------------------------------------------------------------
37
149
  */
38
150
 
39
- var NAME = 'alert';
40
- var VERSION = '4.6.0';
41
- var DATA_KEY = 'bs.alert';
42
- var EVENT_KEY = "." + DATA_KEY;
43
- var DATA_API_KEY = '.data-api';
44
- var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];
45
- var SELECTOR_DISMISS = '[data-dismiss="alert"]';
46
- var EVENT_CLOSE = "close" + EVENT_KEY;
47
- var EVENT_CLOSED = "closed" + EVENT_KEY;
48
- var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
49
- var CLASS_NAME_ALERT = 'alert';
50
- var CLASS_NAME_FADE = 'fade';
51
- var CLASS_NAME_SHOW = 'show';
151
+ const NAME = 'alert';
152
+ const DATA_KEY = 'bs.alert';
153
+ const EVENT_KEY = `.${DATA_KEY}`;
154
+ const DATA_API_KEY = '.data-api';
155
+ const SELECTOR_DISMISS = '[data-bs-dismiss="alert"]';
156
+ const EVENT_CLOSE = `close${EVENT_KEY}`;
157
+ const EVENT_CLOSED = `closed${EVENT_KEY}`;
158
+ const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
159
+ const CLASS_NAME_ALERT = 'alert';
160
+ const CLASS_NAME_FADE = 'fade';
161
+ const CLASS_NAME_SHOW = 'show';
52
162
  /**
53
163
  * ------------------------------------------------------------------------
54
164
  * Class Definition
55
165
  * ------------------------------------------------------------------------
56
166
  */
57
167
 
58
- var Alert = /*#__PURE__*/function () {
59
- function Alert(element) {
60
- this._element = element;
61
- } // Getters
62
-
63
-
64
- var _proto = Alert.prototype;
168
+ class Alert extends BaseComponent__default['default'] {
169
+ // Getters
170
+ static get DATA_KEY() {
171
+ return DATA_KEY;
172
+ } // Public
65
173
 
66
- // Public
67
- _proto.close = function close(element) {
68
- var rootElement = this._element;
69
174
 
70
- if (element) {
71
- rootElement = this._getRootElement(element);
72
- }
175
+ close(element) {
176
+ const rootElement = element ? this._getRootElement(element) : this._element;
73
177
 
74
- var customEvent = this._triggerCloseEvent(rootElement);
178
+ const customEvent = this._triggerCloseEvent(rootElement);
75
179
 
76
- if (customEvent.isDefaultPrevented()) {
180
+ if (customEvent === null || customEvent.defaultPrevented) {
77
181
  return;
78
182
  }
79
183
 
80
184
  this._removeElement(rootElement);
81
- };
82
-
83
- _proto.dispose = function dispose() {
84
- $__default['default'].removeData(this._element, DATA_KEY);
85
- this._element = null;
86
185
  } // Private
87
- ;
88
186
 
89
- _proto._getRootElement = function _getRootElement(element) {
90
- var selector = Util__default['default'].getSelectorFromElement(element);
91
- var parent = false;
92
-
93
- if (selector) {
94
- parent = document.querySelector(selector);
95
- }
96
187
 
97
- if (!parent) {
98
- parent = $__default['default'](element).closest("." + CLASS_NAME_ALERT)[0];
99
- }
100
-
101
- return parent;
102
- };
103
-
104
- _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
105
- var closeEvent = $__default['default'].Event(EVENT_CLOSE);
106
- $__default['default'](element).trigger(closeEvent);
107
- return closeEvent;
108
- };
188
+ _getRootElement(element) {
189
+ return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`);
190
+ }
109
191
 
110
- _proto._removeElement = function _removeElement(element) {
111
- var _this = this;
192
+ _triggerCloseEvent(element) {
193
+ return EventHandler__default['default'].trigger(element, EVENT_CLOSE);
194
+ }
112
195
 
113
- $__default['default'](element).removeClass(CLASS_NAME_SHOW);
196
+ _removeElement(element) {
197
+ element.classList.remove(CLASS_NAME_SHOW);
114
198
 
115
- if (!$__default['default'](element).hasClass(CLASS_NAME_FADE)) {
199
+ if (!element.classList.contains(CLASS_NAME_FADE)) {
116
200
  this._destroyElement(element);
117
201
 
118
202
  return;
119
203
  }
120
204
 
121
- var transitionDuration = Util__default['default'].getTransitionDurationFromElement(element);
122
- $__default['default'](element).one(Util__default['default'].TRANSITION_END, function (event) {
123
- return _this._destroyElement(element, event);
124
- }).emulateTransitionEnd(transitionDuration);
125
- };
205
+ const transitionDuration = getTransitionDurationFromElement(element);
206
+ EventHandler__default['default'].one(element, 'transitionend', () => this._destroyElement(element));
207
+ emulateTransitionEnd(element, transitionDuration);
208
+ }
209
+
210
+ _destroyElement(element) {
211
+ if (element.parentNode) {
212
+ element.parentNode.removeChild(element);
213
+ }
126
214
 
127
- _proto._destroyElement = function _destroyElement(element) {
128
- $__default['default'](element).detach().trigger(EVENT_CLOSED).remove();
215
+ EventHandler__default['default'].trigger(element, EVENT_CLOSED);
129
216
  } // Static
130
- ;
131
217
 
132
- Alert._jQueryInterface = function _jQueryInterface(config) {
218
+
219
+ static jQueryInterface(config) {
133
220
  return this.each(function () {
134
- var $element = $__default['default'](this);
135
- var data = $element.data(DATA_KEY);
221
+ let data = Data__default['default'].get(this, DATA_KEY);
136
222
 
137
223
  if (!data) {
138
224
  data = new Alert(this);
139
- $element.data(DATA_KEY, data);
140
225
  }
141
226
 
142
227
  if (config === 'close') {
143
228
  data[config](this);
144
229
  }
145
230
  });
146
- };
231
+ }
147
232
 
148
- Alert._handleDismiss = function _handleDismiss(alertInstance) {
233
+ static handleDismiss(alertInstance) {
149
234
  return function (event) {
150
235
  if (event) {
151
236
  event.preventDefault();
@@ -153,17 +238,9 @@
153
238
 
154
239
  alertInstance.close(this);
155
240
  };
156
- };
157
-
158
- _createClass(Alert, null, [{
159
- key: "VERSION",
160
- get: function get() {
161
- return VERSION;
162
- }
163
- }]);
241
+ }
164
242
 
165
- return Alert;
166
- }();
243
+ }
167
244
  /**
168
245
  * ------------------------------------------------------------------------
169
246
  * Data Api implementation
@@ -171,20 +248,15 @@
171
248
  */
172
249
 
173
250
 
174
- $__default['default'](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));
251
+ EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()));
175
252
  /**
176
253
  * ------------------------------------------------------------------------
177
254
  * jQuery
178
255
  * ------------------------------------------------------------------------
256
+ * add .Alert to jQuery only if jQuery is present
179
257
  */
180
258
 
181
- $__default['default'].fn[NAME] = Alert._jQueryInterface;
182
- $__default['default'].fn[NAME].Constructor = Alert;
183
-
184
- $__default['default'].fn[NAME].noConflict = function () {
185
- $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;
186
- return Alert._jQueryInterface;
187
- };
259
+ defineJQueryPlugin(NAME, Alert);
188
260
 
189
261
  return Alert;
190
262
 
@@ -0,0 +1,63 @@
1
+ /*!
2
+ * Bootstrap base-component.js v5.0.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ */
6
+ (function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Base = factory(global.Data, global.EventHandler));
10
+ }(this, (function (Data, EventHandler) { 'use strict';
11
+
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
14
+ var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
15
+ var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
16
+
17
+ /**
18
+ * --------------------------------------------------------------------------
19
+ * Bootstrap (v5.0.0): base-component.js
20
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
21
+ * --------------------------------------------------------------------------
22
+ */
23
+ /**
24
+ * ------------------------------------------------------------------------
25
+ * Constants
26
+ * ------------------------------------------------------------------------
27
+ */
28
+
29
+ const VERSION = '5.0.0';
30
+
31
+ class BaseComponent {
32
+ constructor(element) {
33
+ element = typeof element === 'string' ? document.querySelector(element) : element;
34
+
35
+ if (!element) {
36
+ return;
37
+ }
38
+
39
+ this._element = element;
40
+ Data__default['default'].set(this._element, this.constructor.DATA_KEY, this);
41
+ }
42
+
43
+ dispose() {
44
+ Data__default['default'].remove(this._element, this.constructor.DATA_KEY);
45
+ EventHandler__default['default'].off(this._element, `.${this.constructor.DATA_KEY}`);
46
+ this._element = null;
47
+ }
48
+ /** Static */
49
+
50
+
51
+ static getInstance(element) {
52
+ return Data__default['default'].get(element, this.DATA_KEY);
53
+ }
54
+
55
+ static get VERSION() {
56
+ return VERSION;
57
+ }
58
+
59
+ }
60
+
61
+ return BaseComponent;
62
+
63
+ })));