bs5 0.0.24 → 0.0.25

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 (33) hide show
  1. checksums.yaml +4 -4
  2. data/app/components/bs5/alert_component.html.erb +1 -1
  3. data/app/components/bs5/alert_component.rb +1 -0
  4. data/app/components/bs5/button_tag_component.rb +10 -1
  5. data/app/components/bs5/close_button_component.rb +14 -6
  6. data/app/components/bs5/toast/body_component.html.erb +3 -0
  7. data/app/components/bs5/toast/body_component.rb +8 -0
  8. data/app/components/bs5/toast/header_component.html.erb +4 -0
  9. data/app/components/bs5/toast/header_component.rb +9 -0
  10. data/app/components/bs5/toast_component.html.erb +8 -0
  11. data/app/components/bs5/toast_component.rb +72 -0
  12. data/app/components/bs5/toast_container_component.html.erb +3 -0
  13. data/app/components/bs5/toast_container_component.rb +19 -0
  14. data/app/helpers/bs5/components_helper.rb +1 -1
  15. data/app/views/bs5/examples/toasts/color_schemes/_example.html.erb +2 -0
  16. data/app/views/bs5/examples/toasts/color_schemes/snippet.html.erb +33 -0
  17. data/app/views/bs5/examples/toasts/custom_content/_example.html.erb +3 -0
  18. data/app/views/bs5/examples/toasts/custom_content/snippet1.html.erb +3 -0
  19. data/app/views/bs5/examples/toasts/custom_content/snippet2.html.erb +9 -0
  20. data/app/views/bs5/examples/toasts/default/_example.html.erb +2 -0
  21. data/app/views/bs5/examples/toasts/default/snippet.html.erb +17 -0
  22. data/app/views/bs5/examples/toasts/js_options/_example.html.erb +2 -0
  23. data/app/views/bs5/examples/toasts/js_options/snippet.html.erb +23 -0
  24. data/app/views/bs5/examples/toasts/placement/_example.html.erb +3 -0
  25. data/app/views/bs5/examples/toasts/placement/snippet1.html.erb +44 -0
  26. data/app/views/bs5/examples/toasts/placement/snippet2.html.erb +24 -0
  27. data/app/views/bs5/examples/toasts/stacking/_example.html.erb +2 -0
  28. data/app/views/bs5/examples/toasts/stacking/snippet.html.erb +37 -0
  29. data/app/views/bs5/pages/toasts.html.erb +7 -0
  30. data/app/views/layouts/bs5/pages.html.erb +1 -0
  31. data/lib/bs5/version.rb +1 -1
  32. data/lib/generators/bs5/install/templates/bs5.js +24 -13
  33. metadata +25 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 51b17209ffd99eeedda9730125b19b56bd290f47c89196bf78787050b0061e7c
4
- data.tar.gz: c691c88a51fc0e6aa4a02b9c31dceefb0c98824d454c755503cce7cc0b4f6a78
3
+ metadata.gz: 93ea7a16c5cb16edd48cabe938083b466af2171b895c9bfb7ca3da0e7bd9cf6a
4
+ data.tar.gz: 35bb524562a071eaf46e05da49b951e1606b27524f6e242d10be7a5cb6a4eeca
5
5
  SHA512:
6
- metadata.gz: 10243bc1176cbc6e480f39515bf171ce8f67caab6b75b435d6adb703eacc0da923e515fbe8eb1b36fab9e4e3096a379f596c801b2e378f935f24ae033166bdde
7
- data.tar.gz: bc080841996dbd305b98df94b84b1d814be5656dcf6ee6954a98653a97919b2a080dd641dc02d3c9bbeaf818acc38cd4d32013deac6c3a2d11b440d0d009f821
6
+ metadata.gz: 011e84f5073b6cd7c6d9b3d2de76f077fedaeaa87f0e8c2aba6efa48457ffe271e8f3d589ec2b2d59eacccdf0a088e968921f3db682c1a846acb94e6ea7c2815
7
+ data.tar.gz: 66f86657bfd99ce53af4ea76123b72eed77454ed885b8c033a16fe6e579b67d20be9aa187a982687c80a80e49921577e107b249d081a8fa538b6bdbbef7080fc
@@ -1,6 +1,6 @@
1
1
  <div class="<%= component_class %>" role="alert">
2
2
  <%= content %>
3
3
  <%- if is_dismissable %>
4
- <%= render Bs5::CloseButtonComponent.new(data: { 'bs-dismiss': :alert }) %>
4
+ <%= bs5_close_button(dismiss: :alert) %>
5
5
  <%- end %>
6
6
  </div>
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Bs5
4
4
  class AlertComponent < ViewComponent::Base
5
+ include ComponentsHelper
5
6
  STYLES = %i[primary secondary success danger warning info light dark].freeze
6
7
 
7
8
  attr_reader :color, :is_dismissable
@@ -47,6 +47,7 @@ module Bs5
47
47
  extract_color
48
48
  extract_outline
49
49
  extract_size
50
+ extract_dismiss
50
51
  end
51
52
 
52
53
  def extract_color
@@ -61,6 +62,10 @@ module Bs5
61
62
  @size = @options.delete(:size)
62
63
  end
63
64
 
65
+ def extract_dismiss
66
+ @dismiss = @options.delete(:dismiss)
67
+ end
68
+
64
69
  def merge_default_options
65
70
  @options.deep_merge!(default_options) do |_key, this_val, other_val|
66
71
  [this_val, other_val].join(' ').strip
@@ -68,7 +73,11 @@ module Bs5
68
73
  end
69
74
 
70
75
  def default_options
71
- { class: button_class }
76
+ default_options = { class: button_class }
77
+
78
+ default_options[:data] = { 'bs-dismiss': @dismiss } if @dismiss
79
+
80
+ default_options
72
81
  end
73
82
 
74
83
  def button_class
@@ -2,12 +2,19 @@
2
2
 
3
3
  module Bs5
4
4
  class CloseButtonComponent < ViewComponent::Base
5
- attr_reader :data
5
+ def initialize(options = {})
6
+ @options = options.symbolize_keys
6
7
 
7
- def initialize(disabled: false, white: false, data: nil)
8
- @disabled = disabled
9
- @white = white
10
- @data = data
8
+ @disabled = options.delete(:disabled)
9
+ @white = options.delete(:white)
10
+ @dismiss = options.delete(:dismiss)
11
+ @data = options.fetch(:data, {})
12
+ end
13
+
14
+ def data
15
+ @data['bs-dismiss'] = @dismiss if @dismiss
16
+
17
+ @data
11
18
  end
12
19
 
13
20
  private
@@ -21,7 +28,8 @@ module Bs5
21
28
  end
22
29
 
23
30
  def component_class
24
- class_names = ['btn-close']
31
+ class_names = Array(@options[:class])
32
+ class_names << 'btn-close'
25
33
  class_names << %w[btn-close-white] if white?
26
34
  class_names.join(' ')
27
35
  end
@@ -0,0 +1,3 @@
1
+ <div class="toast-body">
2
+ <%= content %>
3
+ </div>
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bs5
4
+ module Toast
5
+ class BodyComponent < ViewComponent::Base
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,4 @@
1
+ <div class="toast-header">
2
+ <%= content %>
3
+ <%= bs5_close_button(dismiss: :toast) %>
4
+ </div>
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bs5
4
+ module Toast
5
+ class HeaderComponent < ViewComponent::Base
6
+ include ComponentsHelper
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ <%= tag.div(component_attributes) do %>
2
+ <%= header %>
3
+ <%= body %>
4
+
5
+ <%- if close_button? && !header? %>
6
+ <%= bs5_close_button(white: white_text?, class: 'ms-auto me-2', dismiss: :toast) %>
7
+ <% end %>
8
+ <% end %>
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bs5
4
+ class ToastComponent < ViewComponent::Base
5
+ include ViewComponent::SlotableV2
6
+ include ComponentsHelper
7
+ using HashRefinement
8
+
9
+ attr_reader :color
10
+
11
+ renders_one :header, Bs5::Toast::HeaderComponent
12
+ renders_one :body, Bs5::Toast::BodyComponent
13
+
14
+ def initialize(options = {})
15
+ @options = options.symbolize_keys
16
+ @color = @options.delete(:color)
17
+ @close_button = @options.fetch(:close_button, true)
18
+ @data_options = @options.extract!(:animation, :autohide, :delay)
19
+ end
20
+
21
+ def header?
22
+ !!header
23
+ end
24
+
25
+ def component_attributes
26
+ default_options = {
27
+ role: :alert,
28
+ aria: { live: 'assertive', atomic: true },
29
+ data: data_options
30
+ }
31
+
32
+ @options[:class] = component_class
33
+
34
+ @options.merge(default_options)
35
+ end
36
+
37
+ def white_text?
38
+ color? && color.in?(%i[primary secondary success danger dark])
39
+ end
40
+
41
+ private
42
+
43
+ def data_options
44
+ @data_options.prefix_keys_with_bs
45
+ end
46
+
47
+ def component_class
48
+ class_names = Array(@options[:class])
49
+ class_names << 'toast'
50
+ class_names << contextual_class
51
+ class_names.compact.join(' ')
52
+ end
53
+
54
+ def contextual_class
55
+ return unless color?
56
+
57
+ class_names = ['border-0']
58
+ class_names << "bg-#{color}"
59
+ class_names << 'text-white' if white_text?
60
+
61
+ class_names
62
+ end
63
+
64
+ def color?
65
+ !!color
66
+ end
67
+
68
+ def close_button?
69
+ @close_button
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,3 @@
1
+ <div class="<%= component_class %>"">
2
+ <%= content %>
3
+ </div>
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bs5
4
+ class ToastContainerComponent < ViewComponent::Base
5
+ def initialize(options = {})
6
+ @options = options.symbolize_keys
7
+ end
8
+
9
+ def component_class
10
+ class_names = Array(@options[:class])
11
+ class_names << 'toast-container'
12
+ class_names.compact.join(' ')
13
+ end
14
+
15
+ def render?
16
+ content.present?
17
+ end
18
+ end
19
+ end
@@ -3,7 +3,7 @@
3
3
  module Bs5
4
4
  module ComponentsHelper
5
5
  COMPONENTS = %w[accordion alert badge close_button breadcrumb button_group button_tag button_to button_toolbar
6
- list_group spinner].freeze
6
+ list_group spinner toast toast_container].freeze
7
7
 
8
8
  COMPONENTS.each do |name|
9
9
  define_method("bs5_#{name}") do |*args, &block|
@@ -0,0 +1,2 @@
1
+ <h2>Color schemes</h2>
2
+ <%= bs5_example(snippet: 'toasts/color_schemes/snippet') %>
@@ -0,0 +1,33 @@
1
+ <%= bs5_toast_container do %>
2
+ <%= bs5_toast(color: :primary, class: 'd-flex align-items-center') do |t| %>
3
+ <%= t.body do %>Hello, world! This is a toast message.<% end %>
4
+ <% end %>
5
+
6
+ <%= bs5_toast(color: :secondary, class: 'd-flex align-items-center') do |t| %>
7
+ <%= t.body do %>Hello, world! This is a toast message.<% end %>
8
+ <% end %>
9
+
10
+ <%= bs5_toast(color: :success, class: 'd-flex align-items-center') do |t| %>
11
+ <%= t.body do %>Hello, world! This is a toast message.<% end %>
12
+ <% end %>
13
+
14
+ <%= bs5_toast(color: :danger, class: 'd-flex align-items-center') do |t| %>
15
+ <%= t.body do %>Hello, world! This is a toast message.<% end %>
16
+ <% end %>
17
+
18
+ <%= bs5_toast(color: :warning, class: 'd-flex align-items-center') do |t| %>
19
+ <%= t.body do %>Hello, world! This is a toast message.<% end %>
20
+ <% end %>
21
+
22
+ <%= bs5_toast(color: :info, class: 'd-flex align-items-center') do |t| %>
23
+ <%= t.body do %>Hello, world! This is a toast message.<% end %>
24
+ <% end %>
25
+
26
+ <%= bs5_toast(color: :light, class: 'd-flex align-items-center') do |t| %>
27
+ <%= t.body do %>Hello, world! This is a toast message.<% end %>
28
+ <% end %>
29
+
30
+ <%= bs5_toast(color: :dark, class: 'd-flex align-items-center') do |t| %>
31
+ <%= t.body do %>Hello, world! This is a toast message.<% end %>
32
+ <% end %>
33
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <h2>Custom content</h2>
2
+ <%= bs5_example(snippet: 'toasts/custom_content/snippet1') %>
3
+ <%= bs5_example(snippet: 'toasts/custom_content/snippet2') %>
@@ -0,0 +1,3 @@
1
+ <%= bs5_toast(class: 'd-flex align-items-center') do |t| %>
2
+ <%= t.body do %>Hello, world! This is a toast message.<% end %>
3
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <%= bs5_toast(close_button: false) do |t| %>
2
+ <%= t.body do %>
3
+ Hello, world! This is a toast message.
4
+ <div class="mt-2 pt-2 border-top">
5
+ <%= bs5_button_tag('Take action', color: :primary, size: :small) %>
6
+ <%= bs5_button_tag('Close', color: :secondary, size: :small, dismiss: :toast) %>
7
+ </div>
8
+ <% end %>
9
+ <% end %>
@@ -0,0 +1,2 @@
1
+ <h2>Default</h2>
2
+ <%= bs5_example(snippet: 'toasts/default/snippet') %>
@@ -0,0 +1,17 @@
1
+ <%= bs5_toast do |t| %>
2
+ <%= t.header do %>
3
+ <svg
4
+ class="bd-placeholder-img rounded me-2"
5
+ width="20"
6
+ height="20"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ aria-hidden="true"
9
+ focusable="false"
10
+ >
11
+ <rect width="100%" height="100%" fill="#007aff"></rect>
12
+ </svg>
13
+ <strong class="me-auto">Bootstrap</strong>
14
+ <small>11 mins ago</small>
15
+ <% end %>
16
+ <%= t.body do %>Hello, world! This is a toast message.<% end %>
17
+ <% end %>
@@ -0,0 +1,2 @@
1
+ <h2>Options</h2>
2
+ <%= bs5_example(snippet: 'toasts/js_options/snippet') %>
@@ -0,0 +1,23 @@
1
+ <%= bs5_toast_container do %>
2
+ <%= bs5_toast(autohide: true, delay: 10_000, animation: false) do |t| %>
3
+ <%= t.header do %>
4
+ <svg
5
+ class="bd-placeholder-img rounded me-2"
6
+ width="20"
7
+ height="20"
8
+ xmlns="http://www.w3.org/2000/svg"
9
+ aria-hidden="true"
10
+ focusable="false"
11
+ >
12
+ <rect width="100%" height="100%" fill="#007aff"></rect>
13
+ </svg>
14
+ <strong class="me-auto">Bootstrap</strong>
15
+ <small>11 mins ago</small>
16
+ <% end %>
17
+ <%= t.body do %>Hello, world! This is a toast message.<% end %>
18
+ <% end %>
19
+
20
+ <%= bs5_toast(close_button: false, autohide: true, delay: 11_000) do |t| %>
21
+ <%= t.body do %>Hello, world! This is a toast message.<% end %>
22
+ <% end %>
23
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <h2>Placement</h2>
2
+ <%= bs5_example(snippet: 'toasts/placement/snippet1') %>
3
+ <%= bs5_example(snippet: 'toasts/placement/snippet2') %>
@@ -0,0 +1,44 @@
1
+ <div
2
+ aria-live="polite"
3
+ aria-atomic="true"
4
+ class="position-relative"
5
+ style="min-height: 240px"
6
+ >
7
+ <%= bs5_toast_container(class: 'position-absolute top-0 end-0') do %>
8
+ <%= bs5_toast do |t| %>
9
+ <%= t.header do %>
10
+ <svg
11
+ class="bd-placeholder-img rounded me-2"
12
+ width="20"
13
+ height="20"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ aria-hidden="true"
16
+ focusable="false"
17
+ >
18
+ <rect width="100%" height="100%" fill="#007aff"></rect>
19
+ </svg>
20
+ <strong class="me-auto">Bootstrap</strong>
21
+ <small>just now</small>
22
+ <% end %>
23
+ <%= t.body do %>See? Just like this.<% end %>
24
+ <% end %>
25
+
26
+ <%= bs5_toast do |t| %>
27
+ <%= t.header do %>
28
+ <svg
29
+ class="bd-placeholder-img rounded me-2"
30
+ width="20"
31
+ height="20"
32
+ xmlns="http://www.w3.org/2000/svg"
33
+ aria-hidden="true"
34
+ focusable="false"
35
+ >
36
+ <rect width="100%" height="100%" fill="#007aff"></rect>
37
+ </svg>
38
+ <strong class="me-auto">Bootstrap</strong>
39
+ <small>2 seconds ago</small>
40
+ <% end %>
41
+ <%= t.body do %>Heads up, toasts will stack automatically<% end %>
42
+ <% end %>
43
+ <% end %>
44
+ </div>
@@ -0,0 +1,24 @@
1
+ <div
2
+ aria-live="polite"
3
+ aria-atomic="true"
4
+ class="d-flex justify-content-center align-items-center w-100"
5
+ style="min-height: 240px"
6
+ >
7
+ <%= bs5_toast do |t| %>
8
+ <%= t.header do %>
9
+ <svg
10
+ class="bd-placeholder-img rounded me-2"
11
+ width="20"
12
+ height="20"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ aria-hidden="true"
15
+ focusable="false"
16
+ >
17
+ <rect width="100%" height="100%" fill="#007aff"></rect>
18
+ </svg>
19
+ <strong class="me-auto">Bootstrap</strong>
20
+ <small>11 mins ago</small>
21
+ <% end %>
22
+ <%= t.body do %>Hello, world! This is a toast message.<% end %>
23
+ <% end %>
24
+ </div>
@@ -0,0 +1,2 @@
1
+ <h2>Stacking</h2>
2
+ <%= bs5_example(snippet: 'toasts/stacking/snippet') %>
@@ -0,0 +1,37 @@
1
+ <%= bs5_toast_container do %>
2
+ <%= bs5_toast do |t| %>
3
+ <%= t.header do %>
4
+ <svg
5
+ class="bd-placeholder-img rounded me-2"
6
+ width="20"
7
+ height="20"
8
+ xmlns="http://www.w3.org/2000/svg"
9
+ aria-hidden="true"
10
+ focusable="false"
11
+ >
12
+ <rect width="100%" height="100%" fill="#007aff"></rect>
13
+ </svg>
14
+ <strong class="me-auto">Bootstrap</strong>
15
+ <small>just now</small>
16
+ <% end %>
17
+ <%= t.body do %>See? Just like this.<% end %>
18
+ <% end %>
19
+
20
+ <%= bs5_toast do |t| %>
21
+ <%= t.header do %>
22
+ <svg
23
+ class="bd-placeholder-img rounded me-2"
24
+ width="20"
25
+ height="20"
26
+ xmlns="http://www.w3.org/2000/svg"
27
+ aria-hidden="true"
28
+ focusable="false"
29
+ >
30
+ <rect width="100%" height="100%" fill="#007aff"></rect>
31
+ </svg>
32
+ <strong class="me-auto">Bootstrap</strong>
33
+ <small>2 seconds ago</small>
34
+ <% end %>
35
+ <%= t.body do %>Heads up, toasts will stack automatically<% end %>
36
+ <% end %>
37
+ <% end %>
@@ -0,0 +1,7 @@
1
+ <h1>Toasts</h1>
2
+ <%= render 'bs5/examples/toasts/default/example' %>
3
+ <%= render 'bs5/examples/toasts/stacking/example' %>
4
+ <%= render 'bs5/examples/toasts/custom_content/example' %>
5
+ <%= render 'bs5/examples/toasts/color_schemes/example' %>
6
+ <%= render 'bs5/examples/toasts/placement/example' %>
7
+ <%= render 'bs5/examples/toasts/js_options/example' %>
@@ -25,6 +25,7 @@
25
25
  <% lg.item(active: current_page?(pages_path('list_group'))) do %><%= link_to 'List group', pages_path('list_group') %><% end %>
26
26
  <% lg.item(active: current_page?(pages_path('popovers'))) do %><%= link_to 'Popovers', pages_path('popovers') %><% end %>
27
27
  <% lg.item(active: current_page?(pages_path('spinners'))) do %><%= link_to 'Spinners', pages_path('spinners') %><% end %>
28
+ <% lg.item(active: current_page?(pages_path('toasts'))) do %><%= link_to 'Toasts', pages_path('toasts') %><% end %>
28
29
  <% lg.item(active: current_page?(pages_path('tooltips'))) do %><%= link_to 'Tooltips', pages_path('tooltips') %><% end %>
29
30
  <%- end %>
30
31
  </div>
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bs5
4
- VERSION = '0.0.24'
4
+ VERSION = '0.0.25'
5
5
  end
@@ -1,24 +1,35 @@
1
1
  import * as bootstrap from "bootstrap";
2
2
 
3
- function tooltipify() {
4
- const tooltipTriggerList = [].slice.call(
5
- document.querySelectorAll('[data-bs-toggle="tooltip"]')
6
- );
7
- tooltipTriggerList.map(function (tooltipTriggerEl) {
8
- return new bootstrap.Tooltip(tooltipTriggerEl);
9
- });
3
+ function popoverify() {
4
+ document
5
+ .querySelectorAll('[data-bs-toggle="popover"]')
6
+ .forEach(function (popoverTriggerEl) {
7
+ new bootstrap.Popover(popoverTriggerEl);
8
+ });
10
9
  }
11
10
 
12
- function popoverify() {
13
- const popoverTriggerList = [].slice.call(
14
- document.querySelectorAll('[data-bs-toggle="popover"]')
15
- );
16
- popoverTriggerList.map(function (popoverTriggerEl) {
17
- return new bootstrap.Popover(popoverTriggerEl);
11
+ function toastify() {
12
+ document.querySelectorAll(".toast").forEach(function (toastNode) {
13
+ let autohide = new RegExp("true", "i").test(
14
+ toastNode.dataset["bsAutohide"] || "false"
15
+ );
16
+ let toast = new bootstrap.Toast(toastNode, {
17
+ autohide,
18
+ });
19
+ toast.show();
18
20
  });
19
21
  }
20
22
 
23
+ function tooltipify() {
24
+ document
25
+ .querySelectorAll('[data-bs-toggle="tooltip"]')
26
+ .forEach(function (tooltipTriggerEl) {
27
+ new bootstrap.Tooltip(tooltipTriggerEl);
28
+ });
29
+ }
30
+
21
31
  export function start() {
22
32
  popoverify();
33
+ toastify();
23
34
  tooltipify();
24
35
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bs5
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.24
4
+ version: 0.0.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Baselier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-16 00:00:00.000000000 Z
11
+ date: 2020-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -149,6 +149,14 @@ files:
149
149
  - app/components/bs5/list_group_component.rb
150
150
  - app/components/bs5/spinner_component.html.erb
151
151
  - app/components/bs5/spinner_component.rb
152
+ - app/components/bs5/toast/body_component.html.erb
153
+ - app/components/bs5/toast/body_component.rb
154
+ - app/components/bs5/toast/header_component.html.erb
155
+ - app/components/bs5/toast/header_component.rb
156
+ - app/components/bs5/toast_component.html.erb
157
+ - app/components/bs5/toast_component.rb
158
+ - app/components/bs5/toast_container_component.html.erb
159
+ - app/components/bs5/toast_container_component.rb
152
160
  - app/controllers/bs5/application_controller.rb
153
161
  - app/controllers/bs5/pages_controller.rb
154
162
  - app/helpers/bs5/application_helper.rb
@@ -265,6 +273,20 @@ files:
265
273
  - app/views/bs5/examples/spinners/size/_example.html.erb
266
274
  - app/views/bs5/examples/spinners/size/size1.html.erb
267
275
  - app/views/bs5/examples/spinners/size/size2.html.erb
276
+ - app/views/bs5/examples/toasts/color_schemes/_example.html.erb
277
+ - app/views/bs5/examples/toasts/color_schemes/snippet.html.erb
278
+ - app/views/bs5/examples/toasts/custom_content/_example.html.erb
279
+ - app/views/bs5/examples/toasts/custom_content/snippet1.html.erb
280
+ - app/views/bs5/examples/toasts/custom_content/snippet2.html.erb
281
+ - app/views/bs5/examples/toasts/default/_example.html.erb
282
+ - app/views/bs5/examples/toasts/default/snippet.html.erb
283
+ - app/views/bs5/examples/toasts/js_options/_example.html.erb
284
+ - app/views/bs5/examples/toasts/js_options/snippet.html.erb
285
+ - app/views/bs5/examples/toasts/placement/_example.html.erb
286
+ - app/views/bs5/examples/toasts/placement/snippet1.html.erb
287
+ - app/views/bs5/examples/toasts/placement/snippet2.html.erb
288
+ - app/views/bs5/examples/toasts/stacking/_example.html.erb
289
+ - app/views/bs5/examples/toasts/stacking/snippet.html.erb
268
290
  - app/views/bs5/examples/tooltips/default/_example.html.erb
269
291
  - app/views/bs5/examples/tooltips/default/buttons.html.erb
270
292
  - app/views/bs5/examples/tooltips/default/disabled_elements.html.erb
@@ -280,6 +302,7 @@ files:
280
302
  - app/views/bs5/pages/list_group.html.erb
281
303
  - app/views/bs5/pages/popovers.html.erb
282
304
  - app/views/bs5/pages/spinners.html.erb
305
+ - app/views/bs5/pages/toasts.html.erb
283
306
  - app/views/bs5/pages/tooltips.html.erb
284
307
  - app/views/layouts/bs5/application.html.erb
285
308
  - app/views/layouts/bs5/pages.html.erb