bootstrap 4.3.1 → 5.3.0

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 (179) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +55 -0
  3. data/CHANGELOG.md +2 -14
  4. data/README.md +28 -5
  5. data/assets/javascripts/bootstrap/alert.js +54 -163
  6. data/assets/javascripts/bootstrap/base-component.js +83 -0
  7. data/assets/javascripts/bootstrap/button.js +44 -152
  8. data/assets/javascripts/bootstrap/carousel.js +289 -569
  9. data/assets/javascripts/bootstrap/collapse.js +170 -349
  10. data/assets/javascripts/bootstrap/dom/data.js +62 -0
  11. data/assets/javascripts/bootstrap/dom/event-handler.js +236 -0
  12. data/assets/javascripts/bootstrap/dom/manipulator.js +71 -0
  13. data/assets/javascripts/bootstrap/dom/selector-engine.js +103 -0
  14. data/assets/javascripts/bootstrap/dropdown.js +303 -496
  15. data/assets/javascripts/bootstrap/modal.js +229 -559
  16. data/assets/javascripts/bootstrap/offcanvas.js +245 -0
  17. data/assets/javascripts/bootstrap/popover.js +61 -226
  18. data/assets/javascripts/bootstrap/scrollspy.js +217 -317
  19. data/assets/javascripts/bootstrap/tab.js +220 -212
  20. data/assets/javascripts/bootstrap/toast.js +145 -229
  21. data/assets/javascripts/bootstrap/tooltip.js +421 -782
  22. data/assets/javascripts/bootstrap/util/backdrop.js +139 -0
  23. data/assets/javascripts/bootstrap/util/component-functions.js +41 -0
  24. data/assets/javascripts/bootstrap/util/config.js +67 -0
  25. data/assets/javascripts/bootstrap/util/focustrap.js +113 -0
  26. data/assets/javascripts/bootstrap/util/index.js +281 -0
  27. data/assets/javascripts/bootstrap/util/sanitizer.js +110 -0
  28. data/assets/javascripts/bootstrap/util/scrollbar.js +112 -0
  29. data/assets/javascripts/bootstrap/util/swipe.js +134 -0
  30. data/assets/javascripts/bootstrap/util/template-factory.js +150 -0
  31. data/assets/javascripts/bootstrap-global-this-define.js +6 -0
  32. data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
  33. data/assets/javascripts/bootstrap-sprockets.js +23 -7
  34. data/assets/javascripts/bootstrap.js +3690 -3639
  35. data/assets/javascripts/bootstrap.min.js +4 -4
  36. data/assets/stylesheets/_bootstrap-grid.scss +53 -20
  37. data/assets/stylesheets/_bootstrap-reboot.scss +5 -7
  38. data/assets/stylesheets/_bootstrap.scss +21 -13
  39. data/assets/stylesheets/bootstrap/_accordion.scss +158 -0
  40. data/assets/stylesheets/bootstrap/_alert.scss +32 -15
  41. data/assets/stylesheets/bootstrap/_badge.scss +15 -31
  42. data/assets/stylesheets/bootstrap/_breadcrumb.scss +23 -24
  43. data/assets/stylesheets/bootstrap/_button-group.scss +27 -48
  44. data/assets/stylesheets/bootstrap/_buttons.scss +139 -69
  45. data/assets/stylesheets/bootstrap/_card.scss +91 -141
  46. data/assets/stylesheets/bootstrap/_carousel.scss +86 -39
  47. data/assets/stylesheets/bootstrap/_close.scss +51 -29
  48. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  49. data/assets/stylesheets/bootstrap/_dropdown.scss +131 -72
  50. data/assets/stylesheets/bootstrap/_forms.scss +9 -330
  51. data/assets/stylesheets/bootstrap/_functions.scss +244 -28
  52. data/assets/stylesheets/bootstrap/_grid.scss +18 -31
  53. data/assets/stylesheets/bootstrap/_helpers.scss +12 -0
  54. data/assets/stylesheets/bootstrap/_images.scss +3 -3
  55. data/assets/stylesheets/bootstrap/_list-group.scss +101 -53
  56. data/assets/stylesheets/bootstrap/_maps.scss +174 -0
  57. data/assets/stylesheets/bootstrap/_mixins.scss +13 -18
  58. data/assets/stylesheets/bootstrap/_modal.scss +120 -112
  59. data/assets/stylesheets/bootstrap/_nav.scss +113 -24
  60. data/assets/stylesheets/bootstrap/_navbar.scss +145 -150
  61. data/assets/stylesheets/bootstrap/_offcanvas.scss +146 -0
  62. data/assets/stylesheets/bootstrap/_pagination.scss +74 -38
  63. data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
  64. data/assets/stylesheets/bootstrap/_popover.scss +99 -74
  65. data/assets/stylesheets/bootstrap/_progress.scss +40 -15
  66. data/assets/stylesheets/bootstrap/_reboot.scss +342 -215
  67. data/assets/stylesheets/bootstrap/_root.scss +174 -9
  68. data/assets/stylesheets/bootstrap/_spinners.scss +52 -22
  69. data/assets/stylesheets/bootstrap/_tables.scss +101 -115
  70. data/assets/stylesheets/bootstrap/_toasts.scss +54 -25
  71. data/assets/stylesheets/bootstrap/_tooltip.scss +67 -63
  72. data/assets/stylesheets/bootstrap/_transitions.scss +8 -1
  73. data/assets/stylesheets/bootstrap/_type.scss +42 -61
  74. data/assets/stylesheets/bootstrap/_utilities.scss +806 -17
  75. data/assets/stylesheets/bootstrap/_variables-dark.scss +85 -0
  76. data/assets/stylesheets/bootstrap/_variables.scss +1235 -615
  77. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +19 -0
  78. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +94 -0
  79. data/assets/stylesheets/bootstrap/forms/_form-check.scss +188 -0
  80. data/assets/stylesheets/bootstrap/forms/_form-control.scss +214 -0
  81. data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
  82. data/assets/stylesheets/bootstrap/forms/_form-select.scss +80 -0
  83. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  84. data/assets/stylesheets/bootstrap/forms/_input-group.scss +132 -0
  85. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  86. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  87. data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +8 -0
  88. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +30 -0
  89. data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
  90. data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
  91. data/assets/stylesheets/bootstrap/helpers/_position.scss +36 -0
  92. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
  93. data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
  94. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  95. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  96. data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
  97. data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
  98. data/assets/stylesheets/bootstrap/mixins/_alert.scss +11 -6
  99. data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
  100. data/assets/stylesheets/bootstrap/mixins/_banner.scss +7 -0
  101. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +37 -22
  102. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
  103. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +20 -16
  104. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +60 -97
  105. data/assets/stylesheets/bootstrap/mixins/_caret.scss +34 -27
  106. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  107. data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
  108. data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
  109. data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
  110. data/assets/stylesheets/bootstrap/mixins/_forms.scss +77 -116
  111. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
  112. data/assets/stylesheets/bootstrap/mixins/_grid.scss +133 -33
  113. data/assets/stylesheets/bootstrap/mixins/_image.scss +0 -20
  114. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +7 -2
  115. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +7 -19
  116. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  117. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +24 -0
  118. data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
  119. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +97 -0
  120. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +33 -0
  121. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  122. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +276 -132
  123. data/bootstrap.gemspec +4 -6
  124. data/lib/bootstrap/version.rb +2 -2
  125. data/tasks/updater/js.rb +31 -7
  126. data/tasks/updater/network.rb +10 -4
  127. data/tasks/updater/scss.rb +1 -1
  128. data/tasks/updater.rb +2 -2
  129. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  130. data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
  131. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  132. data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
  133. data/test/dummy_rails/app/views/pages/root.html +89 -0
  134. data/test/dummy_rails/config/application.rb +0 -3
  135. data/test/gemfiles/rails_5_2.gemfile +8 -0
  136. data/test/gemfiles/rails_6_0.gemfile +7 -0
  137. data/test/gemfiles/rails_6_1.gemfile +7 -0
  138. data/test/gemfiles/rails_7_0.gemfile +7 -0
  139. data/test/support/dummy_rails_integration.rb +3 -1
  140. data/test/test_helper.rb +18 -12
  141. metadata +86 -84
  142. data/.travis.yml +0 -17
  143. data/assets/javascripts/bootstrap/util.js +0 -171
  144. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  145. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -507
  146. data/assets/stylesheets/bootstrap/_input-group.scss +0 -193
  147. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  148. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  149. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  150. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -21
  151. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  152. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  153. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -66
  154. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  155. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -10
  156. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -33
  157. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  158. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  159. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -16
  160. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  161. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  162. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  163. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  164. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  165. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  166. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  167. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  168. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  169. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  170. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  171. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  172. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  173. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  174. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  175. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  176. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  177. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
  178. data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
  179. /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: 0e32995c543ae2e6e2053b60ca3bf7f852b89c60ce26827c4b3efc87a482d2eb
4
- data.tar.gz: bec41cdf3c4c03ed3945fa20f744aa5d2a2ebd301389809548d6c08ce08a866d
3
+ metadata.gz: 1297df4a046b73652d3beb2a4edea3d3964b185320d890661af5f7ea8f420236
4
+ data.tar.gz: 9552130734b9698ce8cf99a92617e8df11664dc1d2bc24a9c1e306de646a1f48
5
5
  SHA512:
6
- metadata.gz: 8531bfb77cf50de537a66b36c08ef2f90953c9c80d0177c70f07ea14662b219380e904f27a5aed3c55c41b835efe3e20fbebe670f74495dad7efa107afeb1fea
7
- data.tar.gz: c3a0f8311bf6e76ee646fb92cd7432bd2c482e354ed7aa58b5edad824901fc1da6cc92c631553e0c48de2b7d9ba64797fd369af124fe51ae6e88681afecfeb08
6
+ metadata.gz: 4553a9d115f51a7516243cb392aa9c2f3b1e07f75c315f0400dd62772abd37b907ed3d9b40b37dfd42ec8c1bc809ab60ce7528784485374166d61416df882116
7
+ data.tar.gz: e01e045f2dd4616399a52dcef1037f177a625d7141b424b9b793fbc203e6b8315634296189af57fcbb7ad004fed61193be04d1d1101115df0cd1364351bd42b3
@@ -0,0 +1,55 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ jobs:
8
+ test:
9
+ env:
10
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ ruby_version: ['2.5', '2.6', '2.7', '3.0', '3.1']
15
+ gemfile:
16
+ - test/gemfiles/rails_5_0.gemfile
17
+ - test/gemfiles/rails_5_1.gemfile
18
+ - test/gemfiles/rails_5_2.gemfile
19
+ - test/gemfiles/rails_6_0.gemfile
20
+ - test/gemfiles/rails_6_1.gemfile
21
+ - test/gemfiles/rails_7_0.gemfile
22
+ include:
23
+ - ruby_version: '2.5'
24
+ gemfile: test/gemfiles/rails_4_2.gemfile
25
+ - ruby_version: '2.6'
26
+ gemfile: test/gemfiles/rails_4_2.gemfile
27
+ exclude:
28
+ - ruby_version: '2.5'
29
+ gemfile: test/gemfiles/rails_7_0.gemfile
30
+ - ruby_version: '2.6'
31
+ gemfile: test/gemfiles/rails_7_0.gemfile
32
+ - ruby_version: '3.0'
33
+ gemfile: test/gemfiles/rails_5_0.gemfile
34
+ - ruby_version: '3.0'
35
+ gemfile: test/gemfiles/rails_5_1.gemfile
36
+ - ruby_version: '3.0'
37
+ gemfile: test/gemfiles/rails_5_2.gemfile
38
+ - ruby_version: '3.1'
39
+ gemfile: test/gemfiles/rails_5_0.gemfile
40
+ - ruby_version: '3.1'
41
+ gemfile: test/gemfiles/rails_5_1.gemfile
42
+ - ruby_version: '3.1'
43
+ gemfile: test/gemfiles/rails_5_2.gemfile
44
+ - ruby_version: '3.1'
45
+ gemfile: test/gemfiles/rails_6_0.gemfile
46
+ runs-on: ubuntu-latest
47
+ steps:
48
+ - uses: actions/checkout@v3
49
+ - name: Set up Ruby
50
+ uses: ruby/setup-ruby@v1
51
+ with:
52
+ ruby-version: ${{ matrix.ruby_version }}
53
+ bundler-cache: true # 'bundle install' and cache
54
+ - name: Build and test with Rake
55
+ run: bundle exec rake --trace
data/CHANGELOG.md CHANGED
@@ -6,21 +6,9 @@ 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.1.1
9
+ # 4.2.1
10
10
 
11
- No gem-specific changes.
12
-
13
- # 4.1.0
14
-
15
- No gem-specific changes.
16
-
17
- # 4.0.0
18
-
19
- No gem-specific changes.
20
-
21
- # 4.0.0.beta3
22
-
23
- No gem-specific changes.
11
+ * Bootstrap rubygem now depends on SassC instead of Sass.
24
12
 
25
13
  # 4.0.0.beta2.1
26
14
 
data/README.md CHANGED
@@ -1,9 +1,13 @@
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)
1
+ # Bootstrap Ruby Gem [![CI](https://github.com/twbs/bootstrap-rubygem/actions/workflows/ci.yml/badge.svg)](https://github.com/twbs/bootstrap-rubygem/actions/workflows/ci.yml) [![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 5][bootstrap-home] ruby gem for Ruby on Rails (*Sprockets*/*Importmaps*) 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 Note**: Newer releases of Rails have added additional ways for
8
+ assets to be processed. The `twbs/bootstrap-rubygem` is for use with Importmaps
9
+ or Sprockets, but not Webpack.
10
+
7
11
  ## Installation
8
12
 
9
13
  Please see the appropriate guide for your environment of choice:
@@ -17,7 +21,7 @@ Please see the appropriate guide for your environment of choice:
17
21
  Add `bootstrap` to your Gemfile:
18
22
 
19
23
  ```ruby
20
- gem 'bootstrap', '~> 4.3.1'
24
+ gem 'bootstrap', '~> 5.3.0'
21
25
  ```
22
26
 
23
27
  Ensure that `sprockets-rails` is at least v2.3.2.
@@ -44,8 +48,8 @@ Then, remove all the `*= require` and `*= require_tree` statements from the Sass
44
48
 
45
49
  Do not use `*= require` in Sass or your other stylesheets will not be able to access the Bootstrap mixins and variables.
46
50
 
47
- Bootstrap JavaScript depends on jQuery.
48
- If you're using Rails 5.1+, add the `jquery-rails` gem to your Gemfile:
51
+ Bootstrap JavaScript can optionally use jQuery.
52
+ If you're using Rails 5.1+, you can add the `jquery-rails` gem to your Gemfile:
49
53
 
50
54
  ```ruby
51
55
  gem 'jquery-rails'
@@ -55,6 +59,25 @@ Bootstrap tooltips and popovers depend on [popper.js] for positioning.
55
59
  The `bootstrap` gem already depends on the
56
60
  [popper_js](https://github.com/glebm/popper_js-rubygem) gem.
57
61
 
62
+ #### Importmaps
63
+
64
+ You can pin either `bootstrap.js` or `bootstrap.min.js` in `config/importmap.rb`
65
+ as well as `popper.js`:
66
+
67
+ ```ruby
68
+ pin "bootstrap", to: "bootstrap.min.js", preload: true
69
+ pin "@popperjs/core", to: "popper.js", preload: true
70
+ ```
71
+
72
+ Whichever files you pin will need to be added to `config.assets.precompile`:
73
+
74
+ ```ruby
75
+ # config/initializers/assets.rb
76
+ Rails.application.config.assets.precompile += %w(bootstrap.min.js popper.js)
77
+ ```
78
+
79
+ #### Sprockets
80
+
58
81
  Add Bootstrap dependencies and Bootstrap to your `application.js`:
59
82
 
60
83
  ```js
@@ -1,197 +1,88 @@
1
1
  /*!
2
- * Bootstrap alert.js v4.3.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 v5.3.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2023 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
- 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';
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./base-component.js'), require('./dom/event-handler.js'), require('./util/component-functions.js'), require('./util/index.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./base-component', './dom/event-handler', './util/component-functions', './util/index'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.BaseComponent, global.EventHandler, global.ComponentFunctions, global.Index));
10
+ })(this, (function (BaseComponent, EventHandler, componentFunctions_js, index_js) { 'use strict';
11
11
 
12
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
- Util = Util && Util.hasOwnProperty('default') ? Util['default'] : Util;
14
-
15
- function _defineProperties(target, props) {
16
- for (var i = 0; i < props.length; i++) {
17
- var descriptor = props[i];
18
- descriptor.enumerable = descriptor.enumerable || false;
19
- descriptor.configurable = true;
20
- if ("value" in descriptor) descriptor.writable = true;
21
- Object.defineProperty(target, descriptor.key, descriptor);
22
- }
23
- }
12
+ /**
13
+ * --------------------------------------------------------------------------
14
+ * Bootstrap alert.js
15
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
16
+ * --------------------------------------------------------------------------
17
+ */
24
18
 
25
- function _createClass(Constructor, protoProps, staticProps) {
26
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
- if (staticProps) _defineProperties(Constructor, staticProps);
28
- return Constructor;
29
- }
30
19
 
31
20
  /**
32
- * ------------------------------------------------------------------------
33
21
  * Constants
34
- * ------------------------------------------------------------------------
35
22
  */
36
23
 
37
- var NAME = 'alert';
38
- var VERSION = '4.3.1';
39
- var DATA_KEY = 'bs.alert';
40
- var EVENT_KEY = "." + DATA_KEY;
41
- 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
- /**
56
- * ------------------------------------------------------------------------
57
- * Class Definition
58
- * ------------------------------------------------------------------------
59
- */
60
-
61
- };
62
-
63
- var Alert =
64
- /*#__PURE__*/
65
- function () {
66
- function Alert(element) {
67
- this._element = element;
68
- } // Getters
24
+ const NAME = 'alert';
25
+ const DATA_KEY = 'bs.alert';
26
+ const EVENT_KEY = `.${DATA_KEY}`;
27
+ const EVENT_CLOSE = `close${EVENT_KEY}`;
28
+ const EVENT_CLOSED = `closed${EVENT_KEY}`;
29
+ const CLASS_NAME_FADE = 'fade';
30
+ const CLASS_NAME_SHOW = 'show';
69
31
 
32
+ /**
33
+ * Class definition
34
+ */
70
35
 
71
- var _proto = Alert.prototype;
36
+ class Alert extends BaseComponent {
37
+ // Getters
38
+ static get NAME() {
39
+ return NAME;
40
+ }
72
41
 
73
42
  // Public
74
- _proto.close = function close(element) {
75
- var rootElement = this._element;
76
-
77
- if (element) {
78
- rootElement = this._getRootElement(element);
79
- }
80
-
81
- var customEvent = this._triggerCloseEvent(rootElement);
82
-
83
- if (customEvent.isDefaultPrevented()) {
43
+ close() {
44
+ const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
45
+ if (closeEvent.defaultPrevented) {
84
46
  return;
85
47
  }
48
+ this._element.classList.remove(CLASS_NAME_SHOW);
49
+ const isAnimated = this._element.classList.contains(CLASS_NAME_FADE);
50
+ this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
51
+ }
86
52
 
87
- this._removeElement(rootElement);
88
- };
89
-
90
- _proto.dispose = function dispose() {
91
- $.removeData(this._element, DATA_KEY);
92
- this._element = null;
93
- } // Private
94
- ;
95
-
96
- _proto._getRootElement = function _getRootElement(element) {
97
- var selector = Util.getSelectorFromElement(element);
98
- var parent = false;
99
-
100
- if (selector) {
101
- parent = document.querySelector(selector);
102
- }
103
-
104
- if (!parent) {
105
- parent = $(element).closest("." + ClassName.ALERT)[0];
106
- }
107
-
108
- return parent;
109
- };
110
-
111
- _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
112
- var closeEvent = $.Event(Event.CLOSE);
113
- $(element).trigger(closeEvent);
114
- return closeEvent;
115
- };
116
-
117
- _proto._removeElement = function _removeElement(element) {
118
- var _this = this;
119
-
120
- $(element).removeClass(ClassName.SHOW);
121
-
122
- if (!$(element).hasClass(ClassName.FADE)) {
123
- this._destroyElement(element);
124
-
125
- return;
126
- }
127
-
128
- var transitionDuration = Util.getTransitionDurationFromElement(element);
129
- $(element).one(Util.TRANSITION_END, function (event) {
130
- return _this._destroyElement(element, event);
131
- }).emulateTransitionEnd(transitionDuration);
132
- };
133
-
134
- _proto._destroyElement = function _destroyElement(element) {
135
- $(element).detach().trigger(Event.CLOSED).remove();
136
- } // Static
137
- ;
53
+ // Private
54
+ _destroyElement() {
55
+ this._element.remove();
56
+ EventHandler.trigger(this._element, EVENT_CLOSED);
57
+ this.dispose();
58
+ }
138
59
 
139
- Alert._jQueryInterface = function _jQueryInterface(config) {
60
+ // Static
61
+ static jQueryInterface(config) {
140
62
  return this.each(function () {
141
- var $element = $(this);
142
- var data = $element.data(DATA_KEY);
143
-
144
- if (!data) {
145
- data = new Alert(this);
146
- $element.data(DATA_KEY, data);
63
+ const data = Alert.getOrCreateInstance(this);
64
+ if (typeof config !== 'string') {
65
+ return;
147
66
  }
148
-
149
- if (config === 'close') {
150
- data[config](this);
67
+ if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
68
+ throw new TypeError(`No method named "${config}"`);
151
69
  }
70
+ data[config](this);
152
71
  });
153
- };
154
-
155
- Alert._handleDismiss = function _handleDismiss(alertInstance) {
156
- return function (event) {
157
- if (event) {
158
- event.preventDefault();
159
- }
160
-
161
- alertInstance.close(this);
162
- };
163
- };
164
-
165
- _createClass(Alert, null, [{
166
- key: "VERSION",
167
- get: function get() {
168
- return VERSION;
169
- }
170
- }]);
72
+ }
73
+ }
171
74
 
172
- return Alert;
173
- }();
174
75
  /**
175
- * ------------------------------------------------------------------------
176
- * Data Api implementation
177
- * ------------------------------------------------------------------------
76
+ * Data API implementation
178
77
  */
179
78
 
79
+ componentFunctions_js.enableDismissTrigger(Alert, 'close');
180
80
 
181
- $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
182
81
  /**
183
- * ------------------------------------------------------------------------
184
82
  * jQuery
185
- * ------------------------------------------------------------------------
186
83
  */
187
84
 
188
- $.fn[NAME] = Alert._jQueryInterface;
189
- $.fn[NAME].Constructor = Alert;
190
-
191
- $.fn[NAME].noConflict = function () {
192
- $.fn[NAME] = JQUERY_NO_CONFLICT;
193
- return Alert._jQueryInterface;
194
- };
85
+ index_js.defineJQueryPlugin(Alert);
195
86
 
196
87
  return Alert;
197
88
 
@@ -0,0 +1,83 @@
1
+ /*!
2
+ * Bootstrap base-component.js v5.3.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2023 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'), require('./util/config.js'), require('./util/index.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler', './util/config', './util/index'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.BaseComponent = factory(global.Data, global.EventHandler, global.Config, global.Index));
10
+ })(this, (function (Data, EventHandler, Config, index_js) { 'use strict';
11
+
12
+ /**
13
+ * --------------------------------------------------------------------------
14
+ * Bootstrap base-component.js
15
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
16
+ * --------------------------------------------------------------------------
17
+ */
18
+
19
+
20
+ /**
21
+ * Constants
22
+ */
23
+
24
+ const VERSION = '5.3.0';
25
+
26
+ /**
27
+ * Class definition
28
+ */
29
+
30
+ class BaseComponent extends Config {
31
+ constructor(element, config) {
32
+ super();
33
+ element = index_js.getElement(element);
34
+ if (!element) {
35
+ return;
36
+ }
37
+ this._element = element;
38
+ this._config = this._getConfig(config);
39
+ Data.set(this._element, this.constructor.DATA_KEY, this);
40
+ }
41
+
42
+ // Public
43
+ dispose() {
44
+ Data.remove(this._element, this.constructor.DATA_KEY);
45
+ EventHandler.off(this._element, this.constructor.EVENT_KEY);
46
+ for (const propertyName of Object.getOwnPropertyNames(this)) {
47
+ this[propertyName] = null;
48
+ }
49
+ }
50
+ _queueCallback(callback, element, isAnimated = true) {
51
+ index_js.executeAfterTransition(callback, element, isAnimated);
52
+ }
53
+ _getConfig(config) {
54
+ config = this._mergeConfigObj(config, this._element);
55
+ config = this._configAfterMerge(config);
56
+ this._typeCheckConfig(config);
57
+ return config;
58
+ }
59
+
60
+ // Static
61
+ static getInstance(element) {
62
+ return Data.get(index_js.getElement(element), this.DATA_KEY);
63
+ }
64
+ static getOrCreateInstance(element, config = {}) {
65
+ return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
66
+ }
67
+ static get VERSION() {
68
+ return VERSION;
69
+ }
70
+ static get DATA_KEY() {
71
+ return `bs.${this.NAME}`;
72
+ }
73
+ static get EVENT_KEY() {
74
+ return `.${this.DATA_KEY}`;
75
+ }
76
+ static eventName(name) {
77
+ return `${name}${this.EVENT_KEY}`;
78
+ }
79
+ }
80
+
81
+ return BaseComponent;
82
+
83
+ }));