Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
## [Unreleased]
* no unreleased changes *
* fix cancel modal button
* re-introdce `btn-default` style
* fix `bootstrap_tab_nav_tag` helper method with required classes
* allow more padding at the end for `bootstrap_list_badge_and_link_to`
* fix offset class name in line with Bootstrap 5 upgrade
* fix `bootstrap_alert_tag` style with close button option


## 5.0.0 / 2025-01-24
### Changed
Expand Down
6 changes: 6 additions & 0 deletions app/assets/stylesheets/ndr_ui/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,9 @@ $bootstrap-icons-font-dir: ".";
border:0;
}
}

// Bootstrap don't have btn-default anymore
// however, we keep btn-default in codebase/helpers and set global default setting here.
.btn-default {
@extend .btn-outline-secondary;
}
2 changes: 1 addition & 1 deletion app/helpers/ndr_ui/bootstrap/modal_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ def bootstrap_modal_save_buttons
end

def bootstrap_modal_button(label)
button_tag(label, class: 'btn btn-default', 'data-bs-dismiss': 'modal')
button_tag(label, type: 'button', class: 'btn btn-default', 'data-bs-dismiss': 'modal')
end

private
Expand Down
20 changes: 11 additions & 9 deletions app/helpers/ndr_ui/bootstrap_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ def select_tag(name, option_tags = nil, options = {})
# <%= bootstrap_alert_tag(:info) do %>
# Check it out!!
# <% end %>
# # => <div class="alert alert-info"><button type="button" class="btn-close"
# data-bs-dismiss="alert"></button>Check it out!!</div>
# # => <div class="alert alert-info">Check it out!!
# <button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>
#
# Ids for css and/or javascript are easy to produce:
#
Expand All @@ -79,7 +79,7 @@ def bootstrap_alert_tag(*args, &block)
options['class'] = classes.join(' ')

if options.delete('dismissible')
message = button_tag('', type: 'button', class: 'btn-close', 'data-bs-dismiss': 'alert') + message
message = message.html_safe + button_tag('', type: 'button', class: 'btn-close', 'data-bs-dismiss': 'alert')
end
content_tag(:div, message, options)
end
Expand Down Expand Up @@ -203,16 +203,18 @@ def bootstrap_icon_spinner(type = :default)
# ==== Examples
#
# <%= bootstrap_tab_nav_tag("Fruits", "#fruits", true) %>
# # => <li class="active"><a href="#fruits" data-bs-toggle="tab">Fruits</a></li>
# # => <li class="nav-item"><a class="nav-link active" href="#fruits" data-bs-toggle="tab">Fruits</a></li>
def bootstrap_tab_nav_tag(title, linkto, active = false)
content_tag('li',
link_to(title, linkto, 'data-bs-toggle': 'tab'),
active ? { class: 'active' } : {})
link_to(title, linkto, 'data-bs-toggle': 'tab', class: "nav-link#{active ? ' active' : ''}"),
class: 'nav-item')
end

# Convenience wrapper for a bootstrap_list_link_to with badge
def bootstrap_list_badge_and_link_to(type, count, name, path)
html = content_tag(:div, bootstrap_badge_tag(type, count), class: 'float-end') + name
html = content_tag(:div, bootstrap_badge_tag(type, count), class: 'float-end') +
content_tag(:div, name, class: 'pe-5')

bootstrap_list_link_to(html, path)
end

Expand Down Expand Up @@ -306,7 +308,7 @@ def bootstrap_form_with(**options, &block)
# <%= button_control_group("Apples", class: "some_class") %>
# # =>
# <div class="form-group">
# <div class="col-sm-9 col-sm-offset-3">
# <div class="col-sm-9 offset-sm-3">
# <div class="some_class">Apples</div>
# </div>
# </div>
Expand Down Expand Up @@ -386,7 +388,7 @@ def bootstrap_progressbar_tag(*args)
#
def bootstrap_horizontal_form_group(label = nil, ratio = [2, 10], &block)
l, r = ratio[0..1].map(&:to_i)
offset = label.nil? ? " col-sm-offset-#{l}" : ''
offset = label.nil? ? " offset-sm-#{l}" : ''

# Main content:
content = content_tag(:div, class: "col-sm-#{r}" + offset, &block)
Expand Down
38 changes: 19 additions & 19 deletions test/helpers/ndr_ui/bootstrap_helper_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,17 @@ module NdrUi
# Test bootstrap helpers
class BootstrapHelperTest < ActionView::TestCase
test 'bootstrap_alert_tag with message parameter' do
assert_dom_equal '<div class="alert alert-danger alert-dismissible">' \
assert_dom_equal '<div class="alert alert-danger alert-dismissible">Apples' \
'<button name="button" type="button" class="btn-close" data-bs-dismiss="alert"></button>' \
'Apples</div>',
'</div>',
bootstrap_alert_tag(:danger, 'Apples')
assert_dom_equal '<div class="alert alert-warning alert-dismissible">' \
assert_dom_equal '<div class="alert alert-warning alert-dismissible">Apples' \
'<button name="button" type="button" class="btn-close" data-bs-dismiss="alert"></button>' \
'Apples</div>',
'</div>',
bootstrap_alert_tag(:warning, 'Apples')
assert_dom_equal '<div class="alert alert-info alert-dismissible">' \
assert_dom_equal '<div class="alert alert-info alert-dismissible">Apples' \
'<button name="button" type="button" class="btn-close" data-bs-dismiss="alert"></button>' \
'Apples</div>',
'</div>',
bootstrap_alert_tag(:info, 'Apples')
assert_dom_equal '<div class="alert alert-success alert-dismissible">' \
'<button name="button" type="button" class="btn-close" data-bs-dismiss="alert"></button>' \
Expand All @@ -28,15 +28,15 @@ class BootstrapHelperTest < ActionView::TestCase
'<button name="button" type="button" class="btn-close" data-bs-dismiss="alert"></button>' \
'</div>',
bootstrap_alert_tag(:success, '')
assert_dom_equal '<div class="alert alert-warning alert-dismissible">' \
assert_dom_equal '<div class="alert alert-warning alert-dismissible">Apples' \
'<button name="button" type="button" class="btn-close" data-bs-dismiss="alert"></button>' \
'Apples</div>',
'</div>',
bootstrap_alert_tag(:warning, 'Apples', dismissible: true)
assert_dom_equal '<div class="alert alert-warning">Apples</div>',
bootstrap_alert_tag(:warning, 'Apples', dismissible: false)
assert_dom_equal '<div id="apple_123" class="alert alert-warning alert-dismissible">' \
assert_dom_equal '<div id="apple_123" class="alert alert-warning alert-dismissible">Apples' \
'<button name="button" type="button" class="btn-close" data-bs-dismiss="alert"></button>' \
'Apples</div>',
'</div>',
bootstrap_alert_tag(:warning, 'Apples', dismissible: true, id: 'apple_123')
assert_dom_equal '<div id="apple_123" class="alert alert-warning">Apples</div>',
bootstrap_alert_tag(:warning, 'Apples', dismissible: false, id: 'apple_123')
Expand All @@ -45,9 +45,9 @@ class BootstrapHelperTest < ActionView::TestCase
end

test 'bootstrap_alert_tag with message block' do
assert_dom_equal '<div class="alert alert-info alert-dismissible">' \
assert_dom_equal '<div class="alert alert-info alert-dismissible">Pears' \
'<button name="button" type="button" class="btn-close" data-bs-dismiss="alert"></button>' \
'Pears</div>',
'</div>',
bootstrap_alert_tag(:info) { 'Pears' }

assert_dom_equal '<div class="alert alert-danger alert-dismissible">' \
Expand Down Expand Up @@ -121,11 +121,11 @@ class BootstrapHelperTest < ActionView::TestCase
end

test 'bootstrap_tab_nav_tag' do
assert_dom_equal '<li><a href="#fruits" data-bs-toggle="tab">Fruits</a></li>',
assert_dom_equal '<li class="nav-item"><a class="nav-link" href="#fruits" data-bs-toggle="tab">Fruits</a></li>',
bootstrap_tab_nav_tag('Fruits', '#fruits')
assert_dom_equal '<li><a href="#fruits" data-bs-toggle="tab">Fruits</a></li>',
assert_dom_equal '<li class="nav-item"><a class="nav-link" href="#fruits" data-bs-toggle="tab">Fruits</a></li>',
bootstrap_tab_nav_tag('Fruits', '#fruits', false)
assert_dom_equal '<li class="active"><a href="#fruits" data-bs-toggle="tab">Fruits</a></li>',
assert_dom_equal '<li class="nav-item"><a class="nav-link active" href="#fruits" data-bs-toggle="tab">Fruits</a></li>',
bootstrap_tab_nav_tag('Fruits', '#fruits', true)
end

Expand All @@ -135,7 +135,7 @@ class BootstrapHelperTest < ActionView::TestCase
refute current_page?(inbox_path)

html = content_tag(:div, bootstrap_badge_tag(:important, 99), class: 'float-end')
html += 'Inbox'
html += content_tag(:div, 'Inbox', class: 'pe-5')
assert_dom_equal content_tag(:li, link_to(html, inbox_path, class: 'dropdown-item')),
bootstrap_list_badge_and_link_to(:important, 99, 'Inbox', inbox_path)
end
Expand Down Expand Up @@ -298,14 +298,14 @@ class BootstrapHelperTest < ActionView::TestCase
# TODO: bootstrap_pagination_tag(*args, &block)

test 'button_control_group' do
assert_dom_equal '<div class="form-group"><div class="col-sm-9 col-sm-offset-3">' \
assert_dom_equal '<div class="form-group"><div class="col-sm-9 offset-sm-3">' \
'Apples</div></div>',
button_control_group('Apples')

html = button_control_group(class: 'some_class') do
'Pears'
end
assert_dom_equal '<div class="form-group"><div class="col-sm-9 col-sm-offset-3">' \
assert_dom_equal '<div class="form-group"><div class="col-sm-9 offset-sm-3">' \
'<div class="some_class">Pears</div></div></div>',
html

Expand Down Expand Up @@ -346,7 +346,7 @@ class BootstrapHelperTest < ActionView::TestCase

# Test with no label:
actual = bootstrap_horizontal_form_group { 'This is the content' }
expected = '<div class="form-group"><div class="col-sm-10 col-sm-offset-2">' \
expected = '<div class="form-group"><div class="col-sm-10 offset-sm-2">' \
'This is the content</div></div>'
assert_dom_equal expected, actual
end
Expand Down
Loading