adminterface 0.0.0 → 0.2.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 (267) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +1 -1
  3. data/README.md +61 -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__/detached_dropdown.spec.js +70 -0
  90. data/app/javascript/adminterface/lib/__tests__/filters.spec.js +151 -0
  91. data/app/javascript/adminterface/lib/__tests__/utils.spec.js +281 -0
  92. data/app/javascript/adminterface/lib/batch_actions.js +106 -0
  93. data/app/javascript/adminterface/lib/checkbox_toggler.js +55 -0
  94. data/app/javascript/adminterface/lib/confirm_dialog.js +113 -0
  95. data/app/javascript/adminterface/lib/detached_dropdown.js +34 -0
  96. data/app/javascript/adminterface/lib/filters.js +34 -0
  97. data/app/javascript/adminterface/lib/has_many.js +122 -0
  98. data/app/javascript/adminterface/lib/header_toggler.js +54 -0
  99. data/app/javascript/adminterface/lib/input.js +108 -0
  100. data/app/javascript/adminterface/lib/inputs/base/groupish.js +55 -0
  101. data/app/javascript/adminterface/lib/inputs/base/pluginish.js +63 -0
  102. data/app/javascript/adminterface/lib/inputs/base_input.js +87 -0
  103. data/app/javascript/adminterface/lib/inputs/boolean_input.js +30 -0
  104. data/app/javascript/adminterface/lib/inputs/check_boxes_input.js +14 -0
  105. data/app/javascript/adminterface/lib/inputs/choices_input.js +96 -0
  106. data/app/javascript/adminterface/lib/inputs/color_input.js +14 -0
  107. data/app/javascript/adminterface/lib/inputs/country_input.js +90 -0
  108. data/app/javascript/adminterface/lib/inputs/datalist_input.js +41 -0
  109. data/app/javascript/adminterface/lib/inputs/date_picker_input.js +11 -0
  110. data/app/javascript/adminterface/lib/inputs/datetime_picker_input.js +11 -0
  111. data/app/javascript/adminterface/lib/inputs/hidden_input.js +21 -0
  112. data/app/javascript/adminterface/lib/inputs/password_input.js +13 -0
  113. data/app/javascript/adminterface/lib/inputs/radio_input.js +13 -0
  114. data/app/javascript/adminterface/lib/inputs/select_input.js +68 -0
  115. data/app/javascript/adminterface/lib/inputs/string_input.js +13 -0
  116. data/app/javascript/adminterface/lib/inputs/switch_input.js +9 -0
  117. data/app/javascript/adminterface/lib/inputs/text_input.js +12 -0
  118. data/app/javascript/adminterface/lib/inputs/time_picker_input.js +13 -0
  119. data/app/javascript/adminterface/lib/inputs/time_zone_input.js +66 -0
  120. data/app/javascript/adminterface/lib/per_page.js +18 -0
  121. data/app/javascript/adminterface/lib/plugins/input_counter.js +94 -0
  122. data/app/javascript/adminterface/lib/plugins/password_visibility.js +70 -0
  123. data/app/javascript/adminterface/lib/table_checkbox_toggler.js +47 -0
  124. data/app/javascript/adminterface/lib/utils.js +148 -0
  125. data/app/views/active_admin/devise/confirmations/new.html.erb +19 -0
  126. data/app/views/active_admin/devise/passwords/edit.html.erb +21 -0
  127. data/app/views/active_admin/devise/passwords/new.html.erb +19 -0
  128. data/app/views/active_admin/devise/registrations/new.html.erb +24 -0
  129. data/app/views/active_admin/devise/sessions/new.html.erb +23 -0
  130. data/app/views/active_admin/devise/shared/_links.html.erb +25 -0
  131. data/app/views/active_admin/devise/shared/_omniauth.html.erb +10 -0
  132. data/app/views/active_admin/devise/unlocks/new.html.erb +19 -0
  133. data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  134. data/app/views/kaminari/active_admin/_gap.html.erb +12 -0
  135. data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  136. data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  137. data/app/views/kaminari/active_admin/_page.html.erb +12 -0
  138. data/app/views/kaminari/active_admin/_paginator.html.erb +27 -0
  139. data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  140. data/app/views/layouts/active_admin_logged_out.html.erb +56 -0
  141. data/config/locales/active_admin.en.yml +25 -0
  142. data/lib/adminterface/callable.rb +7 -0
  143. data/lib/adminterface/configs.rb +76 -0
  144. data/lib/adminterface/data/base.rb +11 -0
  145. data/lib/adminterface/data/countries.rb +44 -0
  146. data/lib/adminterface/data/time_zones.rb +31 -0
  147. data/lib/adminterface/data.rb +6 -0
  148. data/lib/adminterface/encryption/encryptor.rb +26 -0
  149. data/lib/adminterface/engine.rb +22 -0
  150. data/lib/adminterface/extensions/base_controller.rb +55 -0
  151. data/lib/adminterface/extensions/batch_actions/resource_extension.rb +64 -0
  152. data/lib/adminterface/extensions/batch_actions/views/batch_action_selector.rb +48 -0
  153. data/lib/adminterface/extensions/batch_actions/views/selection_cells.rb +39 -0
  154. data/lib/adminterface/extensions/dsl.rb +13 -0
  155. data/lib/adminterface/extensions/dynamic_settings_node.rb +26 -0
  156. data/lib/adminterface/extensions/filters/forms.rb +76 -0
  157. data/lib/adminterface/extensions/form_builder.rb +165 -0
  158. data/lib/adminterface/extensions/inputs/base/active_admin_config.rb +21 -0
  159. data/lib/adminterface/extensions/inputs/base/choices.rb +33 -0
  160. data/lib/adminterface/extensions/inputs/base/groupish.rb +50 -0
  161. data/lib/adminterface/extensions/inputs/base/html.rb +15 -0
  162. data/lib/adminterface/extensions/inputs/base/labelling.rb +15 -0
  163. data/lib/adminterface/extensions/inputs/base/pluginish.rb +56 -0
  164. data/lib/adminterface/extensions/inputs/base/stringish.rb +19 -0
  165. data/lib/adminterface/extensions/inputs/base/wrapping.rb +25 -0
  166. data/lib/adminterface/extensions/inputs/base.rb +19 -0
  167. data/lib/adminterface/extensions/inputs/boolean_input.rb +42 -0
  168. data/lib/adminterface/extensions/inputs/check_boxes_input.rb +34 -0
  169. data/lib/adminterface/extensions/inputs/color_input.rb +29 -0
  170. data/lib/adminterface/extensions/inputs/country_input.rb +33 -0
  171. data/lib/adminterface/extensions/inputs/datalist_input.rb +26 -0
  172. data/lib/adminterface/extensions/inputs/date_picker_input.rb +30 -0
  173. data/lib/adminterface/extensions/inputs/date_select_input.rb +7 -0
  174. data/lib/adminterface/extensions/inputs/datetime_picker_input.rb +19 -0
  175. data/lib/adminterface/extensions/inputs/datetime_select_input.rb +7 -0
  176. data/lib/adminterface/extensions/inputs/email_input.rb +23 -0
  177. data/lib/adminterface/extensions/inputs/file_input.rb +19 -0
  178. data/lib/adminterface/extensions/inputs/filters/base/search_method_select.rb +37 -0
  179. data/lib/adminterface/extensions/inputs/filters/base.rb +3 -0
  180. data/lib/adminterface/extensions/inputs/filters/boolean_input.rb +4 -0
  181. data/lib/adminterface/extensions/inputs/filters/check_boxes_input.rb +12 -0
  182. data/lib/adminterface/extensions/inputs/filters/date_picker_input.rb +4 -0
  183. data/lib/adminterface/extensions/inputs/filters/date_range_input.rb +50 -0
  184. data/lib/adminterface/extensions/inputs/filters/select_input.rb +4 -0
  185. data/lib/adminterface/extensions/inputs/number_input.rb +23 -0
  186. data/lib/adminterface/extensions/inputs/password_input.rb +23 -0
  187. data/lib/adminterface/extensions/inputs/phone_input.rb +23 -0
  188. data/lib/adminterface/extensions/inputs/radio_input.rb +41 -0
  189. data/lib/adminterface/extensions/inputs/range_input.rb +22 -0
  190. data/lib/adminterface/extensions/inputs/rich_text_area_input.rb +21 -0
  191. data/lib/adminterface/extensions/inputs/search_input.rb +23 -0
  192. data/lib/adminterface/extensions/inputs/select_input.rb +33 -0
  193. data/lib/adminterface/extensions/inputs/string_input.rb +19 -0
  194. data/lib/adminterface/extensions/inputs/switch_input.rb +11 -0
  195. data/lib/adminterface/extensions/inputs/text_input.rb +27 -0
  196. data/lib/adminterface/extensions/inputs/time_picker_input.rb +19 -0
  197. data/lib/adminterface/extensions/inputs/time_select_input.rb +7 -0
  198. data/lib/adminterface/extensions/inputs/time_zone_input.rb +33 -0
  199. data/lib/adminterface/extensions/inputs/url_input.rb +23 -0
  200. data/lib/adminterface/extensions/menu_item.rb +16 -0
  201. data/lib/adminterface/extensions/namespace_settings.rb +30 -0
  202. data/lib/adminterface/extensions/orm/active_record/comments/views/active_admin_comments.rb +122 -0
  203. data/lib/adminterface/extensions/resource/action_items.rb +117 -0
  204. data/lib/adminterface/extensions/sidebar_section.rb +35 -0
  205. data/lib/adminterface/extensions/view_helpers/alert_helper.rb +36 -0
  206. data/lib/adminterface/extensions/view_helpers/component_helper.rb +23 -0
  207. data/lib/adminterface/extensions/views/action_items.rb +39 -0
  208. data/lib/adminterface/extensions/views/columns.rb +59 -0
  209. data/lib/adminterface/extensions/views/components/active_admin_form.rb +47 -0
  210. data/lib/adminterface/extensions/views/components/attributes_table.rb +28 -0
  211. data/lib/adminterface/extensions/views/components/blank_slate.rb +19 -0
  212. data/lib/adminterface/extensions/views/components/dropdown_menu.rb +55 -0
  213. data/lib/adminterface/extensions/views/components/icon.rb +26 -0
  214. data/lib/adminterface/extensions/views/components/index_list.rb +43 -0
  215. data/lib/adminterface/extensions/views/components/menu.rb +18 -0
  216. data/lib/adminterface/extensions/views/components/menu_item.rb +64 -0
  217. data/lib/adminterface/extensions/views/components/paginated_collection.rb +52 -0
  218. data/lib/adminterface/extensions/views/components/panel.rb +71 -0
  219. data/lib/adminterface/extensions/views/components/scopes.rb +53 -0
  220. data/lib/adminterface/extensions/views/components/sidebar_section.rb +39 -0
  221. data/lib/adminterface/extensions/views/components/site_title.rb +36 -0
  222. data/lib/adminterface/extensions/views/components/status_tag.rb +26 -0
  223. data/lib/adminterface/extensions/views/components/table_for.rb +23 -0
  224. data/lib/adminterface/extensions/views/components/tabs.rb +76 -0
  225. data/lib/adminterface/extensions/views/footer.rb +27 -0
  226. data/lib/adminterface/extensions/views/header.rb +59 -0
  227. data/lib/adminterface/extensions/views/index_as_grid.rb +53 -0
  228. data/lib/adminterface/extensions/views/index_as_table.rb +77 -0
  229. data/lib/adminterface/extensions/views/pages/base.rb +164 -0
  230. data/lib/adminterface/extensions/views/pages/form.rb +27 -0
  231. data/lib/adminterface/extensions/views/pages/index.rb +136 -0
  232. data/lib/adminterface/extensions/views/pages/page.rb +18 -0
  233. data/lib/adminterface/extensions/views/title_bar.rb +74 -0
  234. data/lib/adminterface/fixtures/components.yml +73 -0
  235. data/lib/adminterface/fixtures/css_classes.yml +107 -0
  236. data/lib/adminterface/initializers/batch_actions.rb +15 -0
  237. data/lib/adminterface/initializers/comments.rb +13 -0
  238. data/lib/adminterface/initializers/configurations.rb +38 -0
  239. data/lib/adminterface/initializers/formtastic.rb +58 -0
  240. data/lib/adminterface/initializers/resource.rb +20 -0
  241. data/lib/adminterface/initializers/view_helpers.rb +14 -0
  242. data/lib/adminterface/initializers/views.rb +39 -0
  243. data/lib/adminterface/license.rb +18 -0
  244. data/lib/adminterface/licensing/base.rb +99 -0
  245. data/lib/adminterface/licensing/commercial.rb +7 -0
  246. data/lib/adminterface/licensing/notice.rb +54 -0
  247. data/lib/adminterface/licensing/personal.rb +13 -0
  248. data/lib/adminterface/public.pem +9 -0
  249. data/lib/adminterface/version.rb +3 -0
  250. data/lib/adminterface.rb +55 -0
  251. data/lib/generators/adminterface/comments/comments_generator.rb +29 -0
  252. data/lib/generators/adminterface/comments/templates/README +13 -0
  253. data/lib/generators/adminterface/comments/templates/active_admin_comment_action_text.rb +18 -0
  254. data/lib/generators/adminterface/comments/templates/migrations/drop_body_for_active_admin_comments.rb.erb +28 -0
  255. data/lib/generators/adminterface/configs/configs_generator.rb +19 -0
  256. data/lib/generators/adminterface/configs/templates/README +33 -0
  257. data/lib/generators/adminterface/install/install_generator.rb +41 -0
  258. data/lib/generators/adminterface/install/templates/dashboard.rb +32 -0
  259. data/lib/generators/adminterface/views/views_generator.rb +15 -0
  260. data/lib/generators/adminterface/webpacker/templates/README +27 -0
  261. data/lib/generators/adminterface/webpacker/templates/active_admin.js +12 -0
  262. data/lib/generators/adminterface/webpacker/templates/active_admin.scss +8 -0
  263. data/lib/generators/adminterface/webpacker/templates/print.scss +3 -0
  264. data/lib/generators/adminterface/webpacker/webpacker_generator.rb +55 -0
  265. data/lib/tasks/adminterface_tasks.rake +4 -0
  266. metadata +285 -9
  267. data/lib/name.rb +0 -1
@@ -0,0 +1,15 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module Base
5
+ module Html
6
+ def input_html_options
7
+ options = super
8
+ options[:class] = "#{options[:class]} form-control".squish
9
+ options.merge(plugins_options)
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module Base
5
+ module Labelling
6
+ def label_html_options
7
+ opts = super
8
+ opts[:class].push "form-label"
9
+ opts
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,56 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module Base
5
+ module Pluginish
6
+ class Config
7
+ attr_reader :name, :configs, :options
8
+
9
+ def initialize(configs, options)
10
+ @name = configs[:name]
11
+ @configs = configs
12
+ @options = options[@name.underscore.to_sym]
13
+ end
14
+
15
+ def attributes
16
+ return {} unless enabled?
17
+
18
+ {"aa-#{name}": options.is_a?(Hash) ? options : defaults}
19
+ end
20
+
21
+ def defaults
22
+ @defaults ||= configs[:options] || {}
23
+ end
24
+
25
+ def enabled?
26
+ (!options.eql?(false) && configs[:default].eql?(true)) ||
27
+ (options.present? || options.eql?(true))
28
+ end
29
+ end
30
+
31
+ def plugins_configs
32
+ plugins&.map { |plugin| Config.new(plugin, options).attributes } || []
33
+ end
34
+
35
+ def plugins_options
36
+ {data: plugins_configs.inject(&:merge)}
37
+ end
38
+
39
+ def plugin?(name)
40
+ !!plugins_options.dig(:data, "aa-#{name}".to_sym)
41
+ end
42
+
43
+ private
44
+
45
+ def plugins
46
+ inputs_config.dig(plugins_configs_key, :js)
47
+ end
48
+
49
+ def plugins_configs_key
50
+ self.class.name.underscore.split("/").last.gsub("_input", "").to_sym
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,19 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module Base
5
+ module Stringish
6
+ def to_html
7
+ input_wrapping do
8
+ label_html << input_html
9
+ end
10
+ end
11
+
12
+ def input_html
13
+ builder.text_field(method, input_html_options)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,25 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module Base
5
+ module Wrapping
6
+ def input_wrapping(&block)
7
+ html = input_wrapping_html(&block)
8
+ template.concat(html) if template.output_buffer && template.assigns[:has_many_block]
9
+ html
10
+ end
11
+
12
+ def input_wrapping_html(&block)
13
+ template.content_tag(:div,
14
+ [template.capture(&block), error_html, hint_html].join("\n").html_safe,
15
+ wrapper_html_options)
16
+ end
17
+
18
+ def wrapper_classes
19
+ "#{super} mb-3"
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,19 @@
1
+ require_relative("./base/active_admin_config")
2
+ require_relative("./base/html")
3
+ require_relative("./base/labelling")
4
+ require_relative("./base/wrapping")
5
+ require_relative("./base/pluginish")
6
+
7
+ module Adminterface
8
+ module Extensions
9
+ module Inputs
10
+ module Base
11
+ include Html
12
+ include Labelling
13
+ include Wrapping
14
+ include Pluginish
15
+ include ActiveAdminConfig
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,42 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module BooleanInput
5
+ include Base
6
+
7
+ def to_html
8
+ input_wrapping do
9
+ template.content_tag :div, class: boolean_wrapper_class do
10
+ hidden_field_html +
11
+ check_box_html +
12
+ label_html
13
+ end
14
+ end
15
+ end
16
+
17
+ def input_html_options
18
+ opts = options[:input_html] || {}
19
+ super.merge(class: "form-check-input #{opts[:class]}".squish)
20
+ end
21
+
22
+ def label_html_options
23
+ super.merge(class: "form-check-label")
24
+ end
25
+
26
+ private
27
+
28
+ def boolean_wrapper_class
29
+ "form-check"
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ module ActiveAdmin
37
+ module Inputs
38
+ class BooleanInput < ::Formtastic::Inputs::BooleanInput
39
+ include Adminterface::Extensions::Inputs::BooleanInput
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,34 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module CheckBoxesInput
5
+ include Base
6
+ include Base::Choices
7
+
8
+ def choice_html(choice)
9
+ checkbox_input(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 input_html_options
17
+ super.merge(class: "form-check-input")
18
+ end
19
+
20
+ def label_html_options
21
+ super.merge(class: "form-check-label")
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ module ActiveAdmin
29
+ module Inputs
30
+ class CheckBoxesInput < ::Formtastic::Inputs::CheckBoxesInput
31
+ include ::Adminterface::Extensions::Inputs::CheckBoxesInput
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,29 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module ColorInput
5
+ include Base
6
+ include Base::Stringish
7
+ prepend Base::Groupish
8
+
9
+ def input_html
10
+ builder.color_field(method, input_html_options)
11
+ end
12
+
13
+ def input_html_options
14
+ opts = super
15
+ opts[:class] = "#{opts[:class]} form-control-color".squish
16
+ opts
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ module ActiveAdmin
24
+ module Inputs
25
+ class ColorInput < ::Formtastic::Inputs::ColorInput
26
+ include ::Adminterface::Extensions::Inputs::ColorInput
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,33 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module CountryInput
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.country_select(method, priority_countries, 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 CountryInput < ::Formtastic::Inputs::CountryInput
30
+ include ::Adminterface::Extensions::Inputs::CountryInput
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,26 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module DatalistInput
5
+ include Base
6
+ include Base::Stringish
7
+ prepend Base::Groupish
8
+
9
+ def to_html
10
+ @name = input_html_options[:id].gsub(/_id$/, "")
11
+ input_wrapping do
12
+ label_html << input_html << data_list_html
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ module ActiveAdmin
21
+ module Inputs
22
+ class DatalistInput < ::Formtastic::Inputs::DatalistInput
23
+ include ::Adminterface::Extensions::Inputs::DatalistInput
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,30 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module DatePickerInput
5
+ include Base
6
+ include Base::Stringish
7
+ prepend Base::Groupish
8
+
9
+ def input_html_options
10
+ opts = super
11
+ opts[:class] = "#{opts[:class]} form-control".squish
12
+ opts
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ module ActiveAdmin
20
+ module Inputs
21
+ class DatePickerInput < ::Formtastic::Inputs::DatePickerInput
22
+ include ::Adminterface::Extensions::Inputs::DatePickerInput
23
+ end
24
+ end
25
+ end
26
+
27
+ # Overwrite activeadmin/lib/active_admin/inputs/datepicker_input.rb
28
+ ActiveAdmin::Inputs::DatepickerInput.class_eval do
29
+ prepend ::Adminterface::Extensions::Inputs::DatePickerInput
30
+ end
@@ -0,0 +1,7 @@
1
+ module ActiveAdmin
2
+ module Inputs
3
+ class DateSelectInput < ::Formtastic::Inputs::DateSelectInput
4
+ include ::Adminterface::Extensions::Inputs::Base
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module DatetimePickerInput
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 DatetimePickerInput < ::Formtastic::Inputs::DatetimePickerInput
16
+ include ::Adminterface::Extensions::Inputs::DatetimePickerInput
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ module ActiveAdmin
2
+ module Inputs
3
+ class DatetimeSelectInput < ::Formtastic::Inputs::DatetimeSelectInput
4
+ include ::Adminterface::Extensions::Inputs::Base
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,23 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Inputs
4
+ module EmailInput
5
+ include Base
6
+ include Base::Stringish
7
+ prepend Base::Groupish
8
+
9
+ def input_html
10
+ builder.email_field(method, input_html_options)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ module ActiveAdmin
18
+ module Inputs
19
+ class EmailInput < ::Formtastic::Inputs::EmailInput
20
+ include ::Adminterface::Extensions::Inputs::EmailInput
21
+ end
22
+ end
23
+ end
@@ -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