ui_bibz 3.0.0.beta14 → 3.0.0.beta19
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/.github/workflows/ci.yml +1 -1
- data/.rubocop.yml +0 -1
- data/.ruby-version +1 -1
- data/Gemfile.lock +101 -97
- data/lib/ui_bibz.rb +2 -0
- data/lib/ui_bibz/concerns/models/searchable.rb +9 -7
- data/lib/ui_bibz/infos.rb +3 -3
- data/lib/ui_bibz/inputs/ui_bibz_form/ui_bibz_form_builder.rb +10 -13
- data/lib/ui_bibz/inputs/ui_bibz_inputs/collection_input.rb +6 -8
- data/lib/ui_bibz/ui/concerns/navigation_concern.rb +12 -0
- data/lib/ui_bibz/ui/concerns/notification_concern.rb +13 -0
- data/lib/ui_bibz/ui/core/boxes/card.rb +1 -1
- data/lib/ui_bibz/ui/core/boxes/components/card_body.rb +1 -1
- data/lib/ui_bibz/ui/core/component.rb +5 -1
- data/lib/ui_bibz/ui/core/forms/buttons/button.rb +4 -4
- data/lib/ui_bibz/ui/core/forms/buttons/button_link.rb +3 -3
- data/lib/ui_bibz/ui/core/forms/choices/choice_group.rb +1 -1
- data/lib/ui_bibz/ui/core/forms/choices/components/choice.rb +8 -4
- data/lib/ui_bibz/ui/core/forms/numbers/formula_field.rb +2 -2
- data/lib/ui_bibz/ui/core/forms/numbers/slider_header.rb +2 -2
- data/lib/ui_bibz/ui/core/forms/selects/dropdown_select_field.rb +11 -0
- data/lib/ui_bibz/ui/core/forms/surrounds/surround_field.rb +1 -1
- data/lib/ui_bibz/ui/core/navigations/breadcrumb.rb +1 -1
- data/lib/ui_bibz/ui/core/navigations/components/breadcrumb_link.rb +1 -1
- data/lib/ui_bibz/ui/core/navigations/components/nav_link_link.rb +1 -1
- data/lib/ui_bibz/ui/core/navigations/link.rb +1 -1
- data/lib/ui_bibz/ui/core/navigations/nav.rb +1 -5
- data/lib/ui_bibz/ui/core/navigations/navbar.rb +2 -6
- data/lib/ui_bibz/ui/core/notifications/components/bar.rb +1 -1
- data/lib/ui_bibz/ui/core/notifications/components/toast_header.rb +1 -1
- data/lib/ui_bibz/ui/core/notifications/popover.rb +2 -6
- data/lib/ui_bibz/ui/core/notifications/toast.rb +33 -3
- data/lib/ui_bibz/ui/core/notifications/tooltip.rb +2 -6
- data/lib/ui_bibz/ui/ux/tables/components/actions.rb +1 -1
- data/lib/ui_bibz/ui/ux/tables/components/store.rb +3 -0
- data/lib/ui_bibz/ui/ux/tables/extensions/paginable.rb +0 -3
- data/lib/ui_bibz/ui/ux/tables/table.rb +6 -2
- data/lib/ui_bibz/ui/ux/tables/table_pagination.rb +0 -3
- data/lib/ui_bibz/ui/ux/tables/table_pagination_per_page.rb +0 -3
- data/lib/ui_bibz/ui/ux/tables/table_search_field.rb +1 -0
- data/lib/ui_bibz/utils/breakdown_class_name_generator.rb +2 -2
- data/lib/ui_bibz/utils/screwdriver.rb +1 -1
- data/test/simple_form_test.rb +36 -27
- data/test/ui/core/forms/choices/checkbox_field_test.rb +7 -0
- data/test/ui/core/forms/selects/{multi_select_field_test.rb → dropdown_select_field_test.rb} +5 -5
- data/test/ui/core/notifications/toast_test.rb +2 -2
- data/ui_bibz.gemspec +3 -2
- metadata +28 -12
@@ -60,14 +60,12 @@ module UiBibzInputs
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def collection
|
63
|
-
@collection ||=
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
end
|
70
|
-
end
|
63
|
+
@collection ||= if options[:grouped]
|
64
|
+
grouped_collection.map { |collection| collection.try(:send, group_method) }.detect(&:present?) || []
|
65
|
+
else
|
66
|
+
collection = options.delete(:collection) || self.class.boolean_collection
|
67
|
+
collection.respond_to?(:call) ? collection.call : collection.to_a
|
68
|
+
end
|
71
69
|
end
|
72
70
|
|
73
71
|
def group_method
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module UiBibz::Ui::Concerns::NavigationConcern #:nodoc:
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
def spacer(num = 'auto')
|
8
|
+
kls = " me-#{num}"
|
9
|
+
@items.last.html_options[:class].nil? ? @items.last.html_options[:class] = kls : @items.last.html_options[:class] << kls
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module UiBibz::Ui::Concerns::NotificationConcern #:nodoc:
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
def data_attributes
|
8
|
+
self.class.const_get('DATA_ATTRIBUTES').filter_map do |data_attribute|
|
9
|
+
options[data_attribute].to_s.blank? ? nil : { "data-bs-#{data_attribute}" => data_attribute_value(data_attribute) }
|
10
|
+
end.reduce(&:merge) || {}
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -90,7 +90,7 @@ module UiBibz::Ui::Core::Boxes
|
|
90
90
|
class Card < UiBibz::Ui::Core::Component
|
91
91
|
include UiBibz::Ui::Concerns::CardItemableConcern
|
92
92
|
|
93
|
-
#
|
93
|
+
# (see UiBibz::Ui::Core::Component#initialize)
|
94
94
|
def initialize(content = nil, options = nil, html_options = nil, &block)
|
95
95
|
super
|
96
96
|
@items = @content.nil? ? [] : [UiBibz::Ui::Core::Boxes::Components::CardBody.new(@content).render]
|
@@ -46,7 +46,7 @@ module UiBibz::Ui::Core::Boxes::Components
|
|
46
46
|
# Render html tag
|
47
47
|
def pre_render
|
48
48
|
if options[:collapse]
|
49
|
-
content_tag :div, class: join_classes('collapse', show), id: options[:collapse],
|
49
|
+
content_tag :div, class: join_classes('collapse', show), id: options[:collapse], 'data-bs-parent': "##{options[:parent_collapse]}" do
|
50
50
|
content_tag :div, @items.join.html_safe, html_options
|
51
51
|
end
|
52
52
|
else
|
@@ -122,6 +122,10 @@ module UiBibz::Ui::Core
|
|
122
122
|
# To turbolinks
|
123
123
|
data_turbolinks = html_options.try(:[], :data).try(:[], :turbolinks) || options.try(:delete, :turbolinks)
|
124
124
|
add_html_data(:turbolinks, value: data_turbolinks) unless data_turbolinks.nil?
|
125
|
+
|
126
|
+
# To Turbo
|
127
|
+
data_turbo = html_options.try(:[], :data).try(:[], :turbo) || options.try(:delete, :turbo)
|
128
|
+
add_html_data(:turbo, value: data_turbo) unless data_turbo.nil?
|
125
129
|
end
|
126
130
|
|
127
131
|
# Override this method to add html Options
|
@@ -145,7 +149,7 @@ module UiBibz::Ui::Core
|
|
145
149
|
def add_html_data(name, value: true)
|
146
150
|
html_options[:data] = {} if html_options[:data].nil?
|
147
151
|
value = value.is_a?(String) ? value.strip : value
|
148
|
-
html_options[:data].update(
|
152
|
+
html_options[:data].update({ name => value })
|
149
153
|
end
|
150
154
|
|
151
155
|
def disabled?
|
@@ -83,10 +83,10 @@ module UiBibz::Ui::Core::Forms::Buttons
|
|
83
83
|
def collapse
|
84
84
|
# Must be flat hash not deep hash
|
85
85
|
{
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
86
|
+
'data-bs-toggle': :collapse,
|
87
|
+
'data-bs-target': "##{options[:collapse]}",
|
88
|
+
'aria-controls': options[:collapse],
|
89
|
+
'aria-expanded': options[:expand_collapse].nil? ? false : options[:expand_collapse]
|
90
90
|
}
|
91
91
|
end
|
92
92
|
|
@@ -78,9 +78,9 @@ module UiBibz::Ui::Core::Forms::Buttons
|
|
78
78
|
def collapse
|
79
79
|
# Must be flat hash not deep hash
|
80
80
|
{
|
81
|
-
|
82
|
-
|
83
|
-
|
81
|
+
'data-bs-toggle': :collapse,
|
82
|
+
'aria-controls': options[:collapse],
|
83
|
+
'aria-expanded': options[:expand_collaspe].nil? ? false : options[:expand_collaspe]
|
84
84
|
}
|
85
85
|
end
|
86
86
|
end
|
@@ -82,10 +82,14 @@ module UiBibz::Ui::Core::Forms::Choices
|
|
82
82
|
if options[:label]
|
83
83
|
content_tag :label, options[:label], html_options.merge(for: input_id)
|
84
84
|
else
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
85
|
+
generated_label
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def generated_label
|
90
|
+
content_tag :label, html_options.merge(for: input_id) do
|
91
|
+
concat glyph_and_content_html(options[:text].nil? ? @content : ' ')
|
92
|
+
concat badge_html unless options[:badge].nil?
|
89
93
|
end
|
90
94
|
end
|
91
95
|
|
@@ -53,7 +53,7 @@ module UiBibz::Ui::Core::Forms::Numbers
|
|
53
53
|
sf.text_field formula_field_name, nil, text_field_formula_html_options
|
54
54
|
sf.addon '=', class: 'formula-field-sign'
|
55
55
|
sf.text_field content, nil, text_field_input_html_options
|
56
|
-
sf.addon formula_field_alert_glyph, { class: 'formula-field-alert' }, { data: {
|
56
|
+
sf.addon formula_field_alert_glyph, { class: 'formula-field-alert' }, { data: { 'bs-toggle': 'tooltip' } }
|
57
57
|
sf.addon @options[:prepend] unless @options[:prepend].nil?
|
58
58
|
end.render
|
59
59
|
end
|
@@ -86,7 +86,7 @@ module UiBibz::Ui::Core::Forms::Numbers
|
|
86
86
|
end
|
87
87
|
|
88
88
|
def content_formula_name
|
89
|
-
content.to_s.
|
89
|
+
content.to_s.chars.count { |i| i == ']' }.positive? ? content.to_s.gsub(/]$/, '_formula]') : "#{content}_formula"
|
90
90
|
end
|
91
91
|
|
92
92
|
def state
|
@@ -53,14 +53,14 @@ module UiBibz::Ui::Core::Forms::Numbers
|
|
53
53
|
def header_min
|
54
54
|
content_tag :div, class: 'slider-header-min' do
|
55
55
|
concat content_tag :label, options[:label_min] || 'Min: ', for: options[:label_for_min]
|
56
|
-
concat content_tag :span, options[:thumb_min],
|
56
|
+
concat content_tag :span, options[:thumb_min], 'data-unit': options[:unit] || options[:unit_min]
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
60
|
def header_max
|
61
61
|
content_tag :div, class: 'slider-header-max' do
|
62
62
|
concat content_tag :label, options[:label_max] || 'Max: ', for: options[:label_for_max]
|
63
|
-
concat content_tag :span, options[:thumb_max],
|
63
|
+
concat content_tag :span, options[:thumb_max], 'data-unit': options[:unit] || options[:unit_max]
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
@@ -25,6 +25,7 @@ module UiBibz::Ui::Core::Forms::Selects
|
|
25
25
|
# * +searchable+ - Boolean
|
26
26
|
# * +select_all_option+ - Boolean
|
27
27
|
# * +append+ - String, Html
|
28
|
+
# * +non_selected_text+ - String
|
28
29
|
# * +open+ - Boolean
|
29
30
|
# * +theme+ - Symbol, defaut: +:dark+
|
30
31
|
# * +prepend+ - String, Html
|
@@ -83,10 +84,12 @@ module UiBibz::Ui::Core::Forms::Selects
|
|
83
84
|
clickable_opt_group
|
84
85
|
collapsible_opt_group
|
85
86
|
searchable
|
87
|
+
non_selected_text
|
86
88
|
select_all_options
|
87
89
|
number_displayed
|
88
90
|
dropdown_menu_classes
|
89
91
|
dropdown_classes
|
92
|
+
n_selected_text
|
90
93
|
end
|
91
94
|
|
92
95
|
def clickable_opt_group
|
@@ -101,6 +104,10 @@ module UiBibz::Ui::Core::Forms::Selects
|
|
101
104
|
add_html_data('enable_filtering') if options[:searchable]
|
102
105
|
end
|
103
106
|
|
107
|
+
def n_selected_text
|
108
|
+
add_html_data('n_selected_text', value: options[:n_selected_text]) if options[:n_selected_text]
|
109
|
+
end
|
110
|
+
|
104
111
|
def number_displayed
|
105
112
|
add_html_data('number_displayed') if options[:number_displayed]
|
106
113
|
end
|
@@ -109,6 +116,10 @@ module UiBibz::Ui::Core::Forms::Selects
|
|
109
116
|
add_html_data('include_select_all_option') if options[:select_all_options]
|
110
117
|
end
|
111
118
|
|
119
|
+
def non_selected_text
|
120
|
+
add_html_data('non_selected_text', value: options[:non_selected_text]) if options[:non_selected_text]
|
121
|
+
end
|
122
|
+
|
112
123
|
def dropdown_menu_classes
|
113
124
|
classes = join_classes(theme, alignment, open)
|
114
125
|
add_html_data('dropdown_menu_classes', value: classes.nil? ? nil : classes.join(' '))
|
@@ -116,7 +116,7 @@ module UiBibz::Ui::Core::Forms::Surrounds
|
|
116
116
|
end
|
117
117
|
|
118
118
|
def dropdown_select_field(content = nil, options = nil, html_options = nil, &block)
|
119
|
-
html_options = (html_options || {}).merge(
|
119
|
+
html_options = (html_options || {}).merge('data-wrapper-classes': 'input-group-btn')
|
120
120
|
@items << UiBibz::Ui::Core::Forms::Selects::DropdownSelectField.new(content, options, html_options, &block).render
|
121
121
|
end
|
122
122
|
|
@@ -50,7 +50,7 @@ module UiBibz::Ui::Core::Navigations::Components
|
|
50
50
|
private
|
51
51
|
|
52
52
|
def component_html_options
|
53
|
-
super.merge(options[:current] ? {
|
53
|
+
super.merge(options[:current] ? { 'aria-current': 'page' } : {})
|
54
54
|
end
|
55
55
|
|
56
56
|
def component_html_classes
|
@@ -45,7 +45,7 @@ module UiBibz::Ui::Core::Navigations
|
|
45
45
|
when 'nav-tabs'
|
46
46
|
html_tag_base
|
47
47
|
when 'list-group'
|
48
|
-
html_tag_base.merge(
|
48
|
+
html_tag_base.merge('aria-controls': sanitize_text(content).parameterize)
|
49
49
|
else
|
50
50
|
{}
|
51
51
|
end.merge(options[:a_html] || {})
|
@@ -58,7 +58,7 @@ module UiBibz::Ui::Core::Navigations
|
|
58
58
|
def collapse
|
59
59
|
{
|
60
60
|
role: 'button',
|
61
|
-
data: {
|
61
|
+
data: { 'bs-toggle': :collapse },
|
62
62
|
aria: {
|
63
63
|
controls: options[:collapse],
|
64
64
|
expanded: options[:active_collapse].nil? ? false : options[:active_collapse]
|
@@ -67,6 +67,7 @@ module UiBibz::Ui::Core::Navigations
|
|
67
67
|
#
|
68
68
|
class Nav < UiBibz::Ui::Core::Component
|
69
69
|
include UiBibz::Ui::Concerns::HtmlConcern
|
70
|
+
include UiBibz::Ui::Concerns::NavigationConcern
|
70
71
|
|
71
72
|
# See UiBibz::Ui::Core::Component.initialize
|
72
73
|
def initialize(content = nil, options = nil, html_options = nil, &block)
|
@@ -108,11 +109,6 @@ module UiBibz::Ui::Core::Navigations
|
|
108
109
|
@items << NavDropdown.new(content, options, html_options).tap(&block)
|
109
110
|
end
|
110
111
|
|
111
|
-
def spacer(num = 'auto')
|
112
|
-
kls = " me-#{num}"
|
113
|
-
@items.last.html_options[:class].nil? ? @items.last.html_options[:class] = kls : @items.last.html_options[:class] << kls
|
114
|
-
end
|
115
|
-
|
116
112
|
protected
|
117
113
|
|
118
114
|
def component_html_classes
|
@@ -75,6 +75,7 @@ module UiBibz::Ui::Core::Navigations
|
|
75
75
|
#
|
76
76
|
class Navbar < UiBibz::Ui::Core::Component
|
77
77
|
include UiBibz::Ui::Concerns::HtmlConcern
|
78
|
+
include UiBibz::Ui::Concerns::NavigationConcern
|
78
79
|
|
79
80
|
# See UiBibz::Ui::Core::Component.initialize
|
80
81
|
def initialize(content = nil, options = nil, html_options = nil, &block)
|
@@ -124,11 +125,6 @@ module UiBibz::Ui::Core::Navigations
|
|
124
125
|
@brand = UiBibz::Ui::Core::Navigations::NavbarBrand.new(content, options, html_options, &block).render
|
125
126
|
end
|
126
127
|
|
127
|
-
def spacer(num = 'auto')
|
128
|
-
kls = " me-#{num}"
|
129
|
-
@items.last.html_options[:class].nil? ? @items.last.html_options[:class] = kls : @items.last.html_options[:class] << kls
|
130
|
-
end
|
131
|
-
|
132
128
|
def id
|
133
129
|
@id ||= generate_id('navbar-id')
|
134
130
|
end
|
@@ -163,7 +159,7 @@ module UiBibz::Ui::Core::Navigations
|
|
163
159
|
end
|
164
160
|
|
165
161
|
def navbar_toggle_button_html
|
166
|
-
content_tag :button, '☰', class: 'navbar-toggler hidden-sm-up', type: :button, data: {
|
162
|
+
content_tag :button, '☰', class: 'navbar-toggler hidden-sm-up', type: :button, data: { 'bs-toggle': 'collapse', 'bs-target': "##{id}" }
|
167
163
|
end
|
168
164
|
|
169
165
|
def expand_size
|
@@ -56,7 +56,7 @@ module UiBibz::Ui::Core::Notifications::Components
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def component_html_options
|
59
|
-
{
|
59
|
+
{ 'aria-valuenow': value, 'aria-valuemin': min, 'aria-valuemax': max, style: "width: #{value}%", role: 'progressbar' }
|
60
60
|
end
|
61
61
|
|
62
62
|
def striped
|
@@ -60,7 +60,7 @@ module UiBibz::Ui::Core::Notifications::Components
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def close_button
|
63
|
-
content_tag :button, '', class: 'ml-2 mb-1 btn-close',
|
63
|
+
content_tag :button, '', class: 'ml-2 mb-1 btn-close', 'data-bs-dismiss': 'toast', 'aria-label': 'Close'
|
64
64
|
end
|
65
65
|
|
66
66
|
def component_html_classes
|
@@ -47,6 +47,8 @@ module UiBibz::Ui::Core::Notifications
|
|
47
47
|
# ui_glyph("diamond", popover: { title: "My content", position: :right})
|
48
48
|
#
|
49
49
|
class Popover < UiBibz::Ui::Core::Component
|
50
|
+
include UiBibz::Ui::Concerns::NotificationConcern
|
51
|
+
|
50
52
|
# Note that for security reasons the sanitize, sanitizeFn, and allowList
|
51
53
|
# options cannot be supplied using data attributes.
|
52
54
|
# https://getbootstrap.com/docs/5.0/components/popovers/#options
|
@@ -76,12 +78,6 @@ module UiBibz::Ui::Core::Notifications
|
|
76
78
|
end
|
77
79
|
end
|
78
80
|
|
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
81
|
def data_attribute_value(data_attribute)
|
86
82
|
options[data_attribute].is_a?(String) ? options[data_attribute].html_safe : options[data_attribute]
|
87
83
|
end
|
@@ -76,17 +76,33 @@ module UiBibz::Ui::Core::Notifications
|
|
76
76
|
|
77
77
|
# Add Body which is a component
|
78
78
|
def body(content = nil, options = nil, html_options = nil, &block)
|
79
|
-
@body =
|
79
|
+
@body = if @header.nil?
|
80
|
+
content_tag :div, class: 'd-flex' do
|
81
|
+
concat UiBibz::Ui::Core::Notifications::Components::ToastBody.new(content, options, html_options, &block).render
|
82
|
+
concat close_html if (options || {})[:closable]
|
83
|
+
end
|
84
|
+
else
|
85
|
+
UiBibz::Ui::Core::Notifications::Components::ToastBody.new(content, options, html_options, &block).render
|
86
|
+
end
|
80
87
|
end
|
81
88
|
|
82
89
|
private
|
83
90
|
|
91
|
+
def only_body_html
|
92
|
+
@body = UiBibz::Ui::Core::Notifications::Components::ToastBody.new(content, options, html_options, &block).render
|
93
|
+
end
|
94
|
+
|
95
|
+
def close_html
|
96
|
+
content_tag :button, '', type: 'button', class: close_button_classes,
|
97
|
+
'data-bs-dismiss' => 'toast', 'aria-label' => 'Close'
|
98
|
+
end
|
99
|
+
|
84
100
|
def component_html_classes
|
85
|
-
super << ['toast', status, white_text_color]
|
101
|
+
super << ['toast', status, white_text_color, align_items_center]
|
86
102
|
end
|
87
103
|
|
88
104
|
def component_html_options
|
89
|
-
{ role: 'alert',
|
105
|
+
{ role: 'alert', 'aria-live': 'assertive', 'aria-atomic': true }
|
90
106
|
end
|
91
107
|
|
92
108
|
def component_html_data
|
@@ -98,10 +114,24 @@ module UiBibz::Ui::Core::Notifications
|
|
98
114
|
"bg-#{options[:status]}" if options[:status]
|
99
115
|
end
|
100
116
|
|
117
|
+
def align_items_center
|
118
|
+
'align-items-center' if @header.nil?
|
119
|
+
end
|
120
|
+
|
101
121
|
def white_text_color
|
102
122
|
return if options[:status].nil?
|
103
123
|
|
104
124
|
'text-white' unless %i[info warning info light].include?(options[:status])
|
105
125
|
end
|
126
|
+
|
127
|
+
def white_btn_color
|
128
|
+
return if options[:status].nil?
|
129
|
+
|
130
|
+
'btn-close-white' unless %i[info warning info light].include?(options[:status])
|
131
|
+
end
|
132
|
+
|
133
|
+
def close_button_classes
|
134
|
+
UiBibz::Utils::Screwdriver.join_classes('btn-close', 'me-2', 'm-auto', white_btn_color)
|
135
|
+
end
|
106
136
|
end
|
107
137
|
end
|
@@ -48,6 +48,8 @@ module UiBibz::Ui::Core::Notifications
|
|
48
48
|
# ui_glyph("diamond", tooltip: { title: "My content", position: :right})
|
49
49
|
#
|
50
50
|
class Tooltip < UiBibz::Ui::Core::Component
|
51
|
+
include UiBibz::Ui::Concerns::NotificationConcern
|
52
|
+
|
51
53
|
# Note that for security reasons the sanitize, sanitizeFn, and allowList
|
52
54
|
# options cannot be supplied using data attributes.
|
53
55
|
# https://getbootstrap.com/docs/5.0/components/tooltips/#options
|
@@ -76,12 +78,6 @@ module UiBibz::Ui::Core::Notifications
|
|
76
78
|
end
|
77
79
|
end
|
78
80
|
|
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
81
|
def data_attribute_value(data_attribute)
|
86
82
|
options[data_attribute].is_a?(String) ? options[data_attribute].html_safe : options[data_attribute]
|
87
83
|
end
|