bootstrap 4.6.0 → 5.3.2

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 (184) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +61 -0
  3. data/Gemfile +1 -0
  4. data/README.md +33 -6
  5. data/Rakefile +10 -1
  6. data/assets/javascripts/bootstrap/alert.js +53 -155
  7. data/assets/javascripts/bootstrap/base-component.js +83 -0
  8. data/assets/javascripts/bootstrap/button.js +43 -198
  9. data/assets/javascripts/bootstrap/carousel.js +285 -550
  10. data/assets/javascripts/bootstrap/collapse.js +169 -323
  11. data/assets/javascripts/bootstrap/dom/data.js +62 -0
  12. data/assets/javascripts/bootstrap/dom/event-handler.js +236 -0
  13. data/assets/javascripts/bootstrap/dom/manipulator.js +71 -0
  14. data/assets/javascripts/bootstrap/dom/selector-engine.js +103 -0
  15. data/assets/javascripts/bootstrap/dropdown.js +300 -467
  16. data/assets/javascripts/bootstrap/modal.js +226 -575
  17. data/assets/javascripts/bootstrap/offcanvas.js +245 -0
  18. data/assets/javascripts/bootstrap/popover.js +61 -205
  19. data/assets/javascripts/bootstrap/scrollspy.js +216 -287
  20. data/assets/javascripts/bootstrap/tab.js +226 -203
  21. data/assets/javascripts/bootstrap/toast.js +136 -209
  22. data/assets/javascripts/bootstrap/tooltip.js +411 -757
  23. data/assets/javascripts/bootstrap/util/backdrop.js +139 -0
  24. data/assets/javascripts/bootstrap/util/component-functions.js +41 -0
  25. data/assets/javascripts/bootstrap/util/config.js +67 -0
  26. data/assets/javascripts/bootstrap/util/focustrap.js +113 -0
  27. data/assets/javascripts/bootstrap/util/index.js +281 -0
  28. data/assets/javascripts/bootstrap/util/sanitizer.js +110 -0
  29. data/assets/javascripts/bootstrap/util/scrollbar.js +112 -0
  30. data/assets/javascripts/bootstrap/util/swipe.js +134 -0
  31. data/assets/javascripts/bootstrap/util/template-factory.js +150 -0
  32. data/assets/javascripts/bootstrap-global-this-define.js +6 -0
  33. data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
  34. data/assets/javascripts/bootstrap-sprockets.js +23 -7
  35. data/assets/javascripts/bootstrap.js +3649 -3587
  36. data/assets/javascripts/bootstrap.min.js +3 -3
  37. data/assets/stylesheets/_bootstrap-grid.scss +53 -21
  38. data/assets/stylesheets/_bootstrap-reboot.scss +5 -7
  39. data/assets/stylesheets/_bootstrap-utilities.scss +19 -0
  40. data/assets/stylesheets/_bootstrap.scss +21 -13
  41. data/assets/stylesheets/bootstrap/_accordion.scss +158 -0
  42. data/assets/stylesheets/bootstrap/_alert.scss +32 -16
  43. data/assets/stylesheets/bootstrap/_badge.scss +15 -31
  44. data/assets/stylesheets/bootstrap/_breadcrumb.scss +22 -24
  45. data/assets/stylesheets/bootstrap/_button-group.scss +27 -48
  46. data/assets/stylesheets/bootstrap/_buttons.scss +136 -71
  47. data/assets/stylesheets/bootstrap/_card.scss +66 -113
  48. data/assets/stylesheets/bootstrap/_carousel.scss +83 -36
  49. data/assets/stylesheets/bootstrap/_close.scss +51 -28
  50. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  51. data/assets/stylesheets/bootstrap/_dropdown.scss +129 -71
  52. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  53. data/assets/stylesheets/bootstrap/_functions.scss +181 -23
  54. data/assets/stylesheets/bootstrap/_grid.scss +18 -52
  55. data/assets/stylesheets/bootstrap/_helpers.scss +12 -0
  56. data/assets/stylesheets/bootstrap/_images.scss +1 -1
  57. data/assets/stylesheets/bootstrap/_list-group.scss +77 -34
  58. data/assets/stylesheets/bootstrap/_maps.scss +174 -0
  59. data/assets/stylesheets/bootstrap/_mixins.scss +10 -15
  60. data/assets/stylesheets/bootstrap/_modal.scss +107 -110
  61. data/assets/stylesheets/bootstrap/_nav.scss +102 -25
  62. data/assets/stylesheets/bootstrap/_navbar.scss +129 -172
  63. data/assets/stylesheets/bootstrap/_offcanvas.scss +146 -0
  64. data/assets/stylesheets/bootstrap/_pagination.scss +72 -37
  65. data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
  66. data/assets/stylesheets/bootstrap/_popover.scss +99 -73
  67. data/assets/stylesheets/bootstrap/_progress.scss +35 -14
  68. data/assets/stylesheets/bootstrap/_reboot.scss +319 -192
  69. data/assets/stylesheets/bootstrap/_root.scss +177 -9
  70. data/assets/stylesheets/bootstrap/_spinners.scss +44 -24
  71. data/assets/stylesheets/bootstrap/_tables.scss +101 -115
  72. data/assets/stylesheets/bootstrap/_toasts.scss +54 -27
  73. data/assets/stylesheets/bootstrap/_tooltip.scss +67 -63
  74. data/assets/stylesheets/bootstrap/_transitions.scss +8 -1
  75. data/assets/stylesheets/bootstrap/_type.scss +40 -59
  76. data/assets/stylesheets/bootstrap/_utilities.scss +806 -18
  77. data/assets/stylesheets/bootstrap/_variables-dark.scss +87 -0
  78. data/assets/stylesheets/bootstrap/_variables.scss +1216 -615
  79. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +95 -0
  80. data/assets/stylesheets/bootstrap/forms/_form-check.scss +189 -0
  81. data/assets/stylesheets/bootstrap/forms/_form-control.scss +214 -0
  82. data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
  83. data/assets/stylesheets/bootstrap/forms/_form-select.scss +80 -0
  84. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  85. data/assets/stylesheets/bootstrap/forms/_input-group.scss +132 -0
  86. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  87. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  88. data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +7 -0
  89. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +30 -0
  90. data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
  91. data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
  92. data/assets/stylesheets/bootstrap/helpers/_position.scss +36 -0
  93. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
  94. data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
  95. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  96. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  97. data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
  98. data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
  99. data/assets/stylesheets/bootstrap/mixins/_alert.scss +11 -6
  100. data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
  101. data/assets/stylesheets/bootstrap/mixins/_banner.scss +7 -0
  102. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +10 -8
  103. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
  104. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +20 -16
  105. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +60 -100
  106. data/assets/stylesheets/bootstrap/mixins/_caret.scss +34 -27
  107. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  108. data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
  109. data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
  110. data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
  111. data/assets/stylesheets/bootstrap/mixins/_forms.scss +53 -85
  112. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
  113. data/assets/stylesheets/bootstrap/mixins/_grid.scss +119 -37
  114. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  115. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +7 -2
  116. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  117. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +7 -19
  118. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +3 -3
  119. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +24 -0
  120. data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
  121. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +97 -0
  122. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +33 -0
  123. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  124. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +276 -132
  125. data/bootstrap.gemspec +6 -7
  126. data/lib/bootstrap/engine.rb +7 -1
  127. data/lib/bootstrap/version.rb +2 -2
  128. data/tasks/updater/js.rb +31 -7
  129. data/tasks/updater/network.rb +9 -3
  130. data/tasks/updater/scss.rb +2 -2
  131. data/tasks/updater.rb +2 -2
  132. data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
  133. data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
  134. data/test/dummy_rails/app/views/pages/root.html +89 -0
  135. data/test/dummy_rails/config/application.rb +0 -3
  136. data/test/gemfiles/rails_4_2.gemfile +1 -1
  137. data/test/gemfiles/rails_5_0.gemfile +1 -1
  138. data/test/gemfiles/rails_5_1.gemfile +1 -1
  139. data/test/gemfiles/rails_5_2.gemfile +8 -0
  140. data/test/gemfiles/rails_6_0.gemfile +1 -0
  141. data/test/gemfiles/rails_6_1.gemfile +8 -0
  142. data/test/gemfiles/rails_7_0_dartsass.gemfile +8 -0
  143. data/test/gemfiles/rails_7_0_sassc.gemfile +8 -0
  144. data/test/test_helper.rb +3 -2
  145. metadata +97 -85
  146. data/.travis.yml +0 -31
  147. data/assets/javascripts/bootstrap/util.js +0 -192
  148. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  149. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -526
  150. data/assets/stylesheets/bootstrap/_input-group.scss +0 -208
  151. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  152. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  153. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  154. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  155. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  156. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  157. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
  158. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  159. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  160. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
  161. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  162. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  163. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  164. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  165. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  166. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  167. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  168. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  169. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  170. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  171. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  172. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  173. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
  174. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  175. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  176. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  177. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  178. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  179. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  180. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  181. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  182. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
  183. data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
  184. /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: 9cc8c9361e6004e1f33ea619081fc68672a49d7f20e8a6bcf53ac8ec12e4c662
4
+ data.tar.gz: e65b879fec0203e16027ed41093bc20d276e202168abec214b9295a04ac0b3a8
5
5
  SHA512:
6
- metadata.gz: 2dcc29c7e1c5fe86797d77b429917e81bd13f984a2253775c9f34b4906b18c61fa58a40537e1395965058a0109ec75ee74aca261136dafaf40e901710424e328
7
- data.tar.gz: cb7a7de3076461a58d42200f70228c4c269aad8d153799d14aa042acfe87b3ea7fdbf55b7e8a995f6af3aeebd64ffc61b4736b298d5c6b6b1743e6dc48c6850a
6
+ metadata.gz: 94d62cb6112a90a4a97ae631e3895f18650217e67f872565b26efa6a5a3228d223782e0f82a722efc8f0881b60f409c7ba320b2069962436952eeaf0c6b2431d
7
+ data.tar.gz: 8e0c37862c25003c9ba9a8892614050b4d8e82bdb4b902060f3aeb7f7af1dbcb89f89934e43a3f724a672b29eac7c87d2f789435283f9068c238719692159f2d
@@ -0,0 +1,61 @@
1
+ name: CI
2
+
3
+ on:
4
+ - push
5
+ - pull_request
6
+ - workflow_dispatch
7
+
8
+ jobs:
9
+ test:
10
+ env:
11
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ ruby_version: ['2.5', '2.6', '2.7', '3.0', '3.1']
16
+ gemfile:
17
+ - test/gemfiles/rails_5_0.gemfile
18
+ - test/gemfiles/rails_5_1.gemfile
19
+ - test/gemfiles/rails_5_2.gemfile
20
+ - test/gemfiles/rails_6_0.gemfile
21
+ - test/gemfiles/rails_6_1.gemfile
22
+ - test/gemfiles/rails_7_0_sassc.gemfile
23
+ - test/gemfiles/rails_7_0_dartsass.gemfile
24
+ include:
25
+ - ruby_version: '2.5'
26
+ gemfile: test/gemfiles/rails_4_2.gemfile
27
+ - ruby_version: '2.6'
28
+ gemfile: test/gemfiles/rails_4_2.gemfile
29
+ exclude:
30
+ - ruby_version: '2.5'
31
+ gemfile: test/gemfiles/rails_7_0_sassc.gemfile
32
+ - ruby_version: '2.5'
33
+ gemfile: test/gemfiles/rails_7_0_dartsass.gemfile
34
+ - ruby_version: '2.6'
35
+ gemfile: test/gemfiles/rails_7_0_sassc.gemfile
36
+ - ruby_version: '2.6'
37
+ gemfile: test/gemfiles/rails_7_0_dartsass.gemfile
38
+ - ruby_version: '3.0'
39
+ gemfile: test/gemfiles/rails_5_0.gemfile
40
+ - ruby_version: '3.0'
41
+ gemfile: test/gemfiles/rails_5_1.gemfile
42
+ - ruby_version: '3.0'
43
+ gemfile: test/gemfiles/rails_5_2.gemfile
44
+ - ruby_version: '3.1'
45
+ gemfile: test/gemfiles/rails_5_0.gemfile
46
+ - ruby_version: '3.1'
47
+ gemfile: test/gemfiles/rails_5_1.gemfile
48
+ - ruby_version: '3.1'
49
+ gemfile: test/gemfiles/rails_5_2.gemfile
50
+ - ruby_version: '3.1'
51
+ gemfile: test/gemfiles/rails_6_0.gemfile
52
+ runs-on: ubuntu-latest
53
+ steps:
54
+ - uses: actions/checkout@v3
55
+ - name: Set up Ruby
56
+ uses: ruby/setup-ruby@v1
57
+ with:
58
+ ruby-version: ${{ matrix.ruby_version }}
59
+ bundler-cache: true # 'bundle install' and cache
60
+ - name: Build and test with Rake
61
+ run: bundle exec rake --trace
data/Gemfile CHANGED
@@ -4,6 +4,7 @@ gemspec
4
4
 
5
5
  group :development do
6
6
  gem 'popper_js', '>= 1.12.3'
7
+ gem 'dartsass-sprockets'
7
8
  end
8
9
 
9
10
  group :debug do
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,10 +21,14 @@ 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.6.0'
24
+ gem 'bootstrap', '~> 5.3.2'
21
25
  ```
22
26
 
23
- Ensure that `sprockets-rails` is at least v2.3.2.
27
+ This gem requires a Sass engine, so make sure you have **one** of these two gems in your Gemfile:
28
+ - [`dartsass-sprockets`](https://github.com/tablecheck/dartsass-sprockets): Dart Sass engine, recommended but only works for Ruby 2.6+ and Rails 5+
29
+ - [`sassc-rails`](https://github.com/sass/sassc-rails): SassC engine, deprecated but compatible with Ruby 2.3+ and Rails 4
30
+
31
+ Also ensure that `sprockets-rails` is at least v2.3.2.
24
32
 
25
33
  `bundle install` and restart your server to make the files available through the pipeline.
26
34
 
@@ -44,8 +52,8 @@ Then, remove all the `*= require` and `*= require_tree` statements from the Sass
44
52
 
45
53
  Do not use `*= require` in Sass or your other stylesheets will not be able to access the Bootstrap mixins and variables.
46
54
 
47
- Bootstrap JavaScript depends on jQuery.
48
- If you're using Rails 5.1+, add the `jquery-rails` gem to your Gemfile:
55
+ Bootstrap JavaScript can optionally use jQuery.
56
+ If you're using Rails 5.1+, you can add the `jquery-rails` gem to your Gemfile:
49
57
 
50
58
  ```ruby
51
59
  gem 'jquery-rails'
@@ -55,6 +63,25 @@ Bootstrap tooltips and popovers depend on [popper.js] for positioning.
55
63
  The `bootstrap` gem already depends on the
56
64
  [popper_js](https://github.com/glebm/popper_js-rubygem) gem.
57
65
 
66
+ #### Importmaps
67
+
68
+ You can pin either `bootstrap.js` or `bootstrap.min.js` in `config/importmap.rb`
69
+ as well as `popper.js`:
70
+
71
+ ```ruby
72
+ pin "bootstrap", to: "bootstrap.min.js", preload: true
73
+ pin "@popperjs/core", to: "popper.js", preload: true
74
+ ```
75
+
76
+ Whichever files you pin will need to be added to `config.assets.precompile`:
77
+
78
+ ```ruby
79
+ # config/initializers/assets.rb
80
+ Rails.application.config.assets.precompile += %w(bootstrap.min.js popper.js)
81
+ ```
82
+
83
+ #### Sprockets
84
+
58
85
  Add Bootstrap dependencies and Bootstrap to your `application.js`:
59
86
 
60
87
  ```js
data/Rakefile CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'bundler/gem_tasks'
2
+ require 'bundler/setup'
2
3
 
3
4
  lib_path = File.join(File.dirname(__FILE__), 'lib')
4
5
  $:.unshift(lib_path) unless $:.include?(lib_path)
@@ -45,12 +46,20 @@ end
45
46
 
46
47
  desc 'Dumps output to a CSS file for testing'
47
48
  task :debug do
48
- require 'sassc'
49
+ begin
50
+ require 'dartsass-ruby'
51
+ rescue LoadError
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
49
56
  require './lib/bootstrap'
50
57
  require 'term/ansicolor'
51
58
  require 'autoprefixer-rails'
52
59
  path = Bootstrap.stylesheets_path
53
60
  %w(_bootstrap _bootstrap-reboot _bootstrap-grid).each do |file|
61
+ # For ease of upgrading, the root namespace ::SassC is still used by dartsass-sprockets.
62
+ # This is planned to be renamed in a future major version release.
54
63
  engine = SassC::Engine.new(File.read("#{path}/#{file}.scss"), syntax: :scss, load_paths: [path])
55
64
  out = File.join('tmp', "#{file[1..-1]}.css")
56
65
  css = engine.render
@@ -1,191 +1,89 @@
1
1
  /*!
2
- * Bootstrap alert.js v4.6.0 (https://getbootstrap.com/)
3
- * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap alert.js v5.3.2 (https://getbootstrap.com/)
3
+ * Copyright 2011-2023 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('./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
- 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);
12
+ /**
13
+ * --------------------------------------------------------------------------
14
+ * Bootstrap alert.js
15
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
16
+ * --------------------------------------------------------------------------
17
+ */
16
18
 
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
- return Constructor;
31
- }
32
19
 
33
20
  /**
34
- * ------------------------------------------------------------------------
35
21
  * Constants
36
- * ------------------------------------------------------------------------
37
22
  */
38
23
 
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';
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';
31
+
52
32
  /**
53
- * ------------------------------------------------------------------------
54
- * Class Definition
55
- * ------------------------------------------------------------------------
33
+ * Class definition
56
34
  */
57
35
 
58
- var Alert = /*#__PURE__*/function () {
59
- function Alert(element) {
60
- this._element = element;
61
- } // Getters
62
-
63
-
64
- var _proto = Alert.prototype;
36
+ class Alert extends BaseComponent {
37
+ // Getters
38
+ static get NAME() {
39
+ return NAME;
40
+ }
65
41
 
66
42
  // Public
67
- _proto.close = function close(element) {
68
- var rootElement = this._element;
69
-
70
- if (element) {
71
- rootElement = this._getRootElement(element);
72
- }
73
-
74
- var customEvent = this._triggerCloseEvent(rootElement);
75
-
76
- if (customEvent.isDefaultPrevented()) {
43
+ close() {
44
+ const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
45
+ if (closeEvent.defaultPrevented) {
77
46
  return;
78
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
+ }
79
52
 
80
- this._removeElement(rootElement);
81
- };
82
-
83
- _proto.dispose = function dispose() {
84
- $__default['default'].removeData(this._element, DATA_KEY);
85
- this._element = null;
86
- } // Private
87
- ;
88
-
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
-
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
- };
109
-
110
- _proto._removeElement = function _removeElement(element) {
111
- var _this = this;
112
-
113
- $__default['default'](element).removeClass(CLASS_NAME_SHOW);
114
-
115
- if (!$__default['default'](element).hasClass(CLASS_NAME_FADE)) {
116
- this._destroyElement(element);
117
-
118
- return;
119
- }
120
-
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
- };
126
-
127
- _proto._destroyElement = function _destroyElement(element) {
128
- $__default['default'](element).detach().trigger(EVENT_CLOSED).remove();
129
- } // Static
130
- ;
53
+ // Private
54
+ _destroyElement() {
55
+ this._element.remove();
56
+ EventHandler.trigger(this._element, EVENT_CLOSED);
57
+ this.dispose();
58
+ }
131
59
 
132
- Alert._jQueryInterface = function _jQueryInterface(config) {
60
+ // Static
61
+ static jQueryInterface(config) {
133
62
  return this.each(function () {
134
- var $element = $__default['default'](this);
135
- var data = $element.data(DATA_KEY);
136
-
137
- if (!data) {
138
- data = new Alert(this);
139
- $element.data(DATA_KEY, data);
63
+ const data = Alert.getOrCreateInstance(this);
64
+ if (typeof config !== 'string') {
65
+ return;
140
66
  }
141
-
142
- if (config === 'close') {
143
- data[config](this);
67
+ if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
68
+ throw new TypeError(`No method named "${config}"`);
144
69
  }
70
+ data[config](this);
145
71
  });
146
- };
147
-
148
- Alert._handleDismiss = function _handleDismiss(alertInstance) {
149
- return function (event) {
150
- if (event) {
151
- event.preventDefault();
152
- }
153
-
154
- alertInstance.close(this);
155
- };
156
- };
157
-
158
- _createClass(Alert, null, [{
159
- key: "VERSION",
160
- get: function get() {
161
- return VERSION;
162
- }
163
- }]);
72
+ }
73
+ }
164
74
 
165
- return Alert;
166
- }();
167
75
  /**
168
- * ------------------------------------------------------------------------
169
- * Data Api implementation
170
- * ------------------------------------------------------------------------
76
+ * Data API implementation
171
77
  */
172
78
 
79
+ componentFunctions_js.enableDismissTrigger(Alert, 'close');
173
80
 
174
- $__default['default'](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));
175
81
  /**
176
- * ------------------------------------------------------------------------
177
82
  * jQuery
178
- * ------------------------------------------------------------------------
179
83
  */
180
84
 
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
- };
85
+ index_js.defineJQueryPlugin(Alert);
188
86
 
189
87
  return Alert;
190
88
 
191
- })));
89
+ }));
@@ -0,0 +1,83 @@
1
+ /*!
2
+ * Bootstrap base-component.js v5.3.2 (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.2';
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
+ }));