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,19 @@
1
+ module ActiveAdmin
2
+ module Inputs
3
+ class FileInput < ::Formtastic::Inputs::FileInput
4
+ include ::Adminterface::Extensions::Inputs::Base
5
+ prepend ::Adminterface::Extensions::Inputs::Base::Groupish
6
+
7
+ # @TODO: use custom component so we can change the translations in I18n YAML files
8
+ def to_html
9
+ input_wrapping do
10
+ label_html << input_html
11
+ end
12
+ end
13
+
14
+ def input_html
15
+ builder.file_field(method, input_html_options)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,37 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module Filters
5
+ module Base
6
+ module SearchMethodSelect
7
+ def to_html
8
+ input_wrapping do
9
+ label_html << fields_html
10
+ end
11
+ end
12
+
13
+ def fields_html
14
+ template.content_tag :div, class: "row g-3" do
15
+ template.content_tag(:div, select_html, class: "col") +
16
+ template.content_tag(:div, input_html, class: "col")
17
+ end
18
+ end
19
+
20
+ def select_html
21
+ template.select_tag(
22
+ "",
23
+ template.options_for_select(filter_options, current_filter),
24
+ class: "form-select"
25
+ )
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ # Overwrite activeadmin/lib/active_admin/inputs/filters/base/search_method_select.rb
35
+ ActiveAdmin::Inputs::Filters::Base::SearchMethodSelect.module_eval do
36
+ prepend Adminterface::Extensions::Inputs::Filters::Base::SearchMethodSelect
37
+ end
@@ -0,0 +1,3 @@
1
+ ActiveAdmin::Inputs::Filters::Base.module_eval do
2
+ include Adminterface::Extensions::Inputs::Base
3
+ end
@@ -0,0 +1,4 @@
1
+ # Overwrite activeadmin/lib/active_admin/inputs/filters/boolean_input.rb
2
+ ActiveAdmin::Inputs::Filters::BooleanInput.class_eval do
3
+ prepend ::Adminterface::Extensions::Inputs::SelectInput
4
+ end
@@ -0,0 +1,12 @@
1
+ # Overwrite activeadmin/lib/active_admin/inputs/filters/check_boxes_input.rb
2
+ ActiveAdmin::Inputs::Filters::CheckBoxesInput.class_eval do
3
+ prepend ::Adminterface::Extensions::Inputs::CheckBoxesInput
4
+
5
+ def choices_group_wrapping(&block)
6
+ template.content_tag(:ol, template.capture(&block), choices_group_wrapping_html_options)
7
+ end
8
+
9
+ def choice_wrapping(html_options, &block)
10
+ template.content_tag(:li, template.capture(&block), html_options)
11
+ end
12
+ end
@@ -0,0 +1,4 @@
1
+ # Overwrite activeadmin/lib/active_admin/inputs/filters/date_picker_input.rb
2
+ ActiveAdmin::Inputs::Filters::DatePickerInput.class_eval do
3
+ prepend ::Adminterface::Extensions::Inputs::DatePickerInput
4
+ end
@@ -0,0 +1,50 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module Filters
5
+ module DateRangeInput
6
+ def to_html
7
+ input_wrapping do
8
+ [
9
+ label_html,
10
+ fields
11
+ ].join("\n")&.html_safe
12
+ end
13
+ end
14
+
15
+ def fields
16
+ template.content_tag :div, class: "row g-3" do
17
+ template.content_tag(:div, gt_input, class: "col") +
18
+ template.content_tag(:div, lt_input, class: "col")
19
+ end
20
+ end
21
+
22
+ def input_html_options_for(input_name, placeholder)
23
+ opts = super
24
+ opts[:class] = "#{opts[:class]} form-control".squish
25
+ opts.merge(plugins_options)
26
+ end
27
+
28
+ private
29
+
30
+ def plugins_configs_key
31
+ :date_picker
32
+ end
33
+
34
+ def gt_input
35
+ builder.text_field(gt_input_name, input_html_options_for(gt_input_name, gt_input_placeholder))
36
+ end
37
+
38
+ def lt_input
39
+ builder.text_field(lt_input_name, input_html_options_for(lt_input_name, lt_input_placeholder))
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ # Overwrite activeadmin/lib/active_admin/inputs/filters/date_range_input.rb
48
+ ActiveAdmin::Inputs::Filters::DateRangeInput.class_eval do
49
+ prepend Adminterface::Extensions::Inputs::Filters::DateRangeInput
50
+ end
@@ -0,0 +1,4 @@
1
+ # Overwrite activeadmin/lib/active_admin/inputs/filters/select_input.rb
2
+ ActiveAdmin::Inputs::Filters::SelectInput.class_eval do
3
+ prepend ::Adminterface::Extensions::Inputs::SelectInput
4
+ end
@@ -0,0 +1,23 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module NumberInput
5
+ include Base
6
+ include Base::Stringish
7
+ prepend Base::Groupish
8
+
9
+ def input_html
10
+ builder.number_field(method, input_html_options)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ module ActiveAdmin
18
+ module Inputs
19
+ class NumberInput < ::Formtastic::Inputs::NumberInput
20
+ include ::Adminterface::Extensions::Inputs::NumberInput
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module PasswordInput
5
+ include Base
6
+ include Base::Stringish
7
+ prepend Base::Groupish
8
+
9
+ def input_html
10
+ builder.password_field(method, input_html_options)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ module ActiveAdmin
18
+ module Inputs
19
+ class PasswordInput < ::Formtastic::Inputs::PasswordInput
20
+ include ::Adminterface::Extensions::Inputs::PasswordInput
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module PhoneInput
5
+ include Base
6
+ include Base::Stringish
7
+ prepend Base::Groupish
8
+
9
+ def input_html
10
+ builder.phone_field(method, input_html_options)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ module ActiveAdmin
18
+ module Inputs
19
+ class PhoneInput < ::Formtastic::Inputs::PhoneInput
20
+ include ::Adminterface::Extensions::Inputs::PhoneInput
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,41 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module RadioInput
5
+ include Base
6
+ include Base::Choices
7
+
8
+ def choice_html(choice)
9
+ radio_html(choice) +
10
+ template.content_tag(
11
+ :label, choice_label(choice),
12
+ label_html_options.merge(for: choice_input_dom_id(choice))
13
+ )
14
+ end
15
+
16
+ def label_html_options
17
+ super.merge(class: "form-check-label")
18
+ end
19
+
20
+ private
21
+
22
+ def radio_html(choice)
23
+ builder.radio_button(
24
+ input_name,
25
+ choice_value(choice),
26
+ input_html_options.merge(choice_html_options(choice))
27
+ .merge(required: false, class: "form-check-input")
28
+ )
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ module ActiveAdmin
36
+ module Inputs
37
+ class RadioInput < ::Formtastic::Inputs::RadioInput
38
+ include ::Adminterface::Extensions::Inputs::RadioInput
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,22 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module RangeInput
5
+ include Base
6
+
7
+ def input_html_options
8
+ opts = options[:input_html] || {}
9
+ super.merge(class: "form-range #{opts[:class]}".squish)
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ module ActiveAdmin
17
+ module Inputs
18
+ class RangeInput < ::Formtastic::Inputs::RangeInput
19
+ include ::Adminterface::Extensions::Inputs::RangeInput
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ require_relative("./text_input")
2
+
3
+ module ActiveAdmin
4
+ module Inputs
5
+ class RichTextAreaInput < TextInput
6
+ include ::Adminterface::Extensions::Inputs::Base
7
+
8
+ def input_html_options
9
+ opts = super
10
+ opts.merge(class: "trix-content #{opts[:class]}".squish)
11
+ end
12
+
13
+ def to_html
14
+ input_wrapping do
15
+ label_html <<
16
+ builder.rich_text_area(method, input_html_options)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module SearchInput
5
+ include Base
6
+ include Base::Stringish
7
+ prepend Base::Groupish
8
+
9
+ def input_html
10
+ builder.search_field(method, input_html_options)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ module ActiveAdmin
18
+ module Inputs
19
+ class SearchInput < ::Formtastic::Inputs::SearchInput
20
+ include ::Adminterface::Extensions::Inputs::SearchInput
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,33 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module SelectInput
5
+ include Base
6
+ prepend Base::Groupish
7
+
8
+ def to_html
9
+ input_wrapping do
10
+ label_html << input_html
11
+ end
12
+ end
13
+
14
+ def input_html
15
+ select_html
16
+ end
17
+
18
+ def input_html_options
19
+ opts = options[:input_html] || {}
20
+ super.merge(class: "form-select #{opts[:class]}".squish)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ module ActiveAdmin
28
+ module Inputs
29
+ class SelectInput < ::Formtastic::Inputs::SelectInput
30
+ include ::Adminterface::Extensions::Inputs::SelectInput
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,19 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module StringInput
5
+ include Base
6
+ include Base::Stringish
7
+ prepend Base::Groupish
8
+ end
9
+ end
10
+ end
11
+ end
12
+
13
+ module ActiveAdmin
14
+ module Inputs
15
+ class StringInput < ::Formtastic::Inputs::StringInput
16
+ include ::Adminterface::Extensions::Inputs::StringInput
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ module ActiveAdmin
2
+ module Inputs
3
+ class SwitchInput < BooleanInput
4
+ include ::Adminterface::Extensions::Inputs::Base
5
+
6
+ def boolean_wrapper_class
7
+ "#{super} form-switch".squish
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,27 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module TextInput
5
+ include Base
6
+
7
+ def to_html
8
+ input_wrapping do
9
+ label_html << input_html
10
+ end
11
+ end
12
+
13
+ def input_html
14
+ builder.text_area(method, input_html_options)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ module ActiveAdmin
22
+ module Inputs
23
+ class TextInput < ::Formtastic::Inputs::TextInput
24
+ include ::Adminterface::Extensions::Inputs::TextInput
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,19 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module TimePickerInput
5
+ include Base
6
+ include Base::Stringish
7
+ prepend Base::Groupish
8
+ end
9
+ end
10
+ end
11
+ end
12
+
13
+ module ActiveAdmin
14
+ module Inputs
15
+ class TimePickerInput < ::Formtastic::Inputs::TimePickerInput
16
+ include ::Adminterface::Extensions::Inputs::TimePickerInput
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ module ActiveAdmin
2
+ module Inputs
3
+ class TimeSelectInput < ::Formtastic::Inputs::TimeSelectInput
4
+ include ::Adminterface::Extensions::Inputs::Base
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,33 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module TimeZoneInput
5
+ include Base
6
+ prepend Base::Groupish
7
+
8
+ def to_html
9
+ input_wrapping do
10
+ label_html << input_html
11
+ end
12
+ end
13
+
14
+ def input_html
15
+ builder.time_zone_select(method, priority_zones, input_options, input_html_options)
16
+ end
17
+
18
+ def input_html_options
19
+ opts = options[:input_html] || {}
20
+ super.merge(class: "form-select #{opts[:class]}".squish)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ module ActiveAdmin
28
+ module Inputs
29
+ class TimeZoneInput < ::Formtastic::Inputs::TimeZoneInput
30
+ include ::Adminterface::Extensions::Inputs::TimeZoneInput
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,23 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module UrlInput
5
+ include Base
6
+ include Base::Stringish
7
+ prepend Base::Groupish
8
+
9
+ def input_html
10
+ builder.url_field(method, input_html_options)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ module ActiveAdmin
18
+ module Inputs
19
+ class UrlInput < ::Formtastic::Inputs::UrlInput
20
+ include ::Adminterface::Extensions::Inputs::UrlInput
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,16 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module MenuItem
4
+ def initialize(options = {})
5
+ @icon = options[:icon]
6
+ super
7
+ end
8
+ end
9
+ end
10
+ end
11
+
12
+ # Overwrite activeadmin/lib/active_admin/menu_item.rb
13
+ ActiveAdmin::MenuItem.class_eval do
14
+ prepend Adminterface::Extensions::MenuItem
15
+ attr_reader :icon
16
+ end
@@ -0,0 +1,30 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module NamespaceSettings
4
+ extend ActiveSupport::Concern
5
+
6
+ CONFIGS = Adminterface::Configs::DEFAULTS
7
+
8
+ included do
9
+ # The default component configs
10
+ register :components, CONFIGS[:components]
11
+
12
+ # The default css_classes
13
+ register :css_classes, CONFIGS[:css_classes]
14
+
15
+ # Comments
16
+ register :comments_pager, {window: 2}
17
+ register :comments_per_page, 30
18
+ register :comments_input, :text
19
+
20
+ # Resource
21
+ register :pager, {window: 2}
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ # Overwrite activeadmin/lib/active_admin/namespace_settings.rb
28
+ ActiveAdmin::NamespaceSettings.class_eval do
29
+ include Adminterface::Extensions::NamespaceSettings
30
+ end
@@ -0,0 +1,122 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Views
4
+ module Comments
5
+ def default_title_class
6
+ "title #{comments_css_classes.dig(:header, :title)}".squish
7
+ end
8
+
9
+ def default_wrapper_class
10
+ "panel #{comments_css_classes[:wrapper]}".squish
11
+ end
12
+
13
+ def default_header_class
14
+ "panel-header #{comments_css_classes.dig(:header, :wrapper)}".squish
15
+ end
16
+
17
+ def default_body_class
18
+ "panel-body #{comments_css_classes[:body]}".squish
19
+ end
20
+
21
+ def item_class
22
+ @item_class ||= comments_css_classes.dig(:item)
23
+ end
24
+
25
+ protected
26
+
27
+ def build_comments
28
+ build_comment_form
29
+
30
+ div id: "active_admin_comments_wrap", class: "active_admin_comments" do
31
+ if @comments.any?
32
+ div class: "active_admin_comments_collection #{item_class[:group]}".squish do
33
+ @comments.each(&method(:build_comment))
34
+ end
35
+
36
+ div class: "paginating-footer" do
37
+ defaults = {theme: "active_admin", params: {anchor: "active_admin_comments_wrap"}}
38
+ text_node paginate @comments, **defaults.merge(configs.comments_pager)
39
+ div page_entries_info(@comments).html_safe, class: "pagination_information"
40
+ end
41
+ else
42
+ build_empty_message
43
+ end
44
+ end
45
+ end
46
+
47
+ def build_comment(comment)
48
+ div for: comment, class: "active_admin_comment #{item_class[:wrapper]}".squish do
49
+ div class: "active_admin_comment_header #{item_class.dig(:header, :wrapper)}".squish do
50
+ div class: "active_admin_comment_meta #{item_class.dig(:header, :meta)}".squish do
51
+ div class: "active_admin_comment_author #{item_class.dig(:header, :author)}".squish do
52
+ comment.author ? auto_link(comment.author) : I18n.t("active_admin.comments.author_missing")
53
+ end
54
+
55
+ div pretty_format(comment.created_at), class: "timestamp"
56
+ end
57
+
58
+ comments_actions(comment)
59
+ end
60
+
61
+ div class: "active_admin_comment_body #{item_class[:body]}".squish do
62
+ if comment.body.is_a?(ActionText::RichText)
63
+ text_node comment.body
64
+ else
65
+ simple_format comment.body
66
+ end
67
+ end
68
+ end
69
+ end
70
+
71
+ def comments_actions(comment)
72
+ return unless authorized?(ActiveAdmin::Auth::DESTROY, comment)
73
+
74
+ div class: "actions" do
75
+ dropdown_menu "",
76
+ button: {class: item_class[:actions]},
77
+ menu: {class: "dropdown-menu-right"} do
78
+ item(I18n.t("active_admin.comments.delete"), comments_url(comment.id),
79
+ method: :delete, data: {confirm: I18n.t("active_admin.comments.delete_confirmation")})
80
+ end
81
+ end
82
+ end
83
+
84
+ def build_comment_form
85
+ return unless authorized?(ActiveAdmin::Auth::CREATE, ActiveAdmin::Comment)
86
+
87
+ input_type = configs.comments_input
88
+ css_classes = comments_css_classes
89
+
90
+ active_admin_form_for(ActiveAdmin::Comment.new, url: comment_form_url) do |f|
91
+ f.inputs do
92
+ f.input :resource_type, as: :hidden, input_html: {value: ActiveAdmin::Comment.resource_type(parent.resource)}
93
+ f.input :resource_id, as: :hidden, input_html: {value: parent.resource.id}
94
+ f.input :body, as: input_type, label: false, input_html: {rows: "3"}
95
+ end
96
+ f.actions do
97
+ f.action :submit, label: I18n.t("active_admin.comments.add"), button_html: {class: css_classes["submit"]}
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
105
+
106
+ # Overwrite activeadmin/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb
107
+ ActiveAdmin::Comments::Views::Comments.class_eval do
108
+ prepend Adminterface::Extensions::Views::Comments
109
+ has_css_classes_for :comments
110
+
111
+ def build(resource)
112
+ if authorized?(ActiveAdmin::Auth::READ, ActiveAdmin::Comment)
113
+ @resource = resource
114
+ @comments =
115
+ active_admin_authorization
116
+ .scope_collection(ActiveAdmin::Comment.find_for_resource_in_namespace(resource, active_admin_namespace.name)
117
+ .includes(:author).public_send(Kaminari.config.page_method_name, params[:page])).per(configs.comments_per_page)
118
+ super(title, for: resource)
119
+ build_comments
120
+ end
121
+ end
122
+ end