Skip to content

Commit fd8f8f9

Browse files
committed
Rename collapsed to start_collapsed, remove backward compat, drop animation
- Rename `collapsed:` option to `start_collapsed:` for clarity - Remove deprecated `collapsed: true` backward compatibility (v3 breaking change) - Raise ArgumentError with migration instructions for old option - Remove CSS transitions on sidebar collapse/expand - Update all specs and test app resources
1 parent d3a0bb1 commit fd8f8f9

4 files changed

Lines changed: 40 additions & 60 deletions

File tree

app/assets/stylesheets/active_admin_sidebar.scss

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,6 @@ body.active_admin {
5252
body.active_admin #active_admin_content.collapsible_sidebar {
5353
#sidebar {
5454
position: relative;
55-
transition: width 0.25s ease, margin-left 0.25s ease;
56-
}
57-
58-
#main_content_wrapper #main_content {
59-
transition: margin 0.25s ease;
60-
}
61-
62-
#main_content_wrapper {
63-
transition: margin 0.25s ease;
6455
}
6556

6657
.sidebar_toggle_btn {

lib/active_admin_sidebar/positions.rb

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,39 +3,40 @@ module Positions
33
def left_sidebar!(options = {})
44
@sidebar_options = { position: :left }
55

6-
collapsible = options.fetch(:collapsible, false)
7-
collapsed = options.fetch(:collapsed, false)
8-
9-
# Backward compatibility: `collapsed: true` without `collapsible:` means collapsible (not start-collapsed)
10-
if collapsed && !options.key?(:collapsible)
11-
collapsible = true
12-
collapsed = false
13-
ActiveSupport::Deprecation.warn(
14-
"left_sidebar!(collapsed: true) is deprecated. " \
15-
"Use left_sidebar!(collapsible: true) instead, or " \
16-
"left_sidebar!(collapsible: true, collapsed: true) to start collapsed."
17-
)
18-
end
6+
validate_sidebar_options!(options)
7+
8+
collapsible = options.fetch(:collapsible, false)
9+
start_collapsed = options.fetch(:start_collapsed, false)
1910

20-
apply_collapsible_options(collapsible, collapsed) if collapsible
11+
apply_collapsible_options(start_collapsed) if collapsible
2112
end
2213

2314
def right_sidebar!(options = {})
2415
@sidebar_options = { position: :right }
2516

26-
collapsible = options.fetch(:collapsible, false)
27-
collapsed = options.fetch(:collapsed, false)
17+
validate_sidebar_options!(options)
18+
19+
collapsible = options.fetch(:collapsible, false)
20+
start_collapsed = options.fetch(:start_collapsed, false)
2821

29-
apply_collapsible_options(collapsible, collapsed) if collapsible
22+
apply_collapsible_options(start_collapsed) if collapsible
3023
end
3124

3225
private
3326

34-
def apply_collapsible_options(collapsible, collapsed)
27+
def validate_sidebar_options!(options)
28+
if options.key?(:collapsed)
29+
raise ArgumentError,
30+
"The :collapsed option has been removed in v3. " \
31+
"Use `collapsible: true, start_collapsed: true` instead."
32+
end
33+
end
34+
35+
def apply_collapsible_options(start_collapsed)
3536
session_key = :"collapsed_sidebar_#{controller_name}"
3637
handle_collapsed_sidebar_request(session_key)
3738
is_collapsed = if session[session_key].nil?
38-
collapsed
39+
start_collapsed
3940
else
4041
session[session_key]
4142
end

spec/sidebars_spec.rb

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@
5454

5555
end
5656

57-
context 'left-sidebar with collapsible: true, collapsed: true (starts collapsed)' do
57+
context 'left-sidebar with collapsible: true, start_collapsed: true' do
5858
before do
59-
add_author_resource_with_collapsed
59+
add_author_resource_with_start_collapsed
6060
add_post_resource
6161
visit '/admin/authors'
6262
end
@@ -79,16 +79,17 @@
7979
end
8080
end
8181

82-
context 'backward compatibility: left-sidebar with collapsed: true (old API)' do
83-
before do
84-
add_author_resource_with_old_api
85-
add_post_resource
86-
visit '/admin/authors'
82+
context 'deprecated collapsed option raises error' do
83+
it 'raises ArgumentError for left_sidebar!' do
84+
obj = Object.new
85+
obj.extend(ActiveAdminSidebar::Positions)
86+
expect { obj.left_sidebar!(collapsed: true) }.to raise_error(ArgumentError, /removed in v3/)
8787
end
8888

89-
it 'still works as collapsible sidebar' do
90-
expect(page).to have_css('#active_admin_content.collapsible_sidebar')
91-
expect(page).to have_css('.sidebar_toggle_btn')
89+
it 'raises ArgumentError for right_sidebar!' do
90+
obj = Object.new
91+
obj.extend(ActiveAdminSidebar::Positions)
92+
expect { obj.right_sidebar!(collapsed: true) }.to raise_error(ArgumentError, /removed in v3/)
9293
end
9394
end
9495

@@ -125,15 +126,15 @@
125126

126127
page.find('.sidebar_toggle_btn').click
127128

128-
expect(page).to have_css('#sidebar .sidebar_section', visible: :visible)
129129
expect(page).not_to have_css('#active_admin_content.collapsed_sidebar')
130+
expect(page).to have_css('#sidebar .sidebar_section', visible: :visible)
130131
end
131132
end
132133
end
133134

134-
context 'right-sidebar with collapsible: true, collapsed: true (starts collapsed)' do
135+
context 'right-sidebar with collapsible: true, start_collapsed: true' do
135136
before do
136-
add_author_resource_right_sidebar_collapsed
137+
add_author_resource_right_sidebar_start_collapsed
137138
add_post_resource
138139
visit '/admin/authors'
139140
end
@@ -159,12 +160,12 @@
159160
context 'per-resource sidebar state isolation' do
160161
before do
161162
Post.create!(title: 'Test', body: 'Body', author: Author.first)
162-
add_author_resource_with_collapsed
163+
add_author_resource_with_start_collapsed
163164
add_post_resource_with_sidebar
164165
end
165166

166167
it 'changing sidebar state on one resource does not affect another' do
167-
# Authors starts collapsed (collapsible: true, collapsed: true)
168+
# Authors starts collapsed (collapsible: true, start_collapsed: true)
168169
visit '/admin/authors'
169170
expect(page).to have_css('#active_admin_content.collapsed_sidebar')
170171

spec/support/admin.rb

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,12 @@ def add_author_resource(options = {}, &block)
88

99
end
1010

11-
def add_author_resource_with_collapsed(options = {}, &block)
11+
def add_author_resource_with_start_collapsed(options = {}, &block)
1212

1313
ActiveAdmin.register Author do
1414
config.filters = true
1515
before_action do
16-
left_sidebar!(collapsible: true, collapsed: true)
17-
end
18-
end
19-
20-
Rails.application.reload_routes!
21-
22-
end
23-
24-
def add_author_resource_with_old_api(options = {}, &block)
25-
26-
ActiveAdmin.register Author do
27-
config.filters = true
28-
before_action do
29-
left_sidebar!(collapsed: true)
16+
left_sidebar!(collapsible: true, start_collapsed: true)
3017
end
3118
end
3219

@@ -47,12 +34,12 @@ def add_author_resource_right_sidebar(options = {}, &block)
4734

4835
end
4936

50-
def add_author_resource_right_sidebar_collapsed(options = {}, &block)
37+
def add_author_resource_right_sidebar_start_collapsed(options = {}, &block)
5138

5239
ActiveAdmin.register Author do
5340
config.filters = true
5441
before_action do
55-
right_sidebar!(collapsible: true, collapsed: true)
42+
right_sidebar!(collapsible: true, start_collapsed: true)
5643
end
5744
end
5845

0 commit comments

Comments
 (0)