active_admin_sidebar 0.1.0.rc3 → 1.0.0
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 +5 -5
- data/Gemfile +17 -2
- data/README.md +42 -28
- data/Rakefile +7 -1
- data/app/assets/javascripts/active_admin_sidebar.coffee +2 -0
- data/lib/active_admin_sidebar/positions.rb +1 -1
- data/lib/active_admin_sidebar/version.rb +1 -1
- data/spec/sidebars_spec.rb +53 -0
- data/spec/spec_helper.rb +68 -0
- data/spec/support/admin.rb +21 -0
- data/spec/support/rails_template.rb +43 -0
- data/tasks/test.rake +6 -0
- metadata +15 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b58bcf234d2f317dcd23d5a57dd77795136ffb7f2758de981514d82163077d90
|
4
|
+
data.tar.gz: 895b88d334f9306b5caeffaed1bb9440478d25e9c1873c75d498d70365088847
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d0d6dbc10f05fa74875dd6b07174f812ce5598aec325e37b4d4b45494a5d79a4341b4117b1736849418d1f6be5c677d83da223180a8f35b89002c390e0b923a8
|
7
|
+
data.tar.gz: 1c4a3c24433bdbcd00bd83afe25a4e01db120059f32ad532cde52aea31d522d239b34457f83e3193c9f005b445442bfe8e970baba37afcb347b535014aa229e1
|
data/Gemfile
CHANGED
@@ -1,4 +1,19 @@
|
|
1
|
-
source
|
2
|
-
# Specify your gem's dependencies in active_admin_sidebar.gemspec
|
1
|
+
source 'https://rubygems.org'
|
3
2
|
|
3
|
+
# Specify your gem's dependencies in activeadmin_scoped_collection_actions.gemspec
|
4
4
|
gemspec
|
5
|
+
|
6
|
+
group :test do
|
7
|
+
gem 'sprockets-rails', '3.2.0'
|
8
|
+
gem 'rails', '5.1.1'
|
9
|
+
gem 'turbolinks'
|
10
|
+
gem 'rspec-rails'
|
11
|
+
gem 'activeadmin', '1.0.0'
|
12
|
+
gem 'sass-rails'
|
13
|
+
gem 'sqlite3'
|
14
|
+
gem 'launchy'
|
15
|
+
gem 'database_cleaner'
|
16
|
+
gem 'capybara'
|
17
|
+
gem 'selenium-webdriver'
|
18
|
+
gem 'poltergeist'
|
19
|
+
end
|
data/README.md
CHANGED
@@ -1,63 +1,81 @@
|
|
1
|
-
#
|
1
|
+
# ActiveAdmin Sidebar
|
2
2
|
|
3
|
-
Provides ability to manipulate sidebar position
|
3
|
+
Provides ability to manipulate sidebar position for ActiveAdmin (tested with ActiveAdmin ~> 1.0.0)
|
4
4
|
|
5
|
+
## Install
|
5
6
|
|
6
|
-
|
7
|
+
```ruby
|
8
|
+
gem 'active_admin_sidebar'
|
9
|
+
# or latest from GitHub
|
10
|
+
gem 'active_admin_sidebar', git: 'https://github.com/activeadmin-plugins/active_admin_sidebar.git'
|
11
|
+
```
|
12
|
+
|
13
|
+
Add including of CSS file
|
7
14
|
|
8
15
|
```scss
|
9
|
-
@import "active_admin_sidebar";
|
16
|
+
@import "active_admin_sidebar";
|
10
17
|
```
|
11
18
|
|
12
19
|
to the
|
13
|
-
```
|
14
|
-
app/assets/stylesheets/active_admin.css.scss
|
20
|
+
```
|
21
|
+
app/assets/stylesheets/active_admin.css.scss
|
15
22
|
```
|
16
23
|
|
17
24
|
And including of coffee file (optional, need only for collapsed sidebar)
|
18
25
|
|
19
|
-
```
|
20
|
-
|
26
|
+
```coffeescript
|
27
|
+
#= require active_admin_sidebar
|
21
28
|
```
|
22
29
|
|
23
30
|
to the
|
24
|
-
|
31
|
+
|
32
|
+
```scss
|
25
33
|
app/assets/javascripts/active_admin.js
|
26
34
|
```
|
27
35
|
|
28
|
-
|
36
|
+
# Configuration per resource
|
37
|
+
|
38
|
+
Changing sidebar position dynamically with before_action
|
39
|
+
|
29
40
|
```ruby
|
30
41
|
# app/admin/posts.rb
|
31
42
|
ActiveAdmin.register Post do
|
32
|
-
|
43
|
+
before_action :left_sidebar!, only: [:show]
|
33
44
|
end
|
34
45
|
|
35
46
|
# app/admin/comments.rb
|
36
47
|
ActiveAdmin.register Comment do
|
37
|
-
|
48
|
+
before_action :right_sidebar!
|
38
49
|
end
|
39
50
|
```
|
40
51
|
|
52
|
+
## Global configuration
|
41
53
|
|
42
|
-
Moving sidebar to the left within all resource
|
54
|
+
Moving sidebar to the left within all resource. Set configuration in `config/initializers/active_admin.rb`
|
43
55
|
|
44
56
|
```ruby
|
45
|
-
# == Controller
|
57
|
+
# == Controller before-actions
|
46
58
|
#
|
47
|
-
# You can add before, after and around
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
end
|
59
|
+
# You can add before, after and around actions to all of your resources
|
60
|
+
ActiveAdmin.setup do |config|
|
61
|
+
config.before_action do
|
62
|
+
left_sidebar! if respond_to?(:left_sidebar!)
|
63
|
+
end
|
64
|
+
end
|
53
65
|
```
|
54
66
|
|
55
|
-
|
67
|
+
## Collapsing sidebar
|
68
|
+
|
69
|
+
You can use sidebar collapsing.
|
70
|
+
It will add "hide/show" button. Shown/Hidden state is persisted across all pages.
|
71
|
+
|
56
72
|
```ruby
|
57
73
|
left_sidebar!(collapsed: true)
|
58
74
|
```
|
59
|
-
|
60
|
-
|
75
|
+
|
76
|
+
You can override button color according to your color theme. For example:
|
77
|
+
|
78
|
+
```scss
|
61
79
|
body.active_admin {
|
62
80
|
#active_admin_content.left_sidebar, #active_admin_content.collapsed_sidebar {
|
63
81
|
.collapse_btn, .uncollapse_btn {
|
@@ -69,8 +87,4 @@ You can override button color according to your color theme:
|
|
69
87
|
|
70
88
|
Example
|
71
89
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
90
|
+

|
data/Rakefile
CHANGED
@@ -17,7 +17,9 @@ $(document).ready ->
|
|
17
17
|
set_collapsed_sidebar(true)
|
18
18
|
$aa_content.removeClass('left_sidebar')
|
19
19
|
$aa_content.addClass('collapsed_sidebar')
|
20
|
+
$aa_content.trigger('collapsible_sidebar:collapsed')
|
20
21
|
else
|
21
22
|
set_collapsed_sidebar(false)
|
22
23
|
$aa_content.removeClass('collapsed_sidebar')
|
23
24
|
$aa_content.addClass('left_sidebar')
|
25
|
+
$aa_content.trigger('collapsible_sidebar:uncollapsed')
|
@@ -18,7 +18,7 @@ module ActiveAdminSidebar
|
|
18
18
|
def collapsed_sidebar
|
19
19
|
if request.xhr?
|
20
20
|
if params[:collapsed_sidebar].present?
|
21
|
-
collapsed =
|
21
|
+
collapsed = params[:collapsed_sidebar].to_s == 'true'
|
22
22
|
session[:collapsed_sidebar] = collapsed
|
23
23
|
render json: { collapsed_sidebar: collapsed } and return
|
24
24
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'authors index', type: :feature, js: true do
|
4
|
+
|
5
|
+
before do
|
6
|
+
Author.create!(name: 'John', last_name: 'Doe')
|
7
|
+
Author.create!(name: 'Jane', last_name: 'Roe')
|
8
|
+
add_author_resource
|
9
|
+
add_post_resource
|
10
|
+
end
|
11
|
+
|
12
|
+
context 'left-sidebar with default settings' do
|
13
|
+
before do
|
14
|
+
visit '/admin/authors'
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'has left-sidebar with colapse-button' do
|
18
|
+
expect(page).to have_css('#filters_sidebar_section')
|
19
|
+
expect(page).to have_css('#filters_sidebar_section .collapse_btn.icono-caret-left')
|
20
|
+
expect(page).to have_css('#active_admin_content.with_sidebar.left_sidebar.collapsible_sidebar')
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when click on Collapse' do
|
24
|
+
before do
|
25
|
+
page.find('#filters_sidebar_section .collapse_btn').click
|
26
|
+
end
|
27
|
+
|
28
|
+
it "sidebar is hidden, and save it's state after going to another page" do
|
29
|
+
expect(page).to have_css('#sidebar', visible: :hidden)
|
30
|
+
|
31
|
+
# Posts page is configured as: "before_action :skip_sidebar!"
|
32
|
+
visit '/admin/posts'
|
33
|
+
# sidebar does not exists at all
|
34
|
+
expect(page).to have_css('#page_title', text: 'Posts')
|
35
|
+
expect(page).not_to have_css('#sidebar', visible: :all)
|
36
|
+
|
37
|
+
visit '/admin/authors'
|
38
|
+
# sidebar is hidden
|
39
|
+
expect(page).to have_css('#page_title', text: 'Authors')
|
40
|
+
expect(page).to have_css('#sidebar', visible: :hidden)
|
41
|
+
|
42
|
+
page.find('.uncollapse_btn').click
|
43
|
+
|
44
|
+
# sidebar is visible
|
45
|
+
expect(page).to have_css('#sidebar', visible: :visible)
|
46
|
+
expect(page).to have_css('.collapse_btn')
|
47
|
+
expect(page).not_to have_css('.uncollapse_btn')
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
|
+
$LOAD_PATH << File.expand_path('../support', __FILE__)
|
3
|
+
|
4
|
+
ENV['BUNDLE_GEMFILE'] = File.expand_path('../../Gemfile', __FILE__)
|
5
|
+
require "bundler"
|
6
|
+
Bundler.setup
|
7
|
+
|
8
|
+
ENV['RAILS_ENV'] = 'test'
|
9
|
+
# Ensure the Active Admin load path is happy
|
10
|
+
require 'rails'
|
11
|
+
ENV['RAILS'] = Rails.version
|
12
|
+
ENV['RAILS_ROOT'] = File.expand_path("../rails/rails-#{ENV['RAILS']}", __FILE__)
|
13
|
+
# Create the test app if it doesn't exists
|
14
|
+
unless File.exists?(ENV['RAILS_ROOT'])
|
15
|
+
system 'rake setup'
|
16
|
+
end
|
17
|
+
|
18
|
+
require 'active_model'
|
19
|
+
# require ActiveRecord to ensure that Ransack loads correctly
|
20
|
+
require 'active_record'
|
21
|
+
require 'active_admin'
|
22
|
+
ActiveAdmin.application.load_paths = [ENV['RAILS_ROOT'] + "/app/admin"]
|
23
|
+
require ENV['RAILS_ROOT'] + '/config/environment.rb'
|
24
|
+
# Disabling authentication in specs so that we don't have to worry about
|
25
|
+
# it allover the place
|
26
|
+
ActiveAdmin.application.authentication_method = false
|
27
|
+
ActiveAdmin.application.current_user_method = false
|
28
|
+
|
29
|
+
require 'rspec/rails'
|
30
|
+
require 'support/admin'
|
31
|
+
require 'capybara/rails'
|
32
|
+
require 'capybara/rspec'
|
33
|
+
require 'capybara/poltergeist'
|
34
|
+
|
35
|
+
|
36
|
+
RSpec.configure do |config|
|
37
|
+
config.use_transactional_fixtures = false
|
38
|
+
|
39
|
+
config.before(:suite) do
|
40
|
+
DatabaseCleaner.strategy = :truncation
|
41
|
+
DatabaseCleaner.clean_with(:truncation)
|
42
|
+
end
|
43
|
+
config.before(:each) do
|
44
|
+
DatabaseCleaner.strategy = :truncation
|
45
|
+
DatabaseCleaner.start
|
46
|
+
end
|
47
|
+
config.after(:each) do
|
48
|
+
DatabaseCleaner.clean
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
# RSpec.configure do |config|
|
54
|
+
# config.before(:each, js: true) do
|
55
|
+
# page.driver.browser.manage.window.maximize if page.driver.browser.respond_to?(:manage)
|
56
|
+
# end
|
57
|
+
# end
|
58
|
+
# Capybara.javascript_driver = :selenium
|
59
|
+
|
60
|
+
Capybara.register_driver :poltergeist do |app|
|
61
|
+
Capybara::Poltergeist::Driver.new(app, {
|
62
|
+
js_errors: true,
|
63
|
+
timeout: 80,
|
64
|
+
debug: true,
|
65
|
+
:phantomjs_options => ['--debug=no', '--load-images=no']
|
66
|
+
})
|
67
|
+
end
|
68
|
+
Capybara.javascript_driver = :poltergeist
|
@@ -0,0 +1,21 @@
|
|
1
|
+
def add_author_resource(options = {}, &block)
|
2
|
+
|
3
|
+
ActiveAdmin.register Author do
|
4
|
+
config.filters = true
|
5
|
+
end
|
6
|
+
|
7
|
+
Rails.application.reload_routes!
|
8
|
+
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
def add_post_resource(options = {}, &block)
|
13
|
+
|
14
|
+
ActiveAdmin.register Post do
|
15
|
+
config.filters = true
|
16
|
+
before_action :skip_sidebar!
|
17
|
+
end
|
18
|
+
|
19
|
+
Rails.application.reload_routes!
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# Rails template to build the sample app for specs
|
2
|
+
|
3
|
+
generate :model, 'author name:string{10}:uniq last_name:string birthday:date'
|
4
|
+
generate :model, 'post title:string:uniq body:text author:references'
|
5
|
+
|
6
|
+
#Add validation
|
7
|
+
inject_into_file "app/models/author.rb", " validates_presence_of :name\n validates_uniqueness_of :last_name\n", after: "Base\n"
|
8
|
+
inject_into_file "app/models/post.rb", " validates_presence_of :author\n", after: ":author\n"
|
9
|
+
|
10
|
+
# Configure default_url_options in test environment
|
11
|
+
inject_into_file "config/environments/test.rb", " config.action_mailer.default_url_options = { :host => 'example.com' }\n", after: "config.cache_classes = true\n"
|
12
|
+
|
13
|
+
# Add our local Active Admin to the load path
|
14
|
+
inject_into_file "config/environment.rb",
|
15
|
+
"\n$LOAD_PATH.unshift('#{File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'lib'))}')\nrequire \"active_admin\"\n",
|
16
|
+
after: "require File.expand_path('../application', __FILE__)"
|
17
|
+
|
18
|
+
run "rm Gemfile"
|
19
|
+
|
20
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
21
|
+
|
22
|
+
generate :'active_admin:install --skip-users'
|
23
|
+
generate :'formtastic:install'
|
24
|
+
|
25
|
+
# Initialize plugin
|
26
|
+
inject_into_file "config/initializers/active_admin.rb",
|
27
|
+
" config.before_action do\n left_sidebar!(collapsed: true) if respond_to?(:left_sidebar!)\n end\n\n",
|
28
|
+
after: "ActiveAdmin.setup do |config|\n"
|
29
|
+
|
30
|
+
inject_into_file "app/assets/stylesheets/active_admin.scss",
|
31
|
+
"@import \"active_admin_sidebar\";\n",
|
32
|
+
after: "@import \"active_admin/base\";\n"
|
33
|
+
|
34
|
+
inject_into_file "app/assets/javascripts/active_admin.js.coffee",
|
35
|
+
"#= require active_admin_sidebar\n",
|
36
|
+
after: "#= require active_admin/base\n"
|
37
|
+
|
38
|
+
run "rm -r test"
|
39
|
+
run "rm -r spec"
|
40
|
+
|
41
|
+
route "root :to => 'admin/dashboard#index'"
|
42
|
+
|
43
|
+
rake "db:migrate"
|
data/tasks/test.rake
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
desc "Creates a test rails app for the specs to run against"
|
2
|
+
task :setup do
|
3
|
+
require 'rails/version'
|
4
|
+
system("mkdir spec/rails") unless File.exists?("spec/rails")
|
5
|
+
system "bundle exec rails new spec/rails/rails-#{Rails::VERSION::STRING} -m spec/support/rails_template.rb --skip-spring"
|
6
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_admin_sidebar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Igor
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activeadmin
|
@@ -44,6 +44,11 @@ files:
|
|
44
44
|
- lib/active_admin_sidebar/positions.rb
|
45
45
|
- lib/active_admin_sidebar/version.rb
|
46
46
|
- screen/sidebar.jpg
|
47
|
+
- spec/sidebars_spec.rb
|
48
|
+
- spec/spec_helper.rb
|
49
|
+
- spec/support/admin.rb
|
50
|
+
- spec/support/rails_template.rb
|
51
|
+
- tasks/test.rake
|
47
52
|
homepage: https://github.com/Fivell/active_admin_sidebar
|
48
53
|
licenses: []
|
49
54
|
metadata: {}
|
@@ -58,14 +63,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
58
63
|
version: '0'
|
59
64
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
65
|
requirements:
|
61
|
-
- - "
|
66
|
+
- - ">="
|
62
67
|
- !ruby/object:Gem::Version
|
63
|
-
version:
|
68
|
+
version: '0'
|
64
69
|
requirements: []
|
65
70
|
rubyforge_project:
|
66
|
-
rubygems_version: 2.
|
71
|
+
rubygems_version: 2.7.7
|
67
72
|
signing_key:
|
68
73
|
specification_version: 4
|
69
74
|
summary: active_admin_sidebar gem
|
70
|
-
test_files:
|
71
|
-
|
75
|
+
test_files:
|
76
|
+
- spec/sidebars_spec.rb
|
77
|
+
- spec/spec_helper.rb
|
78
|
+
- spec/support/admin.rb
|
79
|
+
- spec/support/rails_template.rb
|