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,74 @@
1
+ module Adminterface
2
+ module Extensions
3
+ module Views
4
+ module TitleBar
5
+ def tag_name
6
+ :nav
7
+ end
8
+
9
+ private
10
+
11
+ def build_titlebar_left
12
+ div build_breadcrumb, id: "titlebar_left"
13
+ end
14
+
15
+ def build_header_toggler
16
+ button class: "navbar-toggler", "data-aa-header-toggler": {}.to_json do
17
+ span class: "navbar-toggler-icon"
18
+ end
19
+ end
20
+
21
+ def build_titlebar_right
22
+ return if @action_items.blank?
23
+
24
+ super
25
+ end
26
+
27
+ def links
28
+ breadcrumb_config = active_admin_config&.breadcrumb
29
+ if breadcrumb_config.is_a?(Proc)
30
+ instance_exec(controller, &active_admin_config.breadcrumb)
31
+ elsif breadcrumb_config.present?
32
+ breadcrumb_links
33
+ end
34
+ end
35
+
36
+ def build_breadcrumb(_separator = "/")
37
+ ol id: "breadcrumb", class: "breadcrumb" do
38
+ links.each do |link|
39
+ li(text_node(link), class: "breadcrumb-item")
40
+ end
41
+ li(text_node(@title), class: "breadcrumb-item active")
42
+ end
43
+ end
44
+
45
+ def build_action_items
46
+ @action_items.group_by(&:group).each do |_index, items|
47
+ insert_tag(view_factory.action_items, items)
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ # Overwrite activeadmin/lib/active_admin/views/title_bar.rb
56
+ ActiveAdmin::Views::TitleBar.class_eval do
57
+ prepend Adminterface::Extensions::Views::TitleBar
58
+ has_css_classes_for :title_bar
59
+
60
+ def build(namespace, title, action_items)
61
+ super(id: "title_bar")
62
+ add_class "navbar #{title_bar_css_classes[:wrapper]}".squish
63
+ @title = title
64
+ @action_items = action_items
65
+ @namespace = namespace
66
+
67
+ div class: title_bar_css_classes[:container] do
68
+ build_header_toggler
69
+ site_title @namespace
70
+ build_titlebar_left
71
+ build_titlebar_right
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,73 @@
1
+ ---
2
+ action_items:
3
+ destroy:
4
+ css_class: null
5
+ icon_class: null
6
+ only:
7
+ - show
8
+ edit:
9
+ css_class: null
10
+ icon_class: null
11
+ only:
12
+ - show
13
+ new:
14
+ css_class: btn btn-primary
15
+ icon_class: null
16
+ only:
17
+ - index
18
+ columns:
19
+ breakpoint: md
20
+ filter:
21
+ position: sidebar
22
+ flash:
23
+ dismissible: true
24
+ header:
25
+ css_class:
26
+ aside: navbar-light bg-light
27
+ sidebar: navbar-dark bg-dark
28
+ top: navbar-dark bg-dark navbar-expand-lg
29
+ position: top
30
+ index_as_grid:
31
+ breakpoint: lg
32
+ inputs:
33
+ date_picker: &DATE_PICKER_CONFIGS
34
+ js:
35
+ - name: flatpickr
36
+ default: true
37
+ options:
38
+ altFormat: Y-m-d
39
+ altInput: true
40
+ enableTime: false
41
+ datepicker:
42
+ <<: *DATE_PICKER_CONFIGS
43
+ datetime_picker:
44
+ js:
45
+ - name: flatpickr
46
+ default: true
47
+ options:
48
+ altFormat: Y-m-d, h:i K
49
+ altInput: true
50
+ enableTime: true
51
+ select:
52
+ js:
53
+ - name: tom-select
54
+ default: false
55
+ options:
56
+ plugins:
57
+ - remove_button
58
+ persist: false
59
+ createOnBlur: false
60
+ create: false
61
+ text:
62
+ js:
63
+ - name: input-counter
64
+ default: false
65
+ options:
66
+ limit: 300
67
+ type: letter
68
+ password:
69
+ js:
70
+ - name: password-visibility
71
+ default: false
72
+ sidebar:
73
+ position: right
@@ -0,0 +1,107 @@
1
+ ---
2
+ action_items:
3
+ group: btn-group
4
+ item: btn btn-light
5
+ attributes_table:
6
+ table: table text-break
7
+ wrapper: table-responsive
8
+ blank_slate: alert alert-secondary text-center
9
+ columns: g-3
10
+ comments:
11
+ body: card-body
12
+ header:
13
+ title: h5 mb-0
14
+ wrapper: card-header
15
+ item:
16
+ actions: text-secondary caret-dots
17
+ body: py-2
18
+ group: list-group list-group-flush
19
+ header:
20
+ author: h6 mb-0
21
+ meta: small text-secondary
22
+ wrapper: null
23
+ wrapper: mb-3
24
+ pagination:
25
+ meta: mb-3 border-bottom
26
+ submit: btn btn-primary
27
+ wrapper: card
28
+ confirm_dialog:
29
+ cancel: btn btn-link
30
+ confirm: btn btn-primary
31
+ filters:
32
+ actions:
33
+ cancel: btn btn-link
34
+ submit: btn btn-primary
35
+ flash:
36
+ alert: alert-warning
37
+ error: alert-danger
38
+ notice: alert-success
39
+ footer:
40
+ body: small text-muted
41
+ wrapper: mt-3 text-center
42
+ form:
43
+ actions:
44
+ cancel: btn btn-link
45
+ submit: btn btn-primary
46
+ error: alert alert-danger
47
+ has_many:
48
+ destroy: text-danger
49
+ heading: h5
50
+ item: border rounded mb-3 p-3
51
+ new: null
52
+ header:
53
+ container: container-fluid
54
+ wrapper: null
55
+ html:
56
+ body: null
57
+ container:
58
+ form: container
59
+ index: container
60
+ page: container
61
+ show: container
62
+ icon: bi
63
+ index_as_grid:
64
+ group: row g-3
65
+ item: d-flex flex-column
66
+ index_as_table:
67
+ actions:
68
+ dropdown:
69
+ toggle: btn btn-sm btn-light
70
+ buttons:
71
+ group: btn-group
72
+ item: btn btn-sm btn-light
73
+ table: table
74
+ wrapper: table-responsive
75
+ panel:
76
+ body: card-body
77
+ header:
78
+ title: h5 mb-0
79
+ wrapper: card-header
80
+ wrapper: card
81
+ sidebar_section:
82
+ body: card-body
83
+ header:
84
+ title: h5 mb-0
85
+ wrapper: card-header
86
+ wrapper: card
87
+ status_tag:
88
+ 'no': badge bg-danger
89
+ unset: badge bg-danger
90
+ 'yes': badge bg-success
91
+ table_for: table
92
+ table_tools:
93
+ btn: btn btn-light
94
+ confirm_dialog:
95
+ cancel: btn btn-link
96
+ confirm: btn btn-primary
97
+ indexes:
98
+ tabs: nav-pills nav-sm
99
+ scopes:
100
+ counts:
101
+ positive: badge bg-primary
102
+ zero: d-none
103
+ tabs: nav-tabs
104
+ tabs: nav-tabs
105
+ title_bar:
106
+ container: container-fluid
107
+ wrapper: navbar-light bg-white border shadow-sm
@@ -0,0 +1,15 @@
1
+ module Adminterface
2
+ module Initializers
3
+ module BatchActions
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ ActiveAdmin.before_load do |_app|
8
+ require_relative("../extensions/batch_actions/resource_extension")
9
+ require_relative("../extensions/batch_actions/views/batch_action_selector")
10
+ require_relative("../extensions/batch_actions/views/selection_cells")
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ module Adminterface
2
+ module Initializers
3
+ module Comments
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ config.before_configuration do |_app|
8
+ require_relative("../extensions/orm/active_record/comments/views/active_admin_comments")
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,38 @@
1
+ module Adminterface
2
+ module Initializers
3
+ module Configurations
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ config.before_configuration do |_app|
8
+ require_relative("../extensions/dynamic_settings_node")
9
+ require_relative("../extensions/namespace_settings")
10
+
11
+ # Include the configs finder for not registered class/module files
12
+ ActiveAdmin::Views::FormtasticProxy.send :include, Adminterface::Configs::Finders
13
+ ActiveAdmin::Component.send :include, Adminterface::Configs::Finders
14
+ ActiveAdmin::ViewHelpers.send :include, Adminterface::Configs::Finders
15
+ ActiveAdmin::Resource.send :include, Adminterface::Configs::Configurable
16
+ ActiveAdmin::Page.send :include, Adminterface::Configs::Configurable
17
+ end
18
+
19
+ # Override ActiveAdmin defaults
20
+ config.before_initialize do
21
+ ActiveAdmin.setup do |config|
22
+ config.current_filters = false
23
+ config.comments_menu = false
24
+ config.comments_order = "created_at DESC"
25
+
26
+ meta_tags = {
27
+ version: Adminterface::VERSION,
28
+ viewport: "width=device-width, height=device-height, initial-scale=1.0, user-scalable=no"
29
+ }
30
+
31
+ config.meta_tags_for_logged_out_pages = meta_tags
32
+ config.meta_tags = meta_tags
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,58 @@
1
+ module Adminterface
2
+ module Initializers
3
+ module Formtastic
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ initializer "base" do |_app|
8
+ require_relative("../extensions/form_builder")
9
+ require_relative("../extensions/inputs/base")
10
+ require_relative("../extensions/inputs/base/choices")
11
+ require_relative("../extensions/inputs/base/groupish")
12
+ require_relative("../extensions/inputs/base/stringish")
13
+ require_relative("../extensions/inputs/base/pluginish")
14
+ end
15
+
16
+ initializer "inputs" do |_app|
17
+ require_relative("../extensions/inputs/boolean_input")
18
+ require_relative("../extensions/inputs/check_boxes_input")
19
+ require_relative("../extensions/inputs/color_input")
20
+ require_relative("../extensions/inputs/country_input")
21
+ require_relative("../extensions/inputs/datalist_input")
22
+ require_relative("../extensions/inputs/date_picker_input")
23
+ require_relative("../extensions/inputs/date_select_input")
24
+ require_relative("../extensions/inputs/datetime_picker_input")
25
+ require_relative("../extensions/inputs/datetime_select_input")
26
+ require_relative("../extensions/inputs/email_input")
27
+ require_relative("../extensions/inputs/file_input")
28
+ require_relative("../extensions/inputs/number_input")
29
+ require_relative("../extensions/inputs/password_input")
30
+ require_relative("../extensions/inputs/phone_input")
31
+ require_relative("../extensions/inputs/radio_input")
32
+ require_relative("../extensions/inputs/range_input")
33
+ require_relative("../extensions/inputs/rich_text_area_input")
34
+ require_relative("../extensions/inputs/search_input")
35
+ require_relative("../extensions/inputs/select_input")
36
+ require_relative("../extensions/inputs/string_input")
37
+ require_relative("../extensions/inputs/switch_input")
38
+ require_relative("../extensions/inputs/text_input")
39
+ require_relative("../extensions/inputs/time_picker_input")
40
+ require_relative("../extensions/inputs/time_select_input")
41
+ require_relative("../extensions/inputs/time_zone_input")
42
+ require_relative("../extensions/inputs/url_input")
43
+ end
44
+
45
+ initializer "filters" do |_app|
46
+ require_relative("../extensions/filters/forms")
47
+ require_relative("../extensions/inputs/filters/base")
48
+ require_relative("../extensions/inputs/filters/base/search_method_select")
49
+ require_relative("../extensions/inputs/filters/boolean_input")
50
+ require_relative("../extensions/inputs/filters/check_boxes_input")
51
+ require_relative("../extensions/inputs/filters/date_picker_input")
52
+ require_relative("../extensions/inputs/filters/date_range_input")
53
+ require_relative("../extensions/inputs/filters/select_input")
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,20 @@
1
+ module Adminterface
2
+ module Initializers
3
+ module Resource
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ config.before_configuration do |_app|
8
+ require_relative("../extensions/dsl")
9
+ require_relative("../extensions/menu_item")
10
+ require_relative("../extensions/resource/action_items")
11
+ require_relative("../extensions/sidebar_section")
12
+ end
13
+
14
+ initializer "active_admin.controllers" do
15
+ require_relative("../extensions/base_controller")
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,14 @@
1
+ module Adminterface
2
+ module Initializers
3
+ module ViewHelpers
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ initializer "view_helpers.overrides" do |_app|
8
+ require_relative("../extensions/view_helpers/alert_helper")
9
+ require_relative("../extensions/view_helpers/component_helper")
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,39 @@
1
+ module Adminterface
2
+ module Initializers
3
+ module Views
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ config.before_configuration do |_app|
8
+ require_relative("../extensions/views/action_items")
9
+ require_relative("../extensions/views/columns")
10
+ require_relative("../extensions/views/components/active_admin_form")
11
+ require_relative("../extensions/views/components/attributes_table")
12
+ require_relative("../extensions/views/components/blank_slate")
13
+ require_relative("../extensions/views/components/dropdown_menu")
14
+ require_relative("../extensions/views/components/icon")
15
+ require_relative("../extensions/views/components/index_list")
16
+ require_relative("../extensions/views/components/menu_item")
17
+ require_relative("../extensions/views/components/menu")
18
+ require_relative("../extensions/views/components/paginated_collection")
19
+ require_relative("../extensions/views/components/panel")
20
+ require_relative("../extensions/views/components/scopes")
21
+ require_relative("../extensions/views/components/sidebar_section")
22
+ require_relative("../extensions/views/components/site_title")
23
+ require_relative("../extensions/views/components/status_tag")
24
+ require_relative("../extensions/views/components/table_for")
25
+ require_relative("../extensions/views/components/tabs")
26
+ require_relative("../extensions/views/footer")
27
+ require_relative("../extensions/views/header")
28
+ require_relative("../extensions/views/index_as_grid")
29
+ require_relative("../extensions/views/index_as_table")
30
+ require_relative("../extensions/views/pages/base")
31
+ require_relative("../extensions/views/pages/form")
32
+ require_relative("../extensions/views/pages/index")
33
+ require_relative("../extensions/views/pages/page")
34
+ require_relative("../extensions/views/title_bar")
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,18 @@
1
+ module Adminterface
2
+ class License
3
+ class_attribute :license, default: {}
4
+
5
+ class << self
6
+ def verify!
7
+ return if Rails.env.test?
8
+
9
+ self.license =
10
+ if ::Adminterface.license_key.present?
11
+ ::Adminterface::Licensing::Commercial
12
+ else
13
+ ::Adminterface::Licensing::Personal
14
+ end.call
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,99 @@
1
+ module Adminterface
2
+ module Licensing
3
+ class Base
4
+ extend Adminterface::Callable
5
+
6
+ ENDPOINT = "https://app.adminterface.io/api/v1/licenses/verify".freeze
7
+ CACHE_KEY = "adminterface.licensing.response".freeze
8
+ TIMEOUT = 5
9
+
10
+ attr_reader :license_key
11
+ delegate :cache_store, :rails6_and_up?, to: :Adminterface
12
+
13
+ def initialize(license_key = Adminterface.license_key)
14
+ @license_key = license_key
15
+ end
16
+
17
+ def call
18
+ response = send_and_cache_request.with_indifferent_access
19
+ Adminterface::Licensing::Notice
20
+ .call(response, license_key, **{external: request?, endpoint: ENDPOINT})
21
+ response
22
+ end
23
+
24
+ def payload
25
+ {
26
+ license_key: encrypted_license_key,
27
+ license: license,
28
+ adminterface_version: Adminterface::VERSION,
29
+ rails_version: Rails::VERSION::STRING,
30
+ ruby_version: RUBY_VERSION,
31
+ environment: Rails.env,
32
+ app_name: app_name,
33
+ verified: false
34
+ }
35
+ end
36
+
37
+ private
38
+
39
+ def encrypted_license_key
40
+ @encrypted_license_key ||=
41
+ license_key && Adminterface::Encryption::Encryptor.call(license_key)
42
+ end
43
+
44
+ def send_and_cache_request
45
+ return cached_response if has_cached_response?
46
+ return local_response unless request?
47
+
48
+ response = HTTParty.post(
49
+ ENDPOINT,
50
+ body: payload.to_json,
51
+ headers: {'Content-type': "application/json"},
52
+ timeout: TIMEOUT
53
+ )
54
+
55
+ case response.code
56
+ when 200 then cache_response response.code, response.parsed_response
57
+ else return_error response.code, response.body
58
+ end
59
+ rescue => e
60
+ return_error e.class, e.message
61
+ end
62
+
63
+ def local_response
64
+ payload.merge(verified: true)
65
+ end
66
+
67
+ def request?
68
+ true
69
+ end
70
+
71
+ def return_error(status, exception_message = "")
72
+ payload.merge(status: status, message: exception_message).stringify_keys!
73
+ end
74
+
75
+ def cache_response(status, response, time: 1.hour.to_i)
76
+ response = payload.merge!(status: status, expiry: time, **response).stringify_keys!
77
+ cache_store.write(CACHE_KEY, response, expires_in: time)
78
+ response
79
+ end
80
+
81
+ def license
82
+ self.class.name.split("::").last.underscore
83
+ end
84
+
85
+ def app_name
86
+ klass = Rails.application.class
87
+ rails6_and_up? ? klass.module_parent.name : klass.parent.name
88
+ end
89
+
90
+ def has_cached_response?
91
+ cache_store.exist? CACHE_KEY
92
+ end
93
+
94
+ def cached_response
95
+ cache_store.read CACHE_KEY
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,7 @@
1
+ require_relative "./base"
2
+
3
+ module Adminterface
4
+ module Licensing
5
+ class Commercial < Base; end
6
+ end
7
+ end
@@ -0,0 +1,54 @@
1
+ module Adminterface
2
+ module Licensing
3
+ class Notice
4
+ extend Adminterface::Callable
5
+ attr_reader :response, :license_key, :external, :endpoint
6
+
7
+ def initialize(response, license_key, external: true, endpoint: nil)
8
+ @response = response
9
+ @license_key = license_key
10
+ @external = external
11
+ @endpoint = endpoint
12
+ end
13
+
14
+ def call
15
+ return unless Rails.env.development?
16
+
17
+ log("========================================")
18
+ log(messages)
19
+ log("========================================")
20
+ end
21
+
22
+ private
23
+
24
+ def log(*msgs)
25
+ msgs.each { |x| puts(x) }
26
+ end
27
+
28
+ def external?
29
+ !!external
30
+ end
31
+
32
+ def title
33
+ "Adminterface #{response[:adminterface_version]} (\"#{response[:license]}\")"
34
+ end
35
+
36
+ def messages
37
+ return title unless external?
38
+
39
+ [title, "=> Verifying license on #{endpoint}", verified].flatten
40
+ end
41
+
42
+ def verified
43
+ if !!response[:verified]
44
+ Rainbow("=> [#{response[:status]}] #{response[:message]}").green
45
+ else
46
+ [
47
+ Rainbow("=> [#{response[:status]}] #{response[:message]}").red,
48
+ Rainbow("=> license_key: #{license_key}").red
49
+ ]
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,13 @@
1
+ require_relative "./base"
2
+
3
+ module Adminterface
4
+ module Licensing
5
+ class Personal < Base
6
+ private
7
+
8
+ def request?
9
+ false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ -----BEGIN PUBLIC KEY-----
2
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuH2AdyyQycs7DhFQo1f/
3
+ 9ssIqc5ek7OYZHlfwSYSFuWaTfq46HK66QZ1ebkUva/U33QzNyaxcMxYpTpRY2dF
4
+ IPLtS1QNktC4U0T3Nz0sY3tZp/IwnWcE9b8MpS2FDFtMRiHu+/dtthWoG6kP6w5y
5
+ P8pWDLwQuYPbPnqlLbp6yWaJB1G1qHoLmgKD1VPUxjk0gB0tGPPvaiciESObbGC3
6
+ IgzeUKtz/+dhR4UBOZc1pmrftwacUfvNHrSuot0jaYCNrb98Oq8kkBpp79MgRghK
7
+ SkPdTRidSlIokdxlEOrcRhoJsVka5w9fYLShJdv1yhmGh3VZdKkvSqM7MhwE+zML
8
+ 0QIDAQAB
9
+ -----END PUBLIC KEY-----
@@ -0,0 +1,3 @@
1
+ module Adminterface
2
+ VERSION = "0.2.0"
3
+ end