activeadmin 2.5.0 → 2.7.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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +59 -2
  3. data/CONTRIBUTING.md +10 -40
  4. data/README.md +2 -2
  5. data/app/assets/javascripts/active_admin/base.js +13 -3
  6. data/app/assets/stylesheets/active_admin/_header.scss +37 -3
  7. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +3 -0
  8. data/app/javascript/active_admin/base.js +9 -0
  9. data/app/views/layouts/active_admin_logged_out.html.erb +15 -5
  10. data/config/locales/en-CA.yml +3 -3
  11. data/config/locales/en-GB.yml +3 -3
  12. data/config/locales/en.yml +3 -3
  13. data/config/locales/es.yml +3 -3
  14. data/config/locales/fr.yml +4 -4
  15. data/config/locales/lv.yml +2 -2
  16. data/config/locales/vi.yml +6 -5
  17. data/docs/0-installation.md +26 -2
  18. data/docs/2-resource-customization.md +10 -1
  19. data/docs/3-index-pages.md +1 -1
  20. data/docs/9-batch-actions.md +2 -2
  21. data/docs/Gemfile.lock +71 -72
  22. data/docs/_includes/top-menu.html +1 -1
  23. data/docs/documentation.md +1 -1
  24. data/docs/index.html +6 -6
  25. data/lib/active_admin/csv_builder.rb +7 -3
  26. data/lib/active_admin/inputs/filters/date_range_input.rb +12 -9
  27. data/lib/active_admin/localizers/resource_localizer.rb +1 -1
  28. data/lib/active_admin/menu.rb +5 -2
  29. data/lib/active_admin/namespace_settings.rb +3 -0
  30. data/lib/active_admin/resource/naming.rb +1 -1
  31. data/lib/active_admin/version.rb +1 -1
  32. data/lib/active_admin/views/components/scopes.rb +2 -0
  33. data/lib/active_admin/views/components/table_for.rb +1 -1
  34. data/lib/active_admin/views/pages/base.rb +8 -4
  35. data/lib/generators/active_admin/install/install_generator.rb +7 -1
  36. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +7 -0
  37. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  38. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  39. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  40. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  41. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +26 -0
  42. metadata +8 -3
@@ -154,13 +154,13 @@ batch_action :doit, form: -> { {user: User.pluck(:name, :id)} } do |ids, inputs|
154
154
  end
155
155
  ```
156
156
 
157
- Under the covers this is powered by the JS `ActiveAdmin.modal_dialog` which you
157
+ Under the covers this is powered by the JS `ActiveAdmin.ModalDialog` which you
158
158
  can use yourself:
159
159
 
160
160
  ```coffee
161
161
  if $('body.admin_users').length
162
162
  $('a[data-prompt]').click ->
163
- ActiveAdmin.modal_dialog $(@).data('prompt'), comment: 'textarea',
163
+ ActiveAdmin.ModalDialog $(@).data('prompt'), comment: 'textarea',
164
164
  (inputs)=>
165
165
  $.post "/admin/users/#{$(@).data 'id'}/change_state",
166
166
  comment: inputs.comment, state: $(@).data('state'),
data/docs/Gemfile.lock CHANGED
@@ -1,11 +1,12 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- activesupport (4.2.11.1)
5
- i18n (~> 0.7)
4
+ activesupport (6.0.2.1)
5
+ concurrent-ruby (~> 1.0, >= 1.0.2)
6
+ i18n (>= 0.7, < 2)
6
7
  minitest (~> 5.1)
7
- thread_safe (~> 0.3, >= 0.3.4)
8
8
  tzinfo (~> 1.1)
9
+ zeitwerk (~> 2.2)
9
10
  addressable (2.7.0)
10
11
  public_suffix (>= 2.0.2, < 5.0)
11
12
  coffee-script (2.4.1)
@@ -25,33 +26,32 @@ GEM
25
26
  ffi (>= 1.3.0)
26
27
  eventmachine (1.2.7)
27
28
  execjs (2.7.0)
28
- faraday (0.17.0)
29
+ faraday (1.0.0)
29
30
  multipart-post (>= 1.2, < 3)
30
- ffi (1.11.1)
31
+ ffi (1.12.1)
31
32
  forwardable-extended (2.6.0)
32
33
  gemoji (3.0.1)
33
- github-pages (202)
34
- activesupport (= 4.2.11.1)
34
+ github-pages (204)
35
35
  github-pages-health-check (= 1.16.1)
36
36
  jekyll (= 3.8.5)
37
- jekyll-avatar (= 0.6.0)
37
+ jekyll-avatar (= 0.7.0)
38
38
  jekyll-coffeescript (= 1.1.1)
39
39
  jekyll-commonmark-ghpages (= 0.1.6)
40
40
  jekyll-default-layout (= 0.1.4)
41
- jekyll-feed (= 0.11.0)
41
+ jekyll-feed (= 0.13.0)
42
42
  jekyll-gist (= 1.5.0)
43
- jekyll-github-metadata (= 2.12.1)
44
- jekyll-mentions (= 1.4.1)
45
- jekyll-optional-front-matter (= 0.3.0)
43
+ jekyll-github-metadata (= 2.13.0)
44
+ jekyll-mentions (= 1.5.1)
45
+ jekyll-optional-front-matter (= 0.3.2)
46
46
  jekyll-paginate (= 1.1.0)
47
- jekyll-readme-index (= 0.2.0)
48
- jekyll-redirect-from (= 0.14.0)
49
- jekyll-relative-links (= 0.6.0)
50
- jekyll-remote-theme (= 0.4.0)
47
+ jekyll-readme-index (= 0.3.0)
48
+ jekyll-redirect-from (= 0.15.0)
49
+ jekyll-relative-links (= 0.6.1)
50
+ jekyll-remote-theme (= 0.4.1)
51
51
  jekyll-sass-converter (= 1.5.2)
52
- jekyll-seo-tag (= 2.5.0)
53
- jekyll-sitemap (= 1.2.0)
54
- jekyll-swiss (= 0.4.0)
52
+ jekyll-seo-tag (= 2.6.1)
53
+ jekyll-sitemap (= 1.4.0)
54
+ jekyll-swiss (= 1.0.0)
55
55
  jekyll-theme-architect (= 0.1.1)
56
56
  jekyll-theme-cayman (= 0.1.1)
57
57
  jekyll-theme-dinky (= 0.1.1)
@@ -61,19 +61,18 @@ GEM
61
61
  jekyll-theme-midnight (= 0.1.1)
62
62
  jekyll-theme-minimal (= 0.1.1)
63
63
  jekyll-theme-modernist (= 0.1.1)
64
- jekyll-theme-primer (= 0.5.3)
64
+ jekyll-theme-primer (= 0.5.4)
65
65
  jekyll-theme-slate (= 0.1.1)
66
66
  jekyll-theme-tactile (= 0.1.1)
67
67
  jekyll-theme-time-machine (= 0.1.1)
68
- jekyll-titles-from-headings (= 0.5.1)
69
- jemoji (= 0.10.2)
68
+ jekyll-titles-from-headings (= 0.5.3)
69
+ jemoji (= 0.11.1)
70
70
  kramdown (= 1.17.0)
71
- liquid (= 4.0.0)
72
- listen (= 3.1.5)
71
+ liquid (= 4.0.3)
73
72
  mercenary (~> 0.3)
74
- minima (= 2.5.0)
73
+ minima (= 2.5.1)
75
74
  nokogiri (>= 1.10.4, < 2.0)
76
- rouge (= 3.11.0)
75
+ rouge (= 3.13.0)
77
76
  terminal-table (~> 1.4)
78
77
  github-pages-health-check (1.16.1)
79
78
  addressable (~> 2.3)
@@ -81,7 +80,7 @@ GEM
81
80
  octokit (~> 4.0)
82
81
  public_suffix (~> 3.0)
83
82
  typhoeus (~> 1.3)
84
- html-pipeline (2.12.0)
83
+ html-pipeline (2.12.3)
85
84
  activesupport (>= 2)
86
85
  nokogiri (>= 1.4)
87
86
  http_parser.rb (0.6.0)
@@ -100,8 +99,8 @@ GEM
100
99
  pathutil (~> 0.9)
101
100
  rouge (>= 1.7, < 4)
102
101
  safe_yaml (~> 1.0)
103
- jekyll-avatar (0.6.0)
104
- jekyll (~> 3.0)
102
+ jekyll-avatar (0.7.0)
103
+ jekyll (>= 3.0, < 5.0)
105
104
  jekyll-coffeescript (1.1.1)
106
105
  coffee-script (~> 2.2)
107
106
  coffee-script-source (~> 1.11.1)
@@ -114,36 +113,36 @@ GEM
114
113
  rouge (>= 2.0, < 4.0)
115
114
  jekyll-default-layout (0.1.4)
116
115
  jekyll (~> 3.0)
117
- jekyll-feed (0.11.0)
118
- jekyll (~> 3.3)
116
+ jekyll-feed (0.13.0)
117
+ jekyll (>= 3.7, < 5.0)
119
118
  jekyll-gist (1.5.0)
120
119
  octokit (~> 4.2)
121
- jekyll-github-metadata (2.12.1)
122
- jekyll (~> 3.4)
120
+ jekyll-github-metadata (2.13.0)
121
+ jekyll (>= 3.4, < 5.0)
123
122
  octokit (~> 4.0, != 4.4.0)
124
- jekyll-mentions (1.4.1)
123
+ jekyll-mentions (1.5.1)
125
124
  html-pipeline (~> 2.3)
126
- jekyll (~> 3.0)
127
- jekyll-optional-front-matter (0.3.0)
128
- jekyll (~> 3.0)
125
+ jekyll (>= 3.7, < 5.0)
126
+ jekyll-optional-front-matter (0.3.2)
127
+ jekyll (>= 3.0, < 5.0)
129
128
  jekyll-paginate (1.1.0)
130
- jekyll-readme-index (0.2.0)
131
- jekyll (~> 3.0)
132
- jekyll-redirect-from (0.14.0)
133
- jekyll (~> 3.3)
134
- jekyll-relative-links (0.6.0)
135
- jekyll (~> 3.3)
136
- jekyll-remote-theme (0.4.0)
129
+ jekyll-readme-index (0.3.0)
130
+ jekyll (>= 3.0, < 5.0)
131
+ jekyll-redirect-from (0.15.0)
132
+ jekyll (>= 3.3, < 5.0)
133
+ jekyll-relative-links (0.6.1)
134
+ jekyll (>= 3.3, < 5.0)
135
+ jekyll-remote-theme (0.4.1)
137
136
  addressable (~> 2.0)
138
- jekyll (~> 3.5)
139
- rubyzip (>= 1.2.1, < 3.0)
137
+ jekyll (>= 3.5, < 5.0)
138
+ rubyzip (>= 1.3.0)
140
139
  jekyll-sass-converter (1.5.2)
141
140
  sass (~> 3.4)
142
- jekyll-seo-tag (2.5.0)
143
- jekyll (~> 3.3)
144
- jekyll-sitemap (1.2.0)
145
- jekyll (~> 3.3)
146
- jekyll-swiss (0.4.0)
141
+ jekyll-seo-tag (2.6.1)
142
+ jekyll (>= 3.3, < 5.0)
143
+ jekyll-sitemap (1.4.0)
144
+ jekyll (>= 3.7, < 5.0)
145
+ jekyll-swiss (1.0.0)
147
146
  jekyll-theme-architect (0.1.1)
148
147
  jekyll (~> 3.5)
149
148
  jekyll-seo-tag (~> 2.0)
@@ -171,8 +170,8 @@ GEM
171
170
  jekyll-theme-modernist (0.1.1)
172
171
  jekyll (~> 3.5)
173
172
  jekyll-seo-tag (~> 2.0)
174
- jekyll-theme-primer (0.5.3)
175
- jekyll (~> 3.5)
173
+ jekyll-theme-primer (0.5.4)
174
+ jekyll (> 3.5, < 5.0)
176
175
  jekyll-github-metadata (~> 2.9)
177
176
  jekyll-seo-tag (~> 2.0)
178
177
  jekyll-theme-slate (0.1.1)
@@ -184,42 +183,41 @@ GEM
184
183
  jekyll-theme-time-machine (0.1.1)
185
184
  jekyll (~> 3.5)
186
185
  jekyll-seo-tag (~> 2.0)
187
- jekyll-titles-from-headings (0.5.1)
188
- jekyll (~> 3.3)
186
+ jekyll-titles-from-headings (0.5.3)
187
+ jekyll (>= 3.3, < 5.0)
189
188
  jekyll-watch (2.2.1)
190
189
  listen (~> 3.0)
191
- jemoji (0.10.2)
190
+ jemoji (0.11.1)
192
191
  gemoji (~> 3.0)
193
192
  html-pipeline (~> 2.2)
194
- jekyll (~> 3.0)
193
+ jekyll (>= 3.0, < 5.0)
195
194
  kramdown (1.17.0)
196
- liquid (4.0.0)
197
- listen (3.1.5)
198
- rb-fsevent (~> 0.9, >= 0.9.4)
199
- rb-inotify (~> 0.9, >= 0.9.7)
200
- ruby_dep (~> 1.2)
195
+ liquid (4.0.3)
196
+ listen (3.2.1)
197
+ rb-fsevent (~> 0.10, >= 0.10.3)
198
+ rb-inotify (~> 0.9, >= 0.9.10)
201
199
  mercenary (0.3.6)
202
200
  mini_portile2 (2.4.0)
203
- minima (2.5.0)
204
- jekyll (~> 3.5)
201
+ minima (2.5.1)
202
+ jekyll (>= 3.5, < 5.0)
205
203
  jekyll-feed (~> 0.9)
206
204
  jekyll-seo-tag (~> 2.1)
207
- minitest (5.12.2)
205
+ minitest (5.14.0)
208
206
  multipart-post (2.1.1)
209
- nokogiri (1.10.5)
207
+ nokogiri (1.10.8)
210
208
  mini_portile2 (~> 2.4.0)
211
- octokit (4.14.0)
209
+ octokit (4.15.0)
210
+ faraday (>= 0.9)
212
211
  sawyer (~> 0.8.0, >= 0.5.3)
213
212
  pathutil (0.16.2)
214
213
  forwardable-extended (~> 2.6)
215
214
  public_suffix (3.1.1)
216
215
  rb-fsevent (0.10.3)
217
- rb-inotify (0.10.0)
216
+ rb-inotify (0.10.1)
218
217
  ffi (~> 1.0)
219
- rouge (3.11.0)
218
+ rouge (3.13.0)
220
219
  ruby-enum (0.7.2)
221
220
  i18n
222
- ruby_dep (1.5.0)
223
221
  rubyzip (2.0.0)
224
222
  safe_yaml (1.0.5)
225
223
  sass (3.7.4)
@@ -235,9 +233,10 @@ GEM
235
233
  thread_safe (0.3.6)
236
234
  typhoeus (1.3.1)
237
235
  ethon (>= 0.9.0)
238
- tzinfo (1.2.5)
236
+ tzinfo (1.2.6)
239
237
  thread_safe (~> 0.1)
240
- unicode-display_width (1.6.0)
238
+ unicode-display_width (1.6.1)
239
+ zeitwerk (2.2.2)
241
240
 
242
241
  PLATFORMS
243
242
  ruby
@@ -8,7 +8,7 @@
8
8
  </div>
9
9
 
10
10
  <div id="tidelift">
11
- <a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=homepage" target="_blank">
11
+ <a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise" target="_blank">
12
12
  <span class="cta">
13
13
  Active Admin for enterprise available via Tidelift
14
14
  </span>
@@ -29,7 +29,7 @@ configurations.
29
29
  Migrate your db and start the server:
30
30
 
31
31
  ```bash
32
- $> rake db:migrate
32
+ $> rails db:migrate
33
33
  $> rails server
34
34
  ```
35
35
 
data/docs/index.html CHANGED
@@ -50,7 +50,7 @@
50
50
  </h3>
51
51
 
52
52
  <p>
53
- Each resource that is registered wtih Active Admin becomes available as <span class="caps">JSON</span>, <span class="caps">XML</span> and <span class="caps">CSV</span> download. Customize the output to meet your requirements.
53
+ Each resource that is registered with Active Admin becomes available as <span class="caps">JSON</span>, <span class="caps">XML</span> and <span class="caps">CSV</span> download. Customize the output to meet your requirements.
54
54
  </p>
55
55
  </div>
56
56
 
@@ -133,7 +133,7 @@
133
133
  </h2>
134
134
 
135
135
  <p>
136
- <a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=homepage">
136
+ <a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise">
137
137
  Available as part of the Tidelift Subscription
138
138
  </a>
139
139
  </p>
@@ -150,11 +150,11 @@
150
150
  </p>
151
151
 
152
152
  <div class="tidelift-buttons">
153
- <a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral" target="_blank">
153
+ <a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise" target="_blank">
154
154
  <span>LEARN MORE</span>
155
155
  </a>
156
156
 
157
- <a href="https://tidelift.com/subscription/request-a-demo?utm_source=rubygems-activeadmin&utm_medium=referral" target="_blank">
157
+ <a href="https://tidelift.com/subscription/request-a-demo?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise" target="_blank">
158
158
  <span>REQUEST A DEMO</span>
159
159
  </a>
160
160
  </div>
@@ -202,11 +202,11 @@
202
202
  </p>
203
203
 
204
204
  <div class="tidelift-buttons">
205
- <a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral" target="_blank">
205
+ <a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise" target="_blank">
206
206
  <span>LEARN MORE</span>
207
207
  </a>
208
208
 
209
- <a href="https://tidelift.com/subscription/request-a-demo?utm_source=rubygems-activeadmin&utm_medium=referral" target="_blank">
209
+ <a href="https://tidelift.com/subscription/request-a-demo?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise" target="_blank">
210
210
  <span>REQUEST A DEMO</span>
211
211
  </a>
212
212
  </div>
@@ -51,14 +51,14 @@ module ActiveAdmin
51
51
  csv << bom if bom
52
52
 
53
53
  if column_names
54
- csv << CSV.generate_line(columns.map { |c| encode c.name, options }, csv_options)
54
+ csv << CSV.generate_line(columns.map { |c| encode c.name, options }, **csv_options)
55
55
  end
56
56
 
57
57
  ActiveRecord::Base.uncached do
58
58
  (1..paginated_collection.total_pages).each do |page|
59
59
  paginated_collection(page).each do |resource|
60
60
  resource = controller.send :apply_decorator, resource
61
- csv << CSV.generate_line(build_row(resource, columns, options), csv_options)
61
+ csv << CSV.generate_line(build_row(resource, columns, options), **csv_options)
62
62
  end
63
63
  end
64
64
  end
@@ -81,7 +81,11 @@ module ActiveAdmin
81
81
 
82
82
  def encode(content, options)
83
83
  if options[:encoding]
84
- content.to_s.encode options[:encoding], options[:encoding_options]
84
+ if options[:encoding_options]
85
+ content.to_s.encode options[:encoding], **options[:encoding_options]
86
+ else
87
+ content.to_s.encode options[:encoding]
88
+ end
85
89
  else
86
90
  content
87
91
  end
@@ -22,17 +22,20 @@ module ActiveAdmin
22
22
  column && column.type == :date ? "#{method}_lteq" : "#{method}_lteq_datetime"
23
23
  end
24
24
 
25
- def input_html_options_for(input_name = gt_input_name, placeholder = gt_input_placeholder)
26
- current_value = begin
27
- #cast value to date object before rendering input
28
- @object.public_send(input_name).to_s.to_date
29
- rescue
30
- nil
31
- end
25
+ def input_html_options
32
26
  { size: 12,
33
27
  class: "datepicker",
34
- maxlength: 10,
35
- placeholder: placeholder,
28
+ maxlength: 10 }.merge(options[:input_html] || {})
29
+ end
30
+
31
+ def input_html_options_for(input_name, placeholder)
32
+ current_value = begin
33
+ #cast value to date object before rendering input
34
+ @object.public_send(input_name).to_s.to_date
35
+ rescue
36
+ nil
37
+ end
38
+ { placeholder: placeholder,
36
39
  value: current_value ? current_value.strftime("%Y-%m-%d") : "" }.merge(input_html_options)
37
40
  end
38
41
 
@@ -21,7 +21,7 @@ module ActiveAdmin
21
21
  scope = options.delete(:scope)
22
22
  specific_key = array_to_key('resources', @model_name, scope, key)
23
23
  defaults = [array_to_key(scope, key), key.to_s.titleize]
24
- ::I18n.t specific_key, options.reverse_merge(model: @model, default: defaults, scope: 'active_admin')
24
+ ::I18n.t specific_key, **options.reverse_merge(model: @model, default: defaults, scope: 'active_admin')
25
25
  end
26
26
  alias_method :t, :translate
27
27
 
@@ -47,7 +47,10 @@ module ActiveAdmin
47
47
  # menu.add parent: 'Dashboard', label: 'My Child Dashboard'
48
48
  #
49
49
  def add(options)
50
- item = if parent = options.delete(:parent)
50
+ parent_chain = Array.wrap(options.delete(:parent))
51
+
52
+ item = if parent = parent_chain.shift
53
+ options[:parent] = parent_chain if parent_chain.any?
51
54
  (self[parent] || add(label: parent)).add options
52
55
  else
53
56
  _add options.merge parent: self
@@ -60,7 +63,7 @@ module ActiveAdmin
60
63
 
61
64
  # Whether any children match the given item.
62
65
  def include?(item)
63
- @children.values.include? item
66
+ @children.values.include?(item) || @children.values.any? { |child| child.include?(item) }
64
67
  end
65
68
 
66
69
  # Used in the UI to visually distinguish which menu item is selected.
@@ -119,5 +119,8 @@ module ActiveAdmin
119
119
  :email,
120
120
  ]
121
121
  register :filter_method_for_large_association, '_starts_with'
122
+
123
+ # Switch between asset pipeline and webpacker assets
124
+ register :use_webpacker, false
122
125
  end
123
126
  end
@@ -46,7 +46,7 @@ module ActiveAdmin
46
46
  end
47
47
 
48
48
  def translate(options = {})
49
- I18n.t i18n_key, { scope: [:activerecord, :models] }.merge(options)
49
+ I18n.t i18n_key, **{ scope: [:activerecord, :models] }.merge(options)
50
50
  end
51
51
 
52
52
  def route_key
@@ -1,3 +1,3 @@
1
1
  module ActiveAdmin
2
- VERSION = '2.5.0'
2
+ VERSION = '2.7.0'
3
3
  end
@@ -26,6 +26,8 @@ module ActiveAdmin
26
26
  group_scopes.each do |scope|
27
27
  build_scope(scope, options) if call_method_or_exec_proc(scope.display_if_block)
28
28
  end
29
+
30
+ nil
29
31
  end
30
32
  end
31
33
  end
@@ -138,7 +138,7 @@ module ActiveAdmin
138
138
 
139
139
  class Column
140
140
 
141
- attr_accessor :title, :data , :html_class
141
+ attr_accessor :title, :data, :html_class
142
142
 
143
143
  def initialize(*args, &block)
144
144
  @options = args.extract_options!
@@ -29,7 +29,8 @@ module ActiveAdmin
29
29
  text_node(active_admin_namespace.head)
30
30
 
31
31
  active_admin_application.stylesheets.each do |style, options|
32
- text_node stylesheet_link_tag(style, options).html_safe
32
+ stylesheet_tag = active_admin_namespace.use_webpacker ? stylesheet_pack_tag(style, options) : stylesheet_link_tag(style, options)
33
+ text_node(stylesheet_tag.html_safe) if stylesheet_tag
33
34
  end
34
35
 
35
36
  active_admin_namespace.meta_tags.each do |name, content|
@@ -37,7 +38,8 @@ module ActiveAdmin
37
38
  end
38
39
 
39
40
  active_admin_application.javascripts.each do |path|
40
- text_node(javascript_include_tag(path))
41
+ javascript_tag = active_admin_namespace.use_webpacker ? javascript_pack_tag(path) : javascript_include_tag(path)
42
+ text_node(javascript_tag)
41
43
  end
42
44
 
43
45
  if active_admin_namespace.favicon
@@ -85,8 +87,10 @@ module ActiveAdmin
85
87
 
86
88
  def build_flash_messages
87
89
  div class: 'flashes' do
88
- flash_messages.each do |type, message|
89
- div message, class: "flash flash_#{type}"
90
+ flash_messages.each do |type, messages|
91
+ [*messages].each do |message|
92
+ div message, class: "flash flash_#{type}"
93
+ end
90
94
  end
91
95
  end
92
96
  end
@@ -8,6 +8,7 @@ module ActiveAdmin
8
8
 
9
9
  hook_for :users, default: "devise", desc: "Admin user generator to run. Skip with --skip-users"
10
10
  class_option :skip_comments, type: :boolean, default: false, desc: "Skip installation of comments"
11
+ class_option :use_webpacker, type: :boolean, default: false, desc: "Use Webpacker assets instead of Sprockets"
11
12
 
12
13
  source_root File.expand_path('templates', __dir__)
13
14
 
@@ -15,6 +16,7 @@ module ActiveAdmin
15
16
  @underscored_user_name = name.underscore.gsub('/', '_')
16
17
  @use_authentication_method = options[:users].present?
17
18
  @skip_comments = options[:skip_comments]
19
+ @use_webpacker = options[:use_webpacker]
18
20
  template 'active_admin.rb.erb', 'config/initializers/active_admin.rb'
19
21
  end
20
22
 
@@ -36,7 +38,11 @@ module ActiveAdmin
36
38
  end
37
39
 
38
40
  def create_assets
39
- generate "active_admin:assets"
41
+ if options[:use_webpacker]
42
+ generate "active_admin:webpacker"
43
+ else
44
+ generate "active_admin:assets"
45
+ end
40
46
  end
41
47
 
42
48
  def create_migrations
@@ -325,4 +325,11 @@ ActiveAdmin.setup do |config|
325
325
  # You can inherit it with own class and inject it for all resources
326
326
  #
327
327
  # config.order_clause = MyOrderClause
328
+
329
+ # == Webpacker
330
+ #
331
+ # By default, Active Admin uses Sprocket's asset pipeline.
332
+ # You can switch to using Webpacker here.
333
+ #
334
+ <% unless @use_webpacker %># <% end %>config.use_webpacker = true
328
335
  end
@@ -0,0 +1,7 @@
1
+ const webpack = require('webpack')
2
+
3
+ module.exports = new webpack.ProvidePlugin({
4
+ "$":"jquery",
5
+ "jQuery":"jquery",
6
+ "window.jQuery":"jquery"
7
+ });
@@ -0,0 +1,5 @@
1
+ // Load Active Admin's styles into Webpacker,
2
+ // see `active_admin.scss` for customization.
3
+ import "../stylesheets/active_admin";
4
+
5
+ import "@activeadmin/activeadmin";
@@ -0,0 +1,17 @@
1
+ // SASS variable overrides must be declared before loading up Active Admin's styles.
2
+ //
3
+ // To view the variables that Active Admin provides, take a look at
4
+ // `app/assets/stylesheets/active_admin/mixins/_variables.scss` in the
5
+ // Active Admin source.
6
+ //
7
+ // For example, to change the sidebar width:
8
+ // $sidebar-width: 242px;
9
+
10
+ // Active Admin's got SASS!
11
+ @import "~@activeadmin/activeadmin/src/scss/mixins";
12
+ @import "~@activeadmin/activeadmin/src/scss/base";
13
+
14
+ // Overriding any non-variable SASS must be done after the fact.
15
+ // For example, to change the default status-tag color:
16
+ //
17
+ // .status_tag { background: #6090DB; }
@@ -0,0 +1,2 @@
1
+ /* Active Admin Print Stylesheet */
2
+ @import "~@activeadmin/activeadmin/src/scss/print";
@@ -0,0 +1,26 @@
1
+ module ActiveAdmin
2
+ module Generators
3
+ class WebpackerGenerator < Rails::Generators::Base
4
+
5
+ source_root File.expand_path('templates', __dir__)
6
+
7
+ def install_assets
8
+ template 'active_admin.js', 'app/javascript/packs/active_admin.js'
9
+ template "active_admin.scss", "app/javascript/stylesheets/active_admin.scss"
10
+ template 'print.scss', 'app/javascript/packs/active_admin/print.scss'
11
+
12
+ copy_file "#{__dir__}/plugins/jquery.js", Rails.root.join("config/webpack/plugins/jquery.js").to_s
13
+
14
+ insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
15
+ "const jquery = require('./plugins/jquery')\n",
16
+ after: /require\(('|")@rails\/webpacker\1\);?\n/
17
+
18
+ insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
19
+ "environment.plugins.prepend('jquery', jquery)\n",
20
+ before: "module.exports"
21
+
22
+ run "yarn add @activeadmin/activeadmin"
23
+ end
24
+ end
25
+ end
26
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeadmin
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charles Maresh
@@ -15,7 +15,7 @@ authors:
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2019-11-26 00:00:00.000000000 Z
18
+ date: 2020-03-31 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: arbre
@@ -551,6 +551,11 @@ files:
551
551
  - lib/generators/active_admin/page/templates/page.rb
552
552
  - lib/generators/active_admin/resource/resource_generator.rb
553
553
  - lib/generators/active_admin/resource/templates/admin.rb.erb
554
+ - lib/generators/active_admin/webpacker/plugins/jquery.js
555
+ - lib/generators/active_admin/webpacker/templates/active_admin.js
556
+ - lib/generators/active_admin/webpacker/templates/active_admin.scss
557
+ - lib/generators/active_admin/webpacker/templates/print.scss
558
+ - lib/generators/active_admin/webpacker/webpacker_generator.rb
554
559
  - lib/ransack_ext.rb
555
560
  - vendor/assets/javascripts/jquery-ui/data.js
556
561
  - vendor/assets/javascripts/jquery-ui/disable-selection.js
@@ -599,7 +604,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
599
604
  - !ruby/object:Gem::Version
600
605
  version: '0'
601
606
  requirements: []
602
- rubygems_version: 3.0.6
607
+ rubygems_version: 3.2.0.pre1
603
608
  signing_key:
604
609
  specification_version: 4
605
610
  summary: Active Admin is a Ruby on Rails plugin for generating administration style