ui_bibz 3.0.0.beta7 → 3.0.0.beta8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fcf81ce4807a05b926ca746d1bf59c6247fcd15f1570b92375f31965e9e2b77c
4
- data.tar.gz: c194e18025bdaa41f2d89550f55b84cf96eaa76ce3c7d24802ec0a42c65ce80a
3
+ metadata.gz: 5d3e72f23a91692fcd9919939cac116b0434333c8597b11dcef0f7b8cb766d87
4
+ data.tar.gz: f3b225819371ddbe82c9f2f3c84388f4e2fed1edce822e539e649e761f6224b8
5
5
  SHA512:
6
- metadata.gz: 809d8c0a5adc0a12aace155c5e9d94dd3c99e495922c0b5c55e1ed837ee3c1a98c6e09ef35a5de3b631e99cb21c4b6a4b59cda912168df6dfd4c5f8192eaa4e7
7
- data.tar.gz: 6cb6392d902b2750a16c2d4bb17a8a2515294b0c9de8d4a81f1311ae86dc70ab77d8ae8efd987d7dc8ed66ddf9af28daab48152e4e26a6ea3e67c8eb6296f1ab
6
+ metadata.gz: ff3ce0988337055522cfb625287a83104691d0931219c76763e8014b0e8775496fa21312721896bc3fed30b26473f058abf2f3f7f87ea3d9cb7a19bf94409f14
7
+ data.tar.gz: 64cdd3c257b47403e4ebf83ab47fb56b3c0f73136a1d4db0fbbf300925b32999b374c6054271bba50bca2b0b7da0dc37db1d9c21178c718397d1f7d6fd110ae5
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ui_bibz (3.0.0.beta7)
4
+ ui_bibz (3.0.0.beta8)
5
5
  will-paginate-i18n
6
6
  will_paginate (~> 3.3.0)
7
7
  will_paginate-bootstrap4
@@ -95,7 +95,7 @@ GEM
95
95
  haml (>= 4.0, < 6)
96
96
  nokogiri (>= 1.6.0)
97
97
  ruby_parser (~> 3.5)
98
- i18n (1.8.7)
98
+ i18n (1.8.8)
99
99
  concurrent-ruby (~> 1.0)
100
100
  iniparse (1.5.0)
101
101
  jquery-rails (4.4.0)
@@ -158,7 +158,7 @@ GEM
158
158
  rake (13.0.3)
159
159
  regexp_parser (2.0.3)
160
160
  rexml (3.2.4)
161
- rubocop (1.9.0)
161
+ rubocop (1.9.1)
162
162
  parallel (~> 1.10)
163
163
  parser (>= 3.0.0.0)
164
164
  rainbow (>= 2.2.2, < 4.0)
data/lib/ui_bibz.rb CHANGED
@@ -180,9 +180,11 @@ module UiBibz
180
180
  module Notifications
181
181
  autoload :Alert, 'ui_bibz/ui/core/notifications/alert'
182
182
  autoload :Badge, 'ui_bibz/ui/core/notifications/badge'
183
+ autoload :Popover, 'ui_bibz/ui/core/notifications/popover'
183
184
  autoload :ProgressBar, 'ui_bibz/ui/core/notifications/progress_bar'
184
185
  autoload :Spinner, 'ui_bibz/ui/core/notifications/spinner'
185
186
  autoload :Toast, 'ui_bibz/ui/core/notifications/toast'
187
+ autoload :Tooltip, 'ui_bibz/ui/core/notifications/tooltip'
186
188
  end
187
189
 
188
190
  module Windows
data/lib/ui_bibz/infos.rb CHANGED
@@ -12,6 +12,6 @@ module UiBibz
12
12
  REPO = 'git+https://github.com/thooams/ui_bibz.git'
13
13
  EMAIL = 'thomas@hummel.link'
14
14
  AUTHOR = 'Thooams [Thomas HUMMEL]'
15
- VERSION = '3.0.0.beta7'
15
+ VERSION = '3.0.0.beta8'
16
16
  AUTHORS = ['Thooams'].freeze
17
17
  end
@@ -73,12 +73,12 @@ module UiBibz::Ui::Core::Forms::Dropdowns
73
73
  end
74
74
 
75
75
  def button_html
76
- content_tag :button, button_content, class: join_classes('btn', button_status, size)
76
+ content_tag :button, button_content, (options[:html_button] || {}).merge(class: join_classes('btn', button_status, size, options[:html_button].try(:[], :class)))
77
77
  end
78
78
 
79
79
  def split_html
80
- content_tag :button, split_content, class: split_classes, type: 'button',
81
- 'data-bs-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false
80
+ content_tag :button, split_content, (options[:html_split] || {}).merge(class: split_classes, type: 'button',
81
+ 'data-bs-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false)
82
82
  end
83
83
 
84
84
  def split_content
@@ -86,7 +86,7 @@ module UiBibz::Ui::Core::Forms::Dropdowns
86
86
  end
87
87
 
88
88
  def split_classes
89
- join_classes('btn', button_status, size, 'dropdown-toggle', 'dropdown-toggle-split')
89
+ join_classes('btn', button_status, size, 'dropdown-toggle', 'dropdown-toggle-split', options[:split_html].try(:[], :class))
90
90
  end
91
91
 
92
92
  def src_only
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module UiBibz::Ui::Core::Notifications
4
+ # Create a popover
5
+ #
6
+ # This element is an extend of UiBibz::Ui::Core::Component.
7
+ #
8
+ # ==== Attributes
9
+ #
10
+ # * +content+ - Content of element
11
+ # * +options+ - Options of element
12
+ # * +html_options+ - Html Options of element
13
+ #
14
+ # ==== Options
15
+ #
16
+ # You can add HTML attributes using the +html_options+.
17
+ # You can pass arguments in options attribute:
18
+ #
19
+ # ==== Signatures
20
+ #
21
+ # UiBibz::Ui::Core::Notifications::Popover.new(content, options = nil, html_options = nil)
22
+ #
23
+ # UiBibz::Ui::Core::Notifications::Popover.new(options = nil, html_options = nil) do
24
+ # content
25
+ # end
26
+ #
27
+ # ==== Examples
28
+ #
29
+ # UiBibz::Ui::Core::Notifications::Popover.new(class: 'my-toast').tap |t|
30
+ # t.header "My header toast", glyph: 'eye', time: 'now'
31
+ # t.body "My body toast"
32
+ # end
33
+ #
34
+ # ==== Helper
35
+ #
36
+ # popover = UiBibz::Ui::Core::Notifications::Popover.new(position: :left) do
37
+ # My content
38
+ # end
39
+ # ui_glyph("diamond", popover: popover)
40
+ #
41
+ # # or
42
+ #
43
+ # ui_glyph("diamond", {popover: true}, { title: "My content" })
44
+ #
45
+ # # or
46
+ #
47
+ # ui_glyph("diamond", popover: { title: "My content", position: :right})
48
+ #
49
+ class Popover < UiBibz::Ui::Core::Component
50
+ # Note that for security reasons the sanitize, sanitizeFn, and allowList
51
+ # options cannot be supplied using data attributes.
52
+ # https://getbootstrap.com/docs/5.0/components/popovers/#options
53
+ DATA_ATTRIBUTES = %i[animation container delay html selector
54
+ template title trigger offset fallbackPlacement
55
+ boundary customClass popperConfig].freeze
56
+
57
+ # See UiBibz::Ui::Core::Component.initialize
58
+ def initialize(content = nil, options = nil, html_options = nil, &block)
59
+ super
60
+ @content = @options[:content] if content.is_a?(Hash) && block.nil?
61
+ end
62
+
63
+ # Render html tag
64
+ def render
65
+ base_attributes.merge(data_attributes)
66
+ end
67
+
68
+ private
69
+
70
+ def base_attributes
71
+ {
72
+ 'data-bs-toggle' => 'popover',
73
+ 'data-bs-content' => @content.html_safe
74
+ }.tap do |h|
75
+ h['data-bs-placement'] = options[:position] || options[:placement] if (options[:position] || options[:placement]).present?
76
+ end
77
+ end
78
+
79
+ def data_attributes
80
+ DATA_ATTRIBUTES.map do |data_attribute|
81
+ options[data_attribute].to_s.blank? ? nil : { "data-bs-#{data_attribute}" => data_attribute_value(data_attribute) }
82
+ end.compact.reduce(&:merge) || {}
83
+ end
84
+
85
+ def data_attribute_value(data_attribute)
86
+ options[data_attribute].is_a?(String) ? options[data_attribute].html_safe : options[data_attribute]
87
+ end
88
+ end
89
+ end
@@ -25,20 +25,20 @@ module UiBibz::Ui::Core::Notifications
25
25
  #
26
26
  # ==== Signatures
27
27
  #
28
- # UiBibz::Ui::Core::Toast.new(content, options = nil, html_options = nil)
28
+ # UiBibz::Ui::Core::Notifications::Toast.new(content, options = nil, html_options = nil)
29
29
  #
30
- # UiBibz::Ui::Core::Toast.new(options = nil, html_options = nil) do
30
+ # UiBibz::Ui::Core::Notifications::Toast.new(options = nil, html_options = nil) do
31
31
  # content
32
32
  # end
33
33
  #
34
34
  # ==== Examples
35
35
  #
36
- # UiBibz::Ui::Core::Toast.new(class: 'my-toast').tap |t|
36
+ # UiBibz::Ui::Core::Notifications::Toast.new(class: 'my-toast').tap |t|
37
37
  # t.header "My header toast", glyph: 'eye', time: 'now'
38
38
  # t.body "My body toast"
39
39
  # end
40
40
  #
41
- # UiBibz::Ui::Core::Toast.new(class: 'my-toast').tap |t|
41
+ # UiBibz::Ui::Core::Notifications::Toast.new(class: 'my-toast').tap |t|
42
42
  # t.header glyph: 'eye', time: 'now' do
43
43
  # My header toast
44
44
  # end
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module UiBibz::Ui::Core::Notifications
4
+ # Create a tooltip
5
+ #
6
+ # This element is an extend of UiBibz::Ui::Core::Component.
7
+ #
8
+ # ==== Attributes
9
+ #
10
+ # * +content+ - Content of element
11
+ # * +options+ - Options of element
12
+ # * +html_options+ - Html Options of element
13
+ #
14
+ # ==== Options
15
+ #
16
+ # You can add HTML attributes using the +html_options+.
17
+ # You can pass arguments in options attribute:
18
+ #
19
+ # ==== Signatures
20
+ #
21
+ # UiBibz::Ui::Core::Notifications::Tooltip.new(content, options = nil, html_options = nil)
22
+ #
23
+ # UiBibz::Ui::Core::Notifications::Tooltip.new(options = nil, html_options = nil) do
24
+ # content
25
+ # end
26
+ #
27
+ # ==== Examples
28
+ #
29
+ # UiBibz::Ui::Core::Notifications::Tooltip.new("My content")
30
+ #
31
+ # # or
32
+ #
33
+ # UiBibz::Ui::Core::Notifications::Tooltip.new(position: :right) do
34
+ # content
35
+ # end
36
+ #
37
+ # ==== Helper
38
+ #
39
+ # tooltip = UiBibz::Ui::Core::Notifications::Tooltip.new("My content", position: :left)
40
+ # ui_glyph("diamond", tooltip: tooltip)
41
+ #
42
+ # # or
43
+ #
44
+ # ui_glyph("diamond", {tooltip: true}, { title: "My content" })
45
+ #
46
+ # # or
47
+ #
48
+ # ui_glyph("diamond", tooltip: { title: "My content", position: :right})
49
+ #
50
+ class Tooltip < UiBibz::Ui::Core::Component
51
+ # Note that for security reasons the sanitize, sanitizeFn, and allowList
52
+ # options cannot be supplied using data attributes.
53
+ # https://getbootstrap.com/docs/5.0/components/tooltips/#options
54
+ DATA_ATTRIBUTES = %i[animation container delay html selector template trigger
55
+ fallbackPlacement boundary].freeze
56
+
57
+ # See UiBibz::Ui::Core::Component.initialize
58
+ def initialize(content = nil, options = nil, html_options = nil, &block)
59
+ super
60
+ @content = @options[:title] if content.is_a?(Hash) && block.nil?
61
+ end
62
+
63
+ # Render html tag
64
+ def render
65
+ base_attributes.merge(data_attributes)
66
+ end
67
+
68
+ private
69
+
70
+ def base_attributes
71
+ {
72
+ 'data-bs-toggle' => 'tooltip',
73
+ 'data-bs-title' => @content.html_safe
74
+ }.tap do |h|
75
+ h['data-bs-placement'] = options[:position] || options[:placement] if (options[:position] || options[:placement]).present?
76
+ end
77
+ end
78
+
79
+ def data_attributes
80
+ DATA_ATTRIBUTES.map do |data_attribute|
81
+ options[data_attribute].to_s.blank? ? nil : { "data-bs-#{data_attribute}" => data_attribute_value(data_attribute) }
82
+ end.compact.reduce(&:merge) || {}
83
+ end
84
+
85
+ def data_attribute_value(data_attribute)
86
+ options[data_attribute].is_a?(String) ? options[data_attribute].html_safe : options[data_attribute]
87
+ end
88
+ end
89
+ end
@@ -1,34 +1,37 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PopoverExtension
4
- TOOLTIP_METHODS = %i[animation container delay html placement selector template title trigger
5
- offset fallback_placement boundary sanitize white_list santitize_fn].freeze
6
-
7
- POPOVER_METHODS = %i[animation container delay html placement selector template title
8
- trigger offset fallback_placement boundary sanitize white_list sanitize_fn].freeze
9
-
10
4
  def popover_data_html
11
- if options[:popover].present?
12
- add_html_data 'bs-toggle', value: 'popover'
13
- add_html_data 'bs-content', value: (options[:popover].is_a?(String) ? options[:popover] : options[:popover][:content])
14
- end
5
+ return if options[:popover].nil?
15
6
 
16
- return unless options[:popover].is_a?(Hash)
17
-
18
- POPOVER_METHODS.each { |mth| add_html_data("bs-#{mth}", value: options[:popover].try(:[], mth)) unless options[:popover].try(:[], mth).nil? }
19
- add_html_data 'bs-placement', value: options[:popover].try(:[], :position) unless options[:popover].try(:[], :position).nil?
7
+ html_options.update(generate_popover.render)
20
8
  end
21
9
 
22
10
  def tooltip_data_html
23
11
  return if options[:tooltip].nil?
24
12
 
25
- add_html_data 'bs-toggle', value: 'tooltip'
13
+ html_options.update(generate_tooltip.render)
14
+ end
15
+
16
+ private
17
+
18
+ def generate_tooltip
19
+ case options[:tooltip].class.name
20
+ when 'UiBibz::Ui::Core::Notifications::Tooltip'
21
+ options[:tooltip]
22
+ when 'TrueClass'
23
+ UiBibz::Ui::Core::Notifications::Tooltip.new(html_options.delete(:title))
24
+ else
25
+ UiBibz::Ui::Core::Notifications::Tooltip.new(options[:tooltip])
26
+ end
27
+ end
26
28
 
27
- if options[:tooltip].is_a?(Hash)
28
- TOOLTIP_METHODS.each { |mth| add_html_data("bs-#{mth}", value: options[:tooltip].try(:[], mth)) unless options[:tooltip].try(:[], mth).nil? }
29
- add_html_data 'bs-placement', value: options[:tooltip].try(:[], :position) unless options[:tooltip].try(:[], :position).nil?
29
+ def generate_popover
30
+ case options[:popover].class.name
31
+ when 'UiBibz::Ui::Core::Notifications::Popover'
32
+ options[:popover]
30
33
  else
31
- add_html_data :title, value: options[:tooltip] == true ? sanitize_text(content) : options[:tooltip]
34
+ UiBibz::Ui::Core::Notifications::Popover.new(options[:popover])
32
35
  end
33
36
  end
34
37
  end
@@ -91,14 +91,14 @@ class ButtonTest < ActionView::TestCase
91
91
 
92
92
  test 'button with complex popover' do
93
93
  actual = ui_button('My Button', popover: { content: 'My popover', position: :left, html: true })
94
- expected = '<button data-bs-toggle="popover" data-bs-content="My popover" data-bs-html="true" data-bs-placement="left" class="btn-secondary btn">My Button</button>'
94
+ expected = "<button data-bs-toggle=\"popover\" data-bs-content=\"My popover\" data-bs-placement=\"left\" data-bs-html=\"true\" class=\"btn-secondary btn\">My Button</button>"
95
95
 
96
96
  assert_equal expected, actual
97
97
  end
98
98
 
99
99
  test 'button with simple tooltip' do
100
100
  actual = ui_button('My Button', { tooltip: 'My Button' }, { title: 'My tooltip' })
101
- expected = '<button title="My tooltip" data-bs-toggle="tooltip" data-title="My Button" class="btn-secondary btn">My Button</button>'
101
+ expected = '<button title="My tooltip" data-bs-toggle="tooltip" data-bs-title="My Button" class="btn-secondary btn">My Button</button>'
102
102
 
103
103
  assert_equal expected, actual
104
104
  end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+ class PopoverTest < ActionView::TestCase
5
+ setup do
6
+ @parameters = { animation: true, container: "body", position: :left,
7
+ delay: 10, html: true, selector: false, template: "<b>",
8
+ trigger: "hover focus", fallbackPlacement: %w[top right],
9
+ boundary: 'clippingParents', title: "My title", offset: 2,
10
+ customClass: "test", popperConfig: "Mystring" }
11
+ end
12
+
13
+ test 'popover by hash' do
14
+ actual = UiBibz::Ui::Core::Notifications::Popover.new(@parameters.merge(content: "My Content")).render
15
+ expected = { "data-bs-toggle" => "popover", "data-bs-content" => "My Content", "data-bs-placement" => :left, "data-bs-animation" => true, "data-bs-container" => "body", "data-bs-delay" => 10, "data-bs-html" => true, "data-bs-selector" => false, "data-bs-template" => "<b>", "data-bs-title" => "My title", "data-bs-trigger" => "hover focus", "data-bs-offset" => 2, "data-bs-fallbackPlacement" => %w[top right], "data-bs-boundary" => "clippingParents", "data-bs-customClass" => "test", "data-bs-popperConfig" => "Mystring" }
16
+
17
+ assert_equal expected, actual
18
+ end
19
+
20
+ test 'popover with content and options' do
21
+ actual = UiBibz::Ui::Core::Notifications::Popover.new("My Content", @parameters).render
22
+
23
+ expected = { "data-bs-toggle" => "popover", "data-bs-content" => "My Content", "data-bs-placement" => :left, "data-bs-animation" => true, "data-bs-container" => "body", "data-bs-delay" => 10, "data-bs-html" => true, "data-bs-selector" => false, "data-bs-template" => "<b>", "data-bs-title" => "My title", "data-bs-trigger" => "hover focus", "data-bs-offset" => 2, "data-bs-fallbackPlacement" => %w[top right], "data-bs-boundary" => "clippingParents", "data-bs-customClass" => "test", "data-bs-popperConfig" => "Mystring" }
24
+
25
+ assert_equal expected, actual
26
+ end
27
+
28
+ test 'popover with block and options' do
29
+ actual = UiBibz::Ui::Core::Notifications::Popover.new(@parameters) do
30
+ "My Content"
31
+ end.render
32
+
33
+ expected = { "data-bs-toggle" => "popover", "data-bs-content" => "My Content", "data-bs-placement" => :left, "data-bs-animation" => true, "data-bs-container" => "body", "data-bs-delay" => 10, "data-bs-html" => true, "data-bs-selector" => false, "data-bs-template" => "<b>", "data-bs-title" => "My title", "data-bs-trigger" => "hover focus", "data-bs-offset" => 2, "data-bs-fallbackPlacement" => %w[top right], "data-bs-boundary" => "clippingParents", "data-bs-customClass" => "test", "data-bs-popperConfig" => "Mystring" }
34
+
35
+ assert_equal expected, actual
36
+ end
37
+
38
+ test 'glyph with popover object' do
39
+ popover = UiBibz::Ui::Core::Notifications::Popover.new(@parameters.merge(content: "My Content"))
40
+ actual = UiBibz::Ui::Core::Icons::Glyph.new("diamond", popover: popover).render
41
+ expected = "<i data-bs-toggle=\"popover\" data-bs-content=\"My Content\" data-bs-placement=\"left\" data-bs-animation=\"true\" data-bs-container=\"body\" data-bs-delay=\"10\" data-bs-html=\"true\" data-bs-selector=\"false\" data-bs-template=\"<b>\" data-bs-title=\"My title\" data-bs-trigger=\"hover focus\" data-bs-offset=\"2\" data-bs-fallbackPlacement=\"top right\" data-bs-boundary=\"clippingParents\" data-bs-customClass=\"test\" data-bs-popperConfig=\"Mystring\" class=\"glyph fas fa-diamond\"></i>"
42
+
43
+ assert_equal expected, actual
44
+ end
45
+
46
+ test 'glyph with popover hash' do
47
+ actual = UiBibz::Ui::Core::Icons::Glyph.new("diamond", popover: @parameters.merge(content: "My Content")).render
48
+ expected = "<i data-bs-toggle=\"popover\" data-bs-content=\"My Content\" data-bs-placement=\"left\" data-bs-animation=\"true\" data-bs-container=\"body\" data-bs-delay=\"10\" data-bs-html=\"true\" data-bs-selector=\"false\" data-bs-template=\"<b>\" data-bs-title=\"My title\" data-bs-trigger=\"hover focus\" data-bs-offset=\"2\" data-bs-fallbackPlacement=\"top right\" data-bs-boundary=\"clippingParents\" data-bs-customClass=\"test\" data-bs-popperConfig=\"Mystring\" class=\"glyph fas fa-diamond\"></i>"
49
+
50
+ assert_equal expected, actual
51
+ end
52
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+ class TooltipTest < ActionView::TestCase
5
+ setup do
6
+ @parameters = { animation: true, container: "body", position: :left,
7
+ delay: 10, html: true, selector: false, template: "<b>",
8
+ trigger: "hover focus", fallbackPlacement: %w[top right],
9
+ boundary: 'clippingParents' }
10
+ end
11
+
12
+ test 'tooltip by hash' do
13
+ actual = UiBibz::Ui::Core::Notifications::Tooltip.new(@parameters.merge(title: "My Title")).render
14
+ expected = { "data-bs-toggle" => "tooltip", "data-bs-title" => "My Title", "data-bs-placement" => :left, "data-bs-animation" => true, "data-bs-container" => "body", "data-bs-delay" => 10, "data-bs-html" => true, "data-bs-selector" => false, "data-bs-template" => "<b>", "data-bs-trigger" => "hover focus", "data-bs-fallbackPlacement" => %w[top right], "data-bs-boundary" => "clippingParents" }
15
+
16
+ assert_equal expected, actual
17
+ end
18
+
19
+ test 'tooltip with content and options' do
20
+ actual = UiBibz::Ui::Core::Notifications::Tooltip.new("My Title", @parameters).render
21
+
22
+ expected = { "data-bs-toggle" => "tooltip", "data-bs-title" => "My Title", "data-bs-placement" => :left, "data-bs-animation" => true, "data-bs-container" => "body", "data-bs-delay" => 10, "data-bs-html" => true, "data-bs-selector" => false, "data-bs-template" => "<b>", "data-bs-trigger" => "hover focus", "data-bs-fallbackPlacement" => %w[top right], "data-bs-boundary" => "clippingParents" }
23
+
24
+ assert_equal expected, actual
25
+ end
26
+
27
+ test 'tooltip with block and options' do
28
+ actual = UiBibz::Ui::Core::Notifications::Tooltip.new(@parameters) do
29
+ "My Title"
30
+ end.render
31
+
32
+ expected = { "data-bs-toggle" => "tooltip", "data-bs-title" => "My Title", "data-bs-placement" => :left, "data-bs-animation" => true, "data-bs-container" => "body", "data-bs-delay" => 10, "data-bs-html" => true, "data-bs-selector" => false, "data-bs-template" => "<b>", "data-bs-trigger" => "hover focus", "data-bs-fallbackPlacement" => %w[top right], "data-bs-boundary" => "clippingParents" }
33
+
34
+ assert_equal expected, actual
35
+ end
36
+
37
+ test 'glyph with tooltip object' do
38
+ tooltip = UiBibz::Ui::Core::Notifications::Tooltip.new(@parameters.merge(title: "My Title"))
39
+ actual = UiBibz::Ui::Core::Icons::Glyph.new("diamond", tooltip: tooltip).render
40
+ expected = "<i data-bs-toggle=\"tooltip\" data-bs-title=\"My Title\" data-bs-placement=\"left\" data-bs-animation=\"true\" data-bs-container=\"body\" data-bs-delay=\"10\" data-bs-html=\"true\" data-bs-selector=\"false\" data-bs-template=\"<b>\" data-bs-trigger=\"hover focus\" data-bs-fallbackPlacement=\"top right\" data-bs-boundary=\"clippingParents\" class=\"glyph fas fa-diamond\"></i>"
41
+
42
+ assert_equal expected, actual
43
+ end
44
+
45
+ test 'glyph with tooltip hash' do
46
+ actual = UiBibz::Ui::Core::Icons::Glyph.new("diamond", tooltip: @parameters.merge(title: "My Title")).render
47
+ expected = "<i data-bs-toggle=\"tooltip\" data-bs-title=\"My Title\" data-bs-placement=\"left\" data-bs-animation=\"true\" data-bs-container=\"body\" data-bs-delay=\"10\" data-bs-html=\"true\" data-bs-selector=\"false\" data-bs-template=\"<b>\" data-bs-trigger=\"hover focus\" data-bs-fallbackPlacement=\"top right\" data-bs-boundary=\"clippingParents\" class=\"glyph fas fa-diamond\"></i>"
48
+
49
+ assert_equal expected, actual
50
+ end
51
+
52
+ test 'glyph with tooltip boolean' do
53
+ actual = UiBibz::Ui::Core::Icons::Glyph.new("diamond", { tooltip: true }, { title: "My Title" }).render
54
+ expected = "<i data-bs-toggle=\"tooltip\" data-bs-title=\"My Title\" class=\"glyph fas fa-diamond\"></i>"
55
+
56
+ assert_equal expected, actual
57
+ end
58
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ui_bibz
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta7
4
+ version: 3.0.0.beta8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thooams [Thomas HUMMEL]
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-29 00:00:00.000000000 Z
11
+ date: 2021-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -411,9 +411,11 @@ files:
411
411
  - lib/ui_bibz/ui/core/notifications/components/bar.rb
412
412
  - lib/ui_bibz/ui/core/notifications/components/toast_body.rb
413
413
  - lib/ui_bibz/ui/core/notifications/components/toast_header.rb
414
+ - lib/ui_bibz/ui/core/notifications/popover.rb
414
415
  - lib/ui_bibz/ui/core/notifications/progress_bar.rb
415
416
  - lib/ui_bibz/ui/core/notifications/spinner.rb
416
417
  - lib/ui_bibz/ui/core/notifications/toast.rb
418
+ - lib/ui_bibz/ui/core/notifications/tooltip.rb
417
419
  - lib/ui_bibz/ui/core/windows/components/modal_body.rb
418
420
  - lib/ui_bibz/ui/core/windows/components/modal_footer.rb
419
421
  - lib/ui_bibz/ui/core/windows/components/modal_header.rb
@@ -564,9 +566,11 @@ files:
564
566
  - test/ui/core/navigations/toolbar_test.rb
565
567
  - test/ui/core/notifications/alert_test.rb
566
568
  - test/ui/core/notifications/badge_test.rb
569
+ - test/ui/core/notifications/popover_test.rb
567
570
  - test/ui/core/notifications/progress_bar_test.rb
568
571
  - test/ui/core/notifications/spinner_test.rb
569
572
  - test/ui/core/notifications/toast_test.rb
573
+ - test/ui/core/notifications/tooltip_test.rb
570
574
  - test/ui/core/windows/modal_test.rb
571
575
  - test/ui/utils/breakdown_class_name_generator_test.rb
572
576
  - test/ui/ux/containers/panel_test.rb
@@ -774,9 +778,11 @@ test_files:
774
778
  - test/ui/core/navigations/toolbar_test.rb
775
779
  - test/ui/core/notifications/alert_test.rb
776
780
  - test/ui/core/notifications/badge_test.rb
781
+ - test/ui/core/notifications/popover_test.rb
777
782
  - test/ui/core/notifications/progress_bar_test.rb
778
783
  - test/ui/core/notifications/spinner_test.rb
779
784
  - test/ui/core/notifications/toast_test.rb
785
+ - test/ui/core/notifications/tooltip_test.rb
780
786
  - test/ui/core/windows/modal_test.rb
781
787
  - test/ui/utils/breakdown_class_name_generator_test.rb
782
788
  - test/ui/ux/containers/panel_test.rb