adminterface 0.0.0 → 0.2.3

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 (271) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +1 -1
  3. data/README.md +69 -0
  4. data/Rakefile +43 -0
  5. data/app/assets/config/adminterface_manifest.js +1 -0
  6. data/app/assets/stylesheets/adminterface/_base.scss +20 -0
  7. data/app/assets/stylesheets/adminterface/_print.scss +56 -0
  8. data/app/assets/stylesheets/adminterface/components/_active_admin_comment.scss +19 -0
  9. data/app/assets/stylesheets/adminterface/components/_all.scss +24 -0
  10. data/app/assets/stylesheets/adminterface/components/_aside.scss +28 -0
  11. data/app/assets/stylesheets/adminterface/components/_attributes_table.scss +19 -0
  12. data/app/assets/stylesheets/adminterface/components/_comments.scss +7 -0
  13. data/app/assets/stylesheets/adminterface/components/_divider.scss +28 -0
  14. data/app/assets/stylesheets/adminterface/components/_filters.scss +27 -0
  15. data/app/assets/stylesheets/adminterface/components/_flash.scss +4 -0
  16. data/app/assets/stylesheets/adminterface/components/_footer.scss +4 -0
  17. data/app/assets/stylesheets/adminterface/components/_form.scss +219 -0
  18. data/app/assets/stylesheets/adminterface/components/_header.scss +30 -0
  19. data/app/assets/stylesheets/adminterface/components/_index.scss +1 -0
  20. data/app/assets/stylesheets/adminterface/components/_index_as_grid.scss +5 -0
  21. data/app/assets/stylesheets/adminterface/components/_index_as_table.scss +1 -0
  22. data/app/assets/stylesheets/adminterface/components/_index_footer.scss +19 -0
  23. data/app/assets/stylesheets/adminterface/components/_modal_dialog.scss +4 -0
  24. data/app/assets/stylesheets/adminterface/components/_pagination.scss +3 -0
  25. data/app/assets/stylesheets/adminterface/components/_panel.scss +21 -0
  26. data/app/assets/stylesheets/adminterface/components/_sidebar.scss +13 -0
  27. data/app/assets/stylesheets/adminterface/components/_site_title.scss +17 -0
  28. data/app/assets/stylesheets/adminterface/components/_table_for.scss +37 -0
  29. data/app/assets/stylesheets/adminterface/components/_table_tools.scss +19 -0
  30. data/app/assets/stylesheets/adminterface/components/_thumbnail.scss +29 -0
  31. data/app/assets/stylesheets/adminterface/components/_title_bar.scss +36 -0
  32. data/app/assets/stylesheets/adminterface/components/inputs/_all.scss +2 -0
  33. data/app/assets/stylesheets/adminterface/components/inputs/_password.scss +28 -0
  34. data/app/assets/stylesheets/adminterface/components/inputs/_text.scss +30 -0
  35. data/app/assets/stylesheets/adminterface/helpers/_aa_icon.scss +1 -0
  36. data/app/assets/stylesheets/adminterface/helpers/_all.scss +2 -0
  37. data/app/assets/stylesheets/adminterface/helpers/_pointer.scss +1 -0
  38. data/app/assets/stylesheets/adminterface/layouts/_all.scss +4 -0
  39. data/app/assets/stylesheets/adminterface/layouts/_base.scss +5 -0
  40. data/app/assets/stylesheets/adminterface/layouts/_logged_in.scss +30 -0
  41. data/app/assets/stylesheets/adminterface/layouts/_logged_out.scss +14 -0
  42. data/app/assets/stylesheets/adminterface/layouts/types/_all.scss +4 -0
  43. data/app/assets/stylesheets/adminterface/layouts/types/_mixins.scss +195 -0
  44. data/app/assets/stylesheets/adminterface/layouts/types/_navigation_aside.scss +33 -0
  45. data/app/assets/stylesheets/adminterface/layouts/types/_navigation_sidebar.scss +15 -0
  46. data/app/assets/stylesheets/adminterface/layouts/types/_navigation_top.scss +33 -0
  47. data/app/assets/stylesheets/adminterface/mixins/_all.scss +3 -0
  48. data/app/assets/stylesheets/adminterface/mixins/_layouts.scss +38 -0
  49. data/app/assets/stylesheets/adminterface/mixins/_utilities.scss +39 -0
  50. data/app/assets/stylesheets/adminterface/mixins/_variables.scss +100 -0
  51. data/app/assets/stylesheets/adminterface/placeholders/_aa_icon.scss +10 -0
  52. data/app/assets/stylesheets/adminterface/placeholders/_all.scss +3 -0
  53. data/app/assets/stylesheets/adminterface/placeholders/_background.scss +5 -0
  54. data/app/assets/stylesheets/adminterface/placeholders/_typography.scss +11 -0
  55. data/app/assets/stylesheets/adminterface/vendors/_all.scss +4 -0
  56. data/app/assets/stylesheets/adminterface/vendors/bootstrap/_all.scss +6 -0
  57. data/app/assets/stylesheets/adminterface/vendors/bootstrap/_variables.scss +51 -0
  58. data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/_buttons.scss +5 -0
  59. data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/_dropdowns.scss +28 -0
  60. data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/_navs.scss +25 -0
  61. data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/form/_labels.scss +5 -0
  62. data/app/assets/stylesheets/adminterface/vendors/bootstrap/content/_tables.scss +2 -0
  63. data/app/assets/stylesheets/adminterface/vendors/bootstrap/content/_typography.scss +2 -0
  64. data/app/assets/stylesheets/adminterface/vendors/flatpickr/_all.scss +2 -0
  65. data/app/assets/stylesheets/adminterface/vendors/flatpickr/_variables.scss +7 -0
  66. data/app/assets/stylesheets/adminterface/vendors/flatpickr/main.scss +50 -0
  67. data/app/assets/stylesheets/adminterface/vendors/tom_select/_all.scss +1 -0
  68. data/app/assets/stylesheets/adminterface/vendors/tom_select/_main.scss +6 -0
  69. data/app/assets/stylesheets/adminterface/vendors/trix/_actiontext.scss +36 -0
  70. data/app/assets/stylesheets/adminterface/vendors/trix/_all.scss +3 -0
  71. data/app/assets/stylesheets/adminterface/vendors/trix/_trix_editor.scss +86 -0
  72. data/app/assets/stylesheets/adminterface/vendors/trix/_variables.scss +31 -0
  73. data/app/javascript/adminterface/base.js +14 -0
  74. data/app/javascript/adminterface/config.js +129 -0
  75. data/app/javascript/adminterface/initializers/batch_actions.js +9 -0
  76. data/app/javascript/adminterface/initializers/bootstrap.js +29 -0
  77. data/app/javascript/adminterface/initializers/confirm_dialog.js +23 -0
  78. data/app/javascript/adminterface/initializers/detached_dropdown.js +16 -0
  79. data/app/javascript/adminterface/initializers/drawer_menu_item_toggler.js +15 -0
  80. data/app/javascript/adminterface/initializers/filters.js +23 -0
  81. data/app/javascript/adminterface/initializers/has_many.js +7 -0
  82. data/app/javascript/adminterface/initializers/header_toggler.js +10 -0
  83. data/app/javascript/adminterface/initializers/index.js +2 -0
  84. data/app/javascript/adminterface/initializers/per_page.js +12 -0
  85. data/app/javascript/adminterface/initializers/plugins/flatpickr.js +24 -0
  86. data/app/javascript/adminterface/initializers/plugins/input_counter.js +21 -0
  87. data/app/javascript/adminterface/initializers/plugins/password_visibility.js +23 -0
  88. data/app/javascript/adminterface/initializers/plugins/tom_select.js +24 -0
  89. data/app/javascript/adminterface/lib/__tests__/checkbox_toggler.html +5 -0
  90. data/app/javascript/adminterface/lib/__tests__/checkbox_toggler.spec.js +110 -0
  91. data/app/javascript/adminterface/lib/__tests__/detached_dropdown.spec.js +69 -0
  92. data/app/javascript/adminterface/lib/__tests__/filters.spec.js +150 -0
  93. data/app/javascript/adminterface/lib/__tests__/has_many.html +14 -0
  94. data/app/javascript/adminterface/lib/__tests__/has_many.spec.js +224 -0
  95. data/app/javascript/adminterface/lib/__tests__/utils.spec.js +280 -0
  96. data/app/javascript/adminterface/lib/batch_actions.js +106 -0
  97. data/app/javascript/adminterface/lib/checkbox_toggler.js +55 -0
  98. data/app/javascript/adminterface/lib/confirm_dialog.js +113 -0
  99. data/app/javascript/adminterface/lib/detached_dropdown.js +34 -0
  100. data/app/javascript/adminterface/lib/filters.js +34 -0
  101. data/app/javascript/adminterface/lib/has_many.js +125 -0
  102. data/app/javascript/adminterface/lib/header_toggler.js +54 -0
  103. data/app/javascript/adminterface/lib/input.js +108 -0
  104. data/app/javascript/adminterface/lib/inputs/base/groupish.js +55 -0
  105. data/app/javascript/adminterface/lib/inputs/base/pluginish.js +63 -0
  106. data/app/javascript/adminterface/lib/inputs/base_input.js +87 -0
  107. data/app/javascript/adminterface/lib/inputs/boolean_input.js +30 -0
  108. data/app/javascript/adminterface/lib/inputs/check_boxes_input.js +14 -0
  109. data/app/javascript/adminterface/lib/inputs/choices_input.js +96 -0
  110. data/app/javascript/adminterface/lib/inputs/color_input.js +14 -0
  111. data/app/javascript/adminterface/lib/inputs/country_input.js +90 -0
  112. data/app/javascript/adminterface/lib/inputs/datalist_input.js +41 -0
  113. data/app/javascript/adminterface/lib/inputs/date_picker_input.js +11 -0
  114. data/app/javascript/adminterface/lib/inputs/datetime_picker_input.js +11 -0
  115. data/app/javascript/adminterface/lib/inputs/hidden_input.js +21 -0
  116. data/app/javascript/adminterface/lib/inputs/password_input.js +13 -0
  117. data/app/javascript/adminterface/lib/inputs/radio_input.js +13 -0
  118. data/app/javascript/adminterface/lib/inputs/select_input.js +68 -0
  119. data/app/javascript/adminterface/lib/inputs/string_input.js +13 -0
  120. data/app/javascript/adminterface/lib/inputs/switch_input.js +9 -0
  121. data/app/javascript/adminterface/lib/inputs/text_input.js +12 -0
  122. data/app/javascript/adminterface/lib/inputs/time_picker_input.js +13 -0
  123. data/app/javascript/adminterface/lib/inputs/time_zone_input.js +66 -0
  124. data/app/javascript/adminterface/lib/per_page.js +18 -0
  125. data/app/javascript/adminterface/lib/plugins/input_counter.js +94 -0
  126. data/app/javascript/adminterface/lib/plugins/password_visibility.js +70 -0
  127. data/app/javascript/adminterface/lib/table_checkbox_toggler.js +47 -0
  128. data/app/javascript/adminterface/lib/utils.js +148 -0
  129. data/app/views/active_admin/devise/confirmations/new.html.erb +19 -0
  130. data/app/views/active_admin/devise/passwords/edit.html.erb +21 -0
  131. data/app/views/active_admin/devise/passwords/new.html.erb +19 -0
  132. data/app/views/active_admin/devise/registrations/new.html.erb +24 -0
  133. data/app/views/active_admin/devise/sessions/new.html.erb +23 -0
  134. data/app/views/active_admin/devise/shared/_links.html.erb +25 -0
  135. data/app/views/active_admin/devise/shared/_omniauth.html.erb +10 -0
  136. data/app/views/active_admin/devise/unlocks/new.html.erb +19 -0
  137. data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  138. data/app/views/kaminari/active_admin/_gap.html.erb +12 -0
  139. data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  140. data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  141. data/app/views/kaminari/active_admin/_page.html.erb +12 -0
  142. data/app/views/kaminari/active_admin/_paginator.html.erb +27 -0
  143. data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  144. data/app/views/layouts/active_admin_logged_out.html.erb +56 -0
  145. data/config/locales/active_admin.en.yml +25 -0
  146. data/lib/adminterface/callable.rb +7 -0
  147. data/lib/adminterface/configs.rb +76 -0
  148. data/lib/adminterface/data/base.rb +11 -0
  149. data/lib/adminterface/data/countries.rb +44 -0
  150. data/lib/adminterface/data/time_zones.rb +31 -0
  151. data/lib/adminterface/data.rb +6 -0
  152. data/lib/adminterface/encryption/encryptor.rb +26 -0
  153. data/lib/adminterface/engine.rb +22 -0
  154. data/lib/adminterface/extensions/base_controller.rb +59 -0
  155. data/lib/adminterface/extensions/batch_actions/resource_extension.rb +64 -0
  156. data/lib/adminterface/extensions/batch_actions/views/batch_action_selector.rb +48 -0
  157. data/lib/adminterface/extensions/batch_actions/views/selection_cells.rb +39 -0
  158. data/lib/adminterface/extensions/dsl.rb +13 -0
  159. data/lib/adminterface/extensions/dynamic_settings_node.rb +26 -0
  160. data/lib/adminterface/extensions/filters/forms.rb +76 -0
  161. data/lib/adminterface/extensions/form_builder.rb +165 -0
  162. data/lib/adminterface/extensions/inputs/base/active_admin_config.rb +21 -0
  163. data/lib/adminterface/extensions/inputs/base/choices.rb +33 -0
  164. data/lib/adminterface/extensions/inputs/base/groupish.rb +50 -0
  165. data/lib/adminterface/extensions/inputs/base/html.rb +15 -0
  166. data/lib/adminterface/extensions/inputs/base/labelling.rb +15 -0
  167. data/lib/adminterface/extensions/inputs/base/pluginish.rb +56 -0
  168. data/lib/adminterface/extensions/inputs/base/stringish.rb +19 -0
  169. data/lib/adminterface/extensions/inputs/base/wrapping.rb +25 -0
  170. data/lib/adminterface/extensions/inputs/base.rb +19 -0
  171. data/lib/adminterface/extensions/inputs/boolean_input.rb +42 -0
  172. data/lib/adminterface/extensions/inputs/check_boxes_input.rb +34 -0
  173. data/lib/adminterface/extensions/inputs/color_input.rb +29 -0
  174. data/lib/adminterface/extensions/inputs/country_input.rb +33 -0
  175. data/lib/adminterface/extensions/inputs/datalist_input.rb +26 -0
  176. data/lib/adminterface/extensions/inputs/date_picker_input.rb +30 -0
  177. data/lib/adminterface/extensions/inputs/date_select_input.rb +7 -0
  178. data/lib/adminterface/extensions/inputs/datetime_picker_input.rb +19 -0
  179. data/lib/adminterface/extensions/inputs/datetime_select_input.rb +7 -0
  180. data/lib/adminterface/extensions/inputs/email_input.rb +23 -0
  181. data/lib/adminterface/extensions/inputs/file_input.rb +19 -0
  182. data/lib/adminterface/extensions/inputs/filters/base/search_method_select.rb +37 -0
  183. data/lib/adminterface/extensions/inputs/filters/base.rb +3 -0
  184. data/lib/adminterface/extensions/inputs/filters/boolean_input.rb +4 -0
  185. data/lib/adminterface/extensions/inputs/filters/check_boxes_input.rb +12 -0
  186. data/lib/adminterface/extensions/inputs/filters/date_picker_input.rb +4 -0
  187. data/lib/adminterface/extensions/inputs/filters/date_range_input.rb +50 -0
  188. data/lib/adminterface/extensions/inputs/filters/select_input.rb +4 -0
  189. data/lib/adminterface/extensions/inputs/number_input.rb +23 -0
  190. data/lib/adminterface/extensions/inputs/password_input.rb +23 -0
  191. data/lib/adminterface/extensions/inputs/phone_input.rb +23 -0
  192. data/lib/adminterface/extensions/inputs/radio_input.rb +41 -0
  193. data/lib/adminterface/extensions/inputs/range_input.rb +22 -0
  194. data/lib/adminterface/extensions/inputs/rich_text_area_input.rb +21 -0
  195. data/lib/adminterface/extensions/inputs/search_input.rb +23 -0
  196. data/lib/adminterface/extensions/inputs/select_input.rb +33 -0
  197. data/lib/adminterface/extensions/inputs/string_input.rb +19 -0
  198. data/lib/adminterface/extensions/inputs/switch_input.rb +11 -0
  199. data/lib/adminterface/extensions/inputs/text_input.rb +27 -0
  200. data/lib/adminterface/extensions/inputs/time_picker_input.rb +19 -0
  201. data/lib/adminterface/extensions/inputs/time_select_input.rb +7 -0
  202. data/lib/adminterface/extensions/inputs/time_zone_input.rb +33 -0
  203. data/lib/adminterface/extensions/inputs/url_input.rb +23 -0
  204. data/lib/adminterface/extensions/menu_item.rb +16 -0
  205. data/lib/adminterface/extensions/namespace_settings.rb +30 -0
  206. data/lib/adminterface/extensions/orm/active_record/comments/views/active_admin_comments.rb +122 -0
  207. data/lib/adminterface/extensions/resource/action_items.rb +117 -0
  208. data/lib/adminterface/extensions/sidebar_section.rb +35 -0
  209. data/lib/adminterface/extensions/view_helpers/alert_helper.rb +38 -0
  210. data/lib/adminterface/extensions/view_helpers/component_helper.rb +23 -0
  211. data/lib/adminterface/extensions/views/action_items.rb +39 -0
  212. data/lib/adminterface/extensions/views/columns.rb +59 -0
  213. data/lib/adminterface/extensions/views/components/active_admin_form.rb +47 -0
  214. data/lib/adminterface/extensions/views/components/attributes_table.rb +28 -0
  215. data/lib/adminterface/extensions/views/components/blank_slate.rb +19 -0
  216. data/lib/adminterface/extensions/views/components/dropdown_menu.rb +58 -0
  217. data/lib/adminterface/extensions/views/components/icon.rb +26 -0
  218. data/lib/adminterface/extensions/views/components/index_list.rb +43 -0
  219. data/lib/adminterface/extensions/views/components/menu.rb +18 -0
  220. data/lib/adminterface/extensions/views/components/menu_item.rb +69 -0
  221. data/lib/adminterface/extensions/views/components/paginated_collection.rb +52 -0
  222. data/lib/adminterface/extensions/views/components/panel.rb +71 -0
  223. data/lib/adminterface/extensions/views/components/scopes.rb +53 -0
  224. data/lib/adminterface/extensions/views/components/sidebar_section.rb +39 -0
  225. data/lib/adminterface/extensions/views/components/site_title.rb +36 -0
  226. data/lib/adminterface/extensions/views/components/status_tag.rb +26 -0
  227. data/lib/adminterface/extensions/views/components/table_for.rb +23 -0
  228. data/lib/adminterface/extensions/views/components/tabs.rb +101 -0
  229. data/lib/adminterface/extensions/views/footer.rb +27 -0
  230. data/lib/adminterface/extensions/views/header.rb +60 -0
  231. data/lib/adminterface/extensions/views/index_as_grid.rb +53 -0
  232. data/lib/adminterface/extensions/views/index_as_table.rb +77 -0
  233. data/lib/adminterface/extensions/views/pages/base.rb +165 -0
  234. data/lib/adminterface/extensions/views/pages/form.rb +27 -0
  235. data/lib/adminterface/extensions/views/pages/index.rb +136 -0
  236. data/lib/adminterface/extensions/views/pages/page.rb +18 -0
  237. data/lib/adminterface/extensions/views/title_bar.rb +74 -0
  238. data/lib/adminterface/fixtures/components.yml +73 -0
  239. data/lib/adminterface/fixtures/css_classes.yml +107 -0
  240. data/lib/adminterface/initializers/batch_actions.rb +15 -0
  241. data/lib/adminterface/initializers/comments.rb +13 -0
  242. data/lib/adminterface/initializers/configurations.rb +38 -0
  243. data/lib/adminterface/initializers/formtastic.rb +58 -0
  244. data/lib/adminterface/initializers/resource.rb +20 -0
  245. data/lib/adminterface/initializers/view_helpers.rb +14 -0
  246. data/lib/adminterface/initializers/views.rb +39 -0
  247. data/lib/adminterface/license.rb +18 -0
  248. data/lib/adminterface/licensing/base.rb +99 -0
  249. data/lib/adminterface/licensing/commercial.rb +7 -0
  250. data/lib/adminterface/licensing/notice.rb +54 -0
  251. data/lib/adminterface/licensing/personal.rb +13 -0
  252. data/lib/adminterface/public.pem +9 -0
  253. data/lib/adminterface/version.rb +3 -0
  254. data/lib/adminterface.rb +55 -0
  255. data/lib/generators/adminterface/comments/comments_generator.rb +33 -0
  256. data/lib/generators/adminterface/comments/templates/README +13 -0
  257. data/lib/generators/adminterface/comments/templates/active_admin_comment_action_text.rb +18 -0
  258. data/lib/generators/adminterface/comments/templates/migrations/drop_body_for_active_admin_comments.rb.erb +28 -0
  259. data/lib/generators/adminterface/configs/configs_generator.rb +19 -0
  260. data/lib/generators/adminterface/configs/templates/README +33 -0
  261. data/lib/generators/adminterface/install/install_generator.rb +39 -0
  262. data/lib/generators/adminterface/install/templates/dashboard.rb +32 -0
  263. data/lib/generators/adminterface/views/views_generator.rb +15 -0
  264. data/lib/generators/adminterface/webpacker/templates/README +27 -0
  265. data/lib/generators/adminterface/webpacker/templates/active_admin.js +12 -0
  266. data/lib/generators/adminterface/webpacker/templates/active_admin.scss +8 -0
  267. data/lib/generators/adminterface/webpacker/templates/print.scss +3 -0
  268. data/lib/generators/adminterface/webpacker/webpacker_generator.rb +69 -0
  269. data/lib/tasks/adminterface_tasks.rake +4 -0
  270. metadata +291 -10
  271. data/lib/name.rb +0 -1
@@ -0,0 +1,71 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Views
4
+ module Components
5
+ module Panel
6
+ def build_title(title)
7
+ return if title.blank?
8
+
9
+ div title.to_s, class: default_title_class
10
+ end
11
+
12
+ def default_title_class
13
+ "title #{panel_css_classes.dig(:header, :title)}".squish
14
+ end
15
+
16
+ def default_wrapper_class
17
+ "panel #{panel_css_classes[:wrapper]}".squish
18
+ end
19
+
20
+ def default_header_class
21
+ "panel-header #{panel_css_classes.dig(:header, :wrapper)}".squish
22
+ end
23
+
24
+ def default_body_class
25
+ "panel-body #{panel_css_classes[:body]}".squish
26
+ end
27
+
28
+ def header_action(*args)
29
+ action = args[0]
30
+
31
+ @title << div(class: "header_action") do
32
+ html = []
33
+ html << action
34
+ html << yield if block_given?
35
+ safe_join(html)
36
+ end
37
+ end
38
+
39
+ def header_html_options
40
+ header_html[:class] = "#{default_header_class} #{header_html[:class]}".squish
41
+ header_html
42
+ end
43
+
44
+ def body_html_options
45
+ body_html[:class] = "panel_contents #{default_body_class} #{body_html[:class]}".squish
46
+ body_html
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+
54
+ # Overwrite activeadmin/lib/active_admin/views/components/panel.rb
55
+ ActiveAdmin::Views::Panel.class_eval do
56
+ prepend Adminterface::Extensions::Views::Components::Panel
57
+ has_css_classes_for :panel
58
+ attr_accessor :header_html, :body_html
59
+
60
+ def build(*args)
61
+ options = args.extract_options!
62
+ title = args.first
63
+ @header_html = options.delete(:header_html) || {}
64
+ @body_html = options.delete(:body_html) || {}
65
+ super(options)
66
+ add_class default_wrapper_class
67
+
68
+ @title = div(build_title(title), **header_html_options)
69
+ @contents = div(**body_html_options)
70
+ end
71
+ end
@@ -0,0 +1,53 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Views
4
+ module Components
5
+ module Scopes
6
+ def group_class(group)
7
+ "#{super} nav #{table_tools_css_classes.dig(:scopes, :tabs)}".squish
8
+ end
9
+
10
+ protected
11
+
12
+ def build_scope(scope, options)
13
+ li class: classes_for_scope(scope) do
14
+ params = request.query_parameters.except :page, :scope, :commit, :format
15
+
16
+ a href: url_for(scope: scope.id, params: params), class: classes_for_link(scope) do
17
+ span scope_name(scope)
18
+ if options[:scope_count] && scope.show_count
19
+ span get_scope_count(scope),
20
+ class: "count #{count_class(scope)}".squish
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ def count_class(scope)
27
+ if get_scope_count(scope).positive?
28
+ table_tools_css_classes.dig(:scopes, :counts, :positive)
29
+ else
30
+ table_tools_css_classes.dig(:scopes, :counts, :zero)
31
+ end
32
+ end
33
+
34
+ def classes_for_scope(scope)
35
+ "#{super} nav-item".squish
36
+ end
37
+
38
+ def classes_for_link(scope)
39
+ classes = %w[nav-link]
40
+ classes << "active" if current_scope?(scope)
41
+ classes.join(" ")
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+
49
+ # Overwrite activeadmin/lib/active_admin/views/components/scopes.rb
50
+ ActiveAdmin::Views::Scopes.class_eval do
51
+ prepend Adminterface::Extensions::Views::Components::Scopes
52
+ has_css_classes_for :table_tools
53
+ end
@@ -0,0 +1,39 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Views
4
+ module Components
5
+ module SidebarSection
6
+ def default_title_class
7
+ "title #{sidebar_section_css_classes.dig(:header, :title)}".squish
8
+ end
9
+
10
+ def default_wrapper_class
11
+ "panel #{sidebar_section_css_classes[:wrapper]}".squish
12
+ end
13
+
14
+ def default_header_class
15
+ "panel-header #{sidebar_section_css_classes.dig(:header, :wrapper)}".squish
16
+ end
17
+
18
+ def default_body_class
19
+ "panel-body #{sidebar_section_css_classes[:body]}".squish
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ # Overwrite activeadmin/lib/active_admin/views/components/sidebar_section.rb
28
+ ActiveAdmin::Views::SidebarSection.class_eval do
29
+ prepend Adminterface::Extensions::Views::Components::SidebarSection
30
+ has_css_classes_for :sidebar_section
31
+
32
+ def build(section)
33
+ @section = section
34
+ super(@section.title, section.options)
35
+ add_class @section.custom_class if @section.custom_class
36
+ self.id = @section.id
37
+ build_sidebar_content
38
+ end
39
+ end
@@ -0,0 +1,36 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Views
4
+ module Components
5
+ module SiteTitle
6
+ def tag_name
7
+ :div
8
+ end
9
+
10
+ private
11
+
12
+ def title_image
13
+ helpers.image_tag(site_title_image, class: "image", alt: title_text)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ # Overwrite activeadmin/lib/active_admin/views/components/site_title.rb
22
+ ActiveAdmin::Views::SiteTitle.class_eval do
23
+ prepend Adminterface::Extensions::Views::Components::SiteTitle
24
+ attr_reader :logged_in
25
+
26
+ def build(namespace, logged_in = true)
27
+ @logged_in = logged_in.eql?(true)
28
+ super(class: "site_title")
29
+ add_class "navbar-brand" if @logged_in
30
+ @namespace = namespace
31
+
32
+ div class: "title" do
33
+ site_title_link? ? site_title_with_link : site_title_content
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,26 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Views
4
+ module Components
5
+ module StatusTag
6
+ protected
7
+
8
+ def status_to_class(status)
9
+ case status
10
+ when "Unset", nil then status_tag_css_classes[:unset]
11
+ when "Yes" then status_tag_css_classes[:yes]
12
+ when "No" then status_tag_css_classes[:no]
13
+ else status.to_s.titleize.gsub(/\s/, "").underscore
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ # Overwrite activeadmin/lib/active_admin/views/components/status_tag.rb
23
+ ActiveAdmin::Views::StatusTag.class_eval do
24
+ prepend Adminterface::Extensions::Views::Components::StatusTag
25
+ has_css_classes_for :status_tag
26
+ end
@@ -0,0 +1,23 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Views
4
+ module Components
5
+ module TableFor
6
+ def build(obj, *attrs)
7
+ options = attrs.extract_options!
8
+ options[:class] = "table_for #{options[:class]} #{table_for_css_classes}".squish
9
+ attrs = attrs.push options
10
+ super(obj, *attrs)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+ # Overwrite activeadmin/lib/active_admin/views/components/table_for.rb
19
+ ActiveAdmin::Views::TableFor.class_eval do
20
+ include Adminterface::Configs::Finders
21
+ prepend Adminterface::Extensions::Views::Components::TableFor
22
+ has_css_classes_for :table_for
23
+ end
@@ -0,0 +1,101 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Views
4
+ module Components
5
+ module Tabs
6
+ def build_menu_item(title, options, &_block)
7
+ fragment = options.fetch(:id, fragmentize(title))
8
+ html_options = options.fetch(:html_options, {})
9
+
10
+ li html_options.merge(class: "nav-item", role: "presentation") do
11
+ @http ? link_to_http(title, fragment) : link_to_js(title, fragment)
12
+ end
13
+ end
14
+
15
+ def build_content_item(title, options, &block)
16
+ fragment = options.fetch(:id, fragmentize(title))
17
+ options = options.reverse_merge(id: fragment, "aria-labelledby": "#{fragment}-tab")
18
+ div(options.merge(tab_pane_options(fragment)), &block)
19
+ end
20
+
21
+ def default_css_class
22
+ tabs_css_classes
23
+ end
24
+
25
+ def nav_html_options
26
+ nav_html[:class] = "nav #{default_css_class} #{nav_html[:class]}".squish
27
+ nav_html[:role] = "tablist"
28
+ nav_html
29
+ end
30
+
31
+ def content_html_options
32
+ content_html[:class] = "tab-content #{content_html[:class]}".squish
33
+ content_html
34
+ end
35
+
36
+ private
37
+
38
+ def link_to_js(title, fragment)
39
+ options = toggler_options(fragment).merge(data: {"bs-toggle": "tab", "bs-target": "##{fragment}"})
40
+ link_to(title, "##{fragment}", **options)
41
+ end
42
+
43
+ def link_to_http(title, fragment)
44
+ params[:tab] ||= @default_tab || fragment
45
+
46
+ link_to(title,
47
+ url_for(controller: resource_scope[:controller],
48
+ action: resource_scope[:action], tab: fragment, anchor: id, anchor_id: id),
49
+ **toggler_options(fragment))
50
+ end
51
+
52
+ def resource_scope
53
+ session.fetch(:resource_scope, {}).with_indifferent_access
54
+ end
55
+
56
+ def toggler_options(fragment)
57
+ defaults = {id: "#{fragment}-tab", "aria-controls": fragment}
58
+ options =
59
+ if current_tab?(fragment)
60
+ {class: "nav-link active", "aria-selected": "true"}
61
+ else
62
+ {class: "nav-link", "aria-selected": "false"}
63
+ end
64
+
65
+ defaults.merge(options)
66
+ end
67
+
68
+ def tab_pane_options(fragment)
69
+ {
70
+ class: "tab-pane #{current_tab?(fragment) ? "active" : nil}".squish,
71
+ role: "tabpanel"
72
+ }
73
+ end
74
+
75
+ def current_tab?(fragment)
76
+ fragment.eql?(params[:tab]) || (!@http && @tabs_content&.children.blank?)
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+
84
+ # Overwrite activeadmin/lib/active_admin/views/components/tabs.rb
85
+ ActiveAdmin::Views::Tabs.class_eval do
86
+ prepend Adminterface::Extensions::Views::Components::Tabs
87
+ has_css_classes_for :tabs
88
+ attr_accessor :nav_html, :content_html, :id
89
+
90
+ def build(options = {}, &_block)
91
+ @nav_html = options.delete(:nav_html) || {}
92
+ @content_html = options.delete(:content_html) || {}
93
+ @http = options.delete(:http) { false }
94
+ @default_tab = options.delete(:default)
95
+ @id = options[:id]
96
+ super(options)
97
+
98
+ @menu = ul(**nav_html_options)
99
+ @tabs_content = div(**content_html_options)
100
+ end
101
+ end
@@ -0,0 +1,27 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Views
4
+ module Footer
5
+ def default_class_name
6
+ "#{super} #{footer_css_classes[:wrapper]}".squish
7
+ end
8
+
9
+ def para(message)
10
+ super(message, class: footer_css_classes[:body])
11
+ end
12
+
13
+ def powered_by_message
14
+ I18n.t("active_admin.powered_by",
15
+ active_admin: link_to("Adminterface", "https://github.com/CMDBrew/adminterface", target: "_blank", rel: "noopener"),
16
+ version: Adminterface::VERSION).html_safe
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ # Overwrite activeadmin/lib/active_admin/views/header.rb
24
+ ActiveAdmin::Views::Footer.class_eval do
25
+ prepend Adminterface::Extensions::Views::Footer
26
+ has_css_classes_for :footer
27
+ end
@@ -0,0 +1,60 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Views
4
+ module Header
5
+ ID = "header-nav".freeze
6
+
7
+ def tag_name
8
+ :nav
9
+ end
10
+
11
+ private
12
+
13
+ def build_navigations
14
+ add_class "navbar #{header_css_classes[:wrapper]}".squish
15
+ add_class header_position_class if header_position_class.present?
16
+ site_title @namespace
17
+ navbar_toggler
18
+ navbar_nav
19
+ end
20
+
21
+ def navbar_nav
22
+ div id: ID, class: "collapse navbar-collapse" do
23
+ global_navigation @menu, id: "main-nav", class: "navbar-nav"
24
+ utility_navigation @utility_menu, id: "utility-nav", class: "navbar-nav"
25
+ end
26
+ end
27
+
28
+ def navbar_toggler
29
+ button(class: "navbar-toggler", 'data-bs-target': "##{ID}",
30
+ 'data-bs-toggle': "collapse", "aria-expanded": "false") do
31
+ span class: "navbar-toggler-icon"
32
+ end
33
+ end
34
+
35
+ def header_position_class
36
+ header_components.dig(:css_class, header_components[:position]&.to_sym)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ # Overwrite activeadmin/lib/active_admin/views/header.rb
44
+ ActiveAdmin::Views::Header.class_eval do
45
+ prepend Adminterface::Extensions::Views::Header
46
+ has_css_classes_for :header
47
+ has_components_for :header
48
+
49
+ def build(namespace, menu)
50
+ super(id: "header")
51
+
52
+ @namespace = namespace
53
+ @menu = menu
54
+ @utility_menu = @namespace.fetch_menu(:utility_navigation)
55
+
56
+ div class: "header-container #{header_css_classes[:container]}".squish do
57
+ build_navigations
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,53 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Views
4
+ module IndexAsGrid
5
+ def size
6
+ @page_presenter[:size] || index_as_grid_components[:breakpoint]
7
+ end
8
+
9
+ protected
10
+
11
+ def build_table
12
+ resource_selection_toggle_panel if active_admin_config.batch_actions.any?
13
+ div class: "index_grid" do
14
+ @collection.in_groups_of(number_of_columns).each do |group|
15
+ build_row(group)
16
+ end
17
+ end
18
+ end
19
+
20
+ def build_row(group)
21
+ div class: index_as_grid_css_classes[:group] do
22
+ group.each do |item|
23
+ next if item.blank?
24
+
25
+ build_item(item)
26
+ end
27
+ end
28
+ end
29
+
30
+ def build_item(item)
31
+ div class: "#{column_klass} #{index_as_grid_css_classes[:item]}".squish, for: item do
32
+ instance_exec(item, &@page_presenter.block)
33
+ end
34
+ end
35
+
36
+ def span_size
37
+ 12 / number_of_columns
38
+ end
39
+
40
+ def column_klass
41
+ ["col", size, span_size].delete_if(&:blank?).join("-")
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+
48
+ # Overwrite activeadmin/lib/active_admin/views/index_as_grid.rb
49
+ ActiveAdmin::Views::IndexAsGrid.class_eval do
50
+ prepend Adminterface::Extensions::Views::IndexAsGrid
51
+ has_css_classes_for :index_as_grid
52
+ has_components_for :index_as_grid
53
+ end
@@ -0,0 +1,77 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Views
4
+ module IndexAsTable
5
+ def table_for(*args, &block)
6
+ div class: index_as_table_css_classes[:wrapper] do
7
+ super(*args, &block)
8
+ end
9
+ end
10
+
11
+ def default_class_name
12
+ "#{super} index"
13
+ end
14
+ end
15
+
16
+ module IndexTableFor
17
+ def default_css_classes
18
+ "#{super} #{index_as_table_css_classes[:table]}".squish
19
+ end
20
+
21
+ def dropdown_menu(*args, &block)
22
+ options = args.extract_options!
23
+ super(*args, options.merge(button: {class: index_as_table_css_classes.dig(:actions, :dropdown, :toggle)}), &block)
24
+ end
25
+ end
26
+
27
+ module TableActions
28
+ def default_class_name
29
+ "#{super} #{index_as_table_css_classes.dig(:actions, :buttons, :group)}".squish
30
+ end
31
+
32
+ def item(*args)
33
+ options = args.extract_options!
34
+ options[:class] = "#{options[:class]} #{index_as_table_css_classes.dig(:actions, :buttons, :item)}".squish
35
+ options["data-aa-confirm-dialog"] = confirm_dialog_config.to_json if confirm?(options)
36
+ text_node link_to(*args, options)
37
+ end
38
+
39
+ def confirm?(options)
40
+ options.dig(:data, :confirm).present?
41
+ end
42
+
43
+ def confirm_dialog_config
44
+ {
45
+ buttons: {
46
+ confirm: {
47
+ text: I18n.t(:confirm, scope: "active_admin.confirm_dialog"),
48
+ class: confirm_dialog_css_classes[:confirm]
49
+ },
50
+ cancel: {
51
+ text: I18n.t(:cancel, scope: "active_admin.confirm_dialog"),
52
+ class: confirm_dialog_css_classes[:cancel]
53
+ }
54
+ }
55
+ }
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+
62
+ # Overwrite activeadmin/lib/active_admin/views/index_as_table.rb
63
+ ActiveAdmin::Views::IndexAsTable.class_eval do
64
+ prepend Adminterface::Extensions::Views::IndexAsTable
65
+ has_css_classes_for :index_as_table
66
+ end
67
+
68
+ ActiveAdmin::Views::IndexAsTable::IndexTableFor.class_eval do
69
+ prepend Adminterface::Extensions::Views::IndexTableFor
70
+ has_css_classes_for :index_as_table
71
+ end
72
+
73
+ ActiveAdmin::Views::IndexAsTable::IndexTableFor::TableActions.class_eval do
74
+ prepend Adminterface::Extensions::Views::TableActions
75
+ has_css_classes_for :index_as_table
76
+ has_css_classes_for :confirm_dialog
77
+ end