ui_bibz 3.0.0.beta7 → 3.0.0.beta8
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -3
- data/lib/ui_bibz.rb +2 -0
- data/lib/ui_bibz/infos.rb +1 -1
- data/lib/ui_bibz/ui/core/forms/dropdowns/split_dropdown.rb +4 -4
- data/lib/ui_bibz/ui/core/notifications/popover.rb +89 -0
- data/lib/ui_bibz/ui/core/notifications/toast.rb +4 -4
- data/lib/ui_bibz/ui/core/notifications/tooltip.rb +89 -0
- data/lib/ui_bibz/ui/extensions/core/component/popover_extension.rb +22 -19
- data/test/ui/core/forms/buttons/button_test.rb +2 -2
- data/test/ui/core/notifications/popover_test.rb +52 -0
- data/test/ui/core/notifications/tooltip_test.rb +58 -0
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d3e72f23a91692fcd9919939cac116b0434333c8597b11dcef0f7b8cb766d87
|
4
|
+
data.tar.gz: f3b225819371ddbe82c9f2f3c84388f4e2fed1edce822e539e649e761f6224b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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.
|
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.
|
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
@@ -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
|
-
|
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].
|
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
|
-
|
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
|
-
|
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
|
-
|
28
|
-
|
29
|
-
|
29
|
+
def generate_popover
|
30
|
+
case options[:popover].class.name
|
31
|
+
when 'UiBibz::Ui::Core::Notifications::Popover'
|
32
|
+
options[:popover]
|
30
33
|
else
|
31
|
-
|
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 =
|
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.
|
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-
|
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
|