express_admin 1.2.1 → 1.3.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 (159) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/express_admin.js +2 -0
  3. data/app/assets/javascripts/express_admin/admin.js +2 -0
  4. data/app/assets/stylesheets/express_admin.css +0 -5
  5. data/app/assets/stylesheets/express_admin/components/_definition.sass +8 -0
  6. data/app/assets/stylesheets/express_admin/components/_pane.sass +2 -2
  7. data/app/assets/stylesheets/express_admin/components/_sub_menu.sass +2 -2
  8. data/app/assets/stylesheets/express_admin/components/_widget_box.sass +4 -4
  9. data/app/assets/stylesheets/express_admin/globals/_foundation_overrides.sass +2 -1
  10. data/app/assets/stylesheets/express_admin/globals/_mixins.sass +0 -2
  11. data/app/assets/stylesheets/express_admin/plugins/_select2.sass +475 -68
  12. data/app/assets/stylesheets/express_admin/plugins/_tinymce.sass +2 -0
  13. data/app/assets/stylesheets/express_admin/screen.sass +6 -1
  14. data/app/assets/stylesheets/express_admin/sections/_header.sass +1 -0
  15. data/app/assets/stylesheets/express_admin/sections/_main_content.sass +6 -2
  16. data/app/assets/stylesheets/express_admin/sections/_main_region.sass +10 -7
  17. data/app/assets/stylesheets/express_admin/sections/_page_body.sass +6 -3
  18. data/app/assets/stylesheets/express_admin/sections/_page_sidebar.sass +6 -2
  19. data/app/assets/stylesheets/express_admin/sections/_sidebar_region.sass +4 -3
  20. data/app/assets/stylesheets/express_admin/shared/_buttons.sass +0 -1
  21. data/app/assets/stylesheets/express_admin/shared/_forms.sass +14 -2
  22. data/app/assets/stylesheets/express_admin/shared/_trees.sass +7 -3
  23. data/app/assets/stylesheets/ionicons/{ionicons.css.sass → ionicons.sass} +0 -0
  24. data/app/components/express_admin/addon_sidebar_component.rb +23 -34
  25. data/app/components/express_admin/definition_list.rb +38 -0
  26. data/app/components/express_admin/definition_table.rb +51 -0
  27. data/app/components/express_admin/flash_message_component.rb +5 -11
  28. data/app/components/express_admin/layout_component.rb +2 -9
  29. data/app/components/express_admin/main_region.rb +4 -4
  30. data/app/components/express_admin/mega_menu_component.rb +40 -34
  31. data/app/components/express_admin/page_header_component.rb +8 -18
  32. data/app/components/express_admin/pane.rb +13 -10
  33. data/app/components/express_admin/setting_form.rb +23 -20
  34. data/app/components/express_admin/sidebar_region.rb +6 -4
  35. data/app/components/express_admin/smart_form.rb +21 -18
  36. data/app/components/express_admin/smart_table.rb +44 -40
  37. data/app/components/express_admin/widget_box.rb +8 -8
  38. data/app/helpers/express_admin/admin_helper.rb +1 -1
  39. data/app/views/devise/sessions/new.html.et +63 -0
  40. data/app/views/layouts/express_admin/admin.html.et +8 -9
  41. data/app/views/shared/express_admin/_navigation_bar.html.et +6 -5
  42. data/config/tinymce.yml +29 -0
  43. data/lib/core_extensions/string_promptify.rb +9 -0
  44. data/lib/express_admin.rb +1 -0
  45. data/lib/express_admin/engine.rb +11 -9
  46. data/lib/express_admin/version.rb +1 -1
  47. data/lib/generators/express_admin/install/install_generator.rb +7 -0
  48. data/lib/generators/express_admin/install/templates/views/devise/sessions/new.html.et +1 -0
  49. data/test/dummy/app/views/demo/sign_in.html.et +6 -6
  50. data/test/dummy/db/test.sqlite3 +0 -0
  51. data/test/dummy/log/test.log +11361 -0
  52. data/test/dummy/test/components/smart_form_test.rb +57 -34
  53. data/test/dummy/test/components/smart_table_test.rb +35 -35
  54. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1EoyfDwFVtgMAOjo7HPkor8TQbVaioOFx9hildx_DTQ.cache +0 -0
  55. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4OPIkynisipUm8vKo57HUhBMWFSHBno_IH6OdpK29IA.cache +1 -0
  56. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4hK1AdPGHbXGkebvk-nSvhxtCdOSlMYNWvA43CvQKhI.cache +0 -0
  57. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/6c0H20s6oHf45XogeDELaojxa0PX1NmirTTWV1ClcRw.cache +0 -0
  58. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/9QvwPXfTSVmgQX6tdK9GuCn0--MZ8Z8eJJbHpUEq1p8.cache +1 -0
  59. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/BoKdGhgi5NHfGTc42p9nltpEIYj_BBUxVdv7YhpBmmA.cache +0 -0
  60. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/GJGMlSyTg1AvPCV_6PaLOTVEKbHeVKY1jhCoaKuRlxM.cache +1 -0
  61. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/H0aD5KRj-4fhORkqWcWZfKPOQfu_ggvt4OmYOl4S5mw.cache +0 -0
  62. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/IBLgVNsKBbJxN8NQnh6zTc3bC_OG-8BhtA3xCNDV6ks.cache +1 -0
  63. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Po8q4NrWy9Kymnz_HbOk-WbdGY_KuuXc6urGogTHe7U.cache +0 -0
  64. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/V1aP9G-CVtOLR5PTnHleid8WC9TSfFAT1DzAygp_5CQ.cache +1 -0
  65. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WhePtBvZPmF1Jhdcc4glsjhxBJQo9Qw0CDgy_F8lClY.cache +0 -0
  66. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/dVokuKbK8HbOtvPIksKGBAYE8x44l372dQ0gEISqbdo.cache +0 -0
  67. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/oN1zSGeSEz4KhkAuUF_yFDsCVPkulfFjomEAjFzGdPc.cache +0 -0
  68. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qIeSoker4TjM7JYRQTOjgRd4nN0WeHnNY1GMK7Zpe8M.cache +0 -0
  69. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tTFLM1bjKSeg4nyH7GWbTY6JVvuYhNKFFvsOMS9h8O0.cache +0 -0
  70. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tzX-HHF4F70o-aSB9Z_duoPxFGDv3auYnrpko9SYafU.cache +1 -0
  71. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vMbWbI1SO5bEaiu2pRvV8NDmms_j5flYoRvCSJavhdU.cache +0 -0
  72. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ypZCDLo54Pz2ZoUxrxSEUjT5FYMAq8Ozp8OTOYDRdAE.cache +0 -0
  73. data/test/fixtures/categories.yml +8 -0
  74. data/test/test_helper.rb +34 -0
  75. data/vendor/gems/express_templates/CHANGELOG.md +12 -0
  76. data/vendor/gems/express_templates/Gemfile.lock +4 -1
  77. data/vendor/gems/express_templates/README.md +22 -41
  78. data/vendor/gems/express_templates/express_templates.gemspec +1 -0
  79. data/vendor/gems/express_templates/lib/arbre/patches.rb +50 -0
  80. data/vendor/gems/express_templates/lib/core_extensions/proc.rb +1 -0
  81. data/vendor/gems/express_templates/lib/express_templates.rb +2 -3
  82. data/vendor/gems/express_templates/lib/express_templates/compiler.rb +2 -7
  83. data/vendor/gems/express_templates/lib/express_templates/components.rb +1 -9
  84. data/vendor/gems/express_templates/lib/express_templates/components/base.rb +33 -37
  85. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/resourceful.rb +30 -18
  86. data/vendor/gems/express_templates/lib/express_templates/components/configurable.rb +41 -0
  87. data/vendor/gems/express_templates/lib/express_templates/components/form_rails_support.rb +5 -6
  88. data/vendor/gems/express_templates/lib/express_templates/components/forms.rb +0 -1
  89. data/vendor/gems/express_templates/lib/express_templates/components/forms/basic_fields.rb +3 -6
  90. data/vendor/gems/express_templates/lib/express_templates/components/forms/checkbox.rb +1 -1
  91. data/vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb +15 -25
  92. data/vendor/gems/express_templates/lib/express_templates/components/forms/form_component.rb +20 -11
  93. data/vendor/gems/express_templates/lib/express_templates/components/forms/option_support.rb +2 -2
  94. data/vendor/gems/express_templates/lib/express_templates/components/forms/radio.rb +7 -8
  95. data/vendor/gems/express_templates/lib/express_templates/components/forms/select.rb +61 -37
  96. data/vendor/gems/express_templates/lib/express_templates/components/forms/select_collection.rb +2 -8
  97. data/vendor/gems/express_templates/lib/express_templates/components/forms/submit.rb +7 -6
  98. data/vendor/gems/express_templates/lib/express_templates/components/tree_for.rb +26 -42
  99. data/vendor/gems/express_templates/lib/express_templates/version.rb +1 -1
  100. data/vendor/gems/express_templates/test/components/base_test.rb +17 -15
  101. data/vendor/gems/express_templates/test/components/capabilities/resourceful_test.rb +3 -3
  102. data/vendor/gems/express_templates/test/components/configurable_test.rb +27 -21
  103. data/vendor/gems/express_templates/test/components/forms/basic_fields_test.rb +57 -17
  104. data/vendor/gems/express_templates/test/components/forms/checkbox_test.rb +16 -22
  105. data/vendor/gems/express_templates/test/components/forms/express_form_test.rb +23 -76
  106. data/vendor/gems/express_templates/test/components/forms/radio_test.rb +31 -27
  107. data/vendor/gems/express_templates/test/components/forms/select_test.rb +46 -71
  108. data/vendor/gems/express_templates/test/components/forms/submit_test.rb +10 -5
  109. data/vendor/gems/express_templates/test/components/tree_for_test.rb +24 -52
  110. data/vendor/gems/express_templates/test/dummy/app/views/hello/show.html.et +4 -3
  111. data/vendor/gems/express_templates/test/dummy/app/views/layouts/application.html.et +1 -1
  112. data/vendor/gems/express_templates/test/dummy/log/test.log +4296 -0
  113. data/vendor/gems/express_templates/test/express_templates_test.rb +5 -1
  114. data/vendor/gems/express_templates/test/handler_test.rb +19 -17
  115. data/vendor/gems/express_templates/test/performance_test.rb +11 -7
  116. data/vendor/gems/express_templates/test/test_helper.rb +162 -1
  117. metadata +58 -47
  118. data/app/assets/stylesheets/express_admin/components/_megadropdown.sass +0 -66
  119. data/vendor/gems/express_templates/diagrams/diagram.graffle +0 -2404
  120. data/vendor/gems/express_templates/diagrams/diagram_express_templates.png +0 -0
  121. data/vendor/gems/express_templates/diagrams/diagram_haml_erb.png +0 -0
  122. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/adoptable.rb +0 -20
  123. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/building.rb +0 -14
  124. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/conditionality.rb +0 -54
  125. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/configurable.rb +0 -90
  126. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/iterating.rb +0 -75
  127. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/parenting.rb +0 -72
  128. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/rendering.rb +0 -30
  129. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/templating.rb +0 -198
  130. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/wrapping.rb +0 -84
  131. data/vendor/gems/express_templates/lib/express_templates/components/column.rb +0 -13
  132. data/vendor/gems/express_templates/lib/express_templates/components/container.rb +0 -7
  133. data/vendor/gems/express_templates/lib/express_templates/components/content_for.rb +0 -42
  134. data/vendor/gems/express_templates/lib/express_templates/components/for_each.rb +0 -30
  135. data/vendor/gems/express_templates/lib/express_templates/components/forms/form_support.rb +0 -13
  136. data/vendor/gems/express_templates/lib/express_templates/components/null_wrap.rb +0 -41
  137. data/vendor/gems/express_templates/lib/express_templates/components/row.rb +0 -28
  138. data/vendor/gems/express_templates/lib/express_templates/components/table_for.rb +0 -163
  139. data/vendor/gems/express_templates/lib/express_templates/components/unless_block.rb +0 -40
  140. data/vendor/gems/express_templates/lib/express_templates/expander.rb +0 -140
  141. data/vendor/gems/express_templates/lib/express_templates/macro.rb +0 -45
  142. data/vendor/gems/express_templates/lib/express_templates/markup.rb +0 -9
  143. data/vendor/gems/express_templates/lib/express_templates/markup/html_tag.rb +0 -62
  144. data/vendor/gems/express_templates/lib/express_templates/markup/tag.rb +0 -150
  145. data/vendor/gems/express_templates/lib/express_templates/markup/wrapper.rb +0 -94
  146. data/vendor/gems/express_templates/lib/express_templates/markup/yielder.rb +0 -21
  147. data/vendor/gems/express_templates/test/components/column_test.rb +0 -11
  148. data/vendor/gems/express_templates/test/components/conditionality_test.rb +0 -37
  149. data/vendor/gems/express_templates/test/components/container_test.rb +0 -66
  150. data/vendor/gems/express_templates/test/components/content_for_test.rb +0 -60
  151. data/vendor/gems/express_templates/test/components/iterating_test.rb +0 -127
  152. data/vendor/gems/express_templates/test/components/null_wrap_test.rb +0 -28
  153. data/vendor/gems/express_templates/test/components/row_test.rb +0 -16
  154. data/vendor/gems/express_templates/test/components/table_for_test.rb +0 -211
  155. data/vendor/gems/express_templates/test/expander_stack_test.rb +0 -41
  156. data/vendor/gems/express_templates/test/expander_test.rb +0 -99
  157. data/vendor/gems/express_templates/test/markup/tag_test.rb +0 -149
  158. data/vendor/gems/express_templates/test/markup/wrapper_test.rb +0 -42
  159. data/vendor/gems/express_templates/test/markup/yielder_test.rb +0 -9
@@ -0,0 +1,2 @@
1
+ .mce-tinymce.mce-container
2
+ margin-bottom: 1rem
@@ -18,6 +18,7 @@
18
18
  @import 'components/module_sidebar'
19
19
  @import 'components/widget_box'
20
20
  @import 'components/pane'
21
+ @import 'components/definition'
21
22
 
22
23
  @import 'shared/media_object'
23
24
  @import 'shared/breadcrumbs'
@@ -33,10 +34,11 @@
33
34
  @import 'shared/reveal'
34
35
 
35
36
  @import 'components/empty_state'
36
- @import 'components/megadropdown'
37
37
 
38
38
  @import 'plugins/dataTables'
39
39
  @import 'plugins/select2'
40
+ @import 'plugins/tinymce'
41
+ @import '../ionicons/ionicons'
40
42
 
41
43
  .generate-subdomain
42
44
  cursor: pointer
@@ -45,6 +47,9 @@
45
47
  margin:
46
48
  bottom: 30px
47
49
 
50
+ .hidden
51
+ display: none
52
+
48
53
  #app_subdomain
49
54
 
50
55
  &:read-only
@@ -1,6 +1,7 @@
1
1
  .top-bar
2
2
  @extend .menu-group
3
3
  @include menu-bar-style($dark-color, $autocolor: true)
4
+ flex-shrink: 0
4
5
 
5
6
  .nav-logo
6
7
  width: 150px
@@ -1,5 +1,9 @@
1
1
  .main-container
2
- @include grid_frame($orientation: vertical)
2
+ @include grid-frame($orientation: vertical)
3
3
 
4
4
  > .main-page
5
- @include grid_block
5
+ @include grid-block
6
+ @include breakpoint(small)
7
+ @include grid-orient(vertical)
8
+ @include breakpoint(medium)
9
+ @include grid-orient(horizontal)
@@ -1,9 +1,12 @@
1
1
  .main-region
2
- // @include breakpoint(small)
3
- // @include grid_block
4
- // @include breakpoint(medium)
5
- // @include grid_block(8)
6
- // @include breakpoint(large)
7
- // @include grid_block(9)
8
- @include grid_content
2
+ @include grid-content
3
+ @include breakpoint(small)
4
+ @include grid-size(12)
5
+ @include breakpoint(medium)
6
+ @include grid-size(8)
7
+ @include breakpoint(large)
8
+ @include grid-size(9)
9
+
10
+ border:
11
+ right: 1px solid $border-color
9
12
 
@@ -1,6 +1,9 @@
1
1
  .page-body
2
+ @include grid-block
2
3
  @include breakpoint(small)
3
- @include grid_block
4
-
4
+ @include grid-orient(vertical)
5
5
  @include breakpoint(medium)
6
- @include grid_block(11)
6
+ @include grid-orient(horizontal)
7
+ @include grid-size(10)
8
+ @include breakpoint(xlarge)
9
+ @include grid-size(11)
@@ -1,5 +1,9 @@
1
1
  .page-sidebar
2
+ @include grid-block
3
+ @include breakpoint(small)
4
+ @include grid-size(12)
2
5
  @include breakpoint(medium)
3
- @include grid-block(1)
6
+ @include grid-size(2)
7
+ @include breakpoint(xlarge)
8
+ @include grid-size(1)
4
9
  border-right: #dedede 1px solid
5
-
@@ -1,7 +1,8 @@
1
1
  .sidebar-region
2
+ @include grid-block($orientation: vertical)
2
3
  @include breakpoint(small)
3
- @include grid_block
4
+ @include grid-size(12)
4
5
  @include breakpoint(medium)
5
- @include grid_block(4)
6
+ @include grid-size(4)
6
7
  @include breakpoint(large)
7
- @include grid_block(3)
8
+ @include grid-size(3)
@@ -1,4 +1,3 @@
1
1
  .button
2
2
  margin-bottom: 0
3
3
  background: $dark-blue
4
-
@@ -1,8 +1,20 @@
1
1
  form
2
- padding: 1rem 0
2
+ margin:
3
+ bottom: 1rem
3
4
 
4
5
  textarea
5
- height: 12rem
6
+ resize: none
6
7
 
7
8
  select[multiple]
8
9
  height: 6rem
10
+
11
+ .help
12
+ color: $gray
13
+ font:
14
+ style: italic
15
+
16
+ .login-box
17
+ background: #fff
18
+ border: 1px solid #ddd
19
+ margin: 100px 0
20
+ padding: 40px 20px 0 20px
@@ -19,9 +19,13 @@
19
19
 
20
20
  ul
21
21
  li
22
- a
23
- padding:
24
- left: 3rem
25
22
  &:last-child
26
23
  border:
27
24
  bottom: 0
25
+ a::before
26
+ content: "– "
27
+ > ul li
28
+ a::before
29
+ content: "– – "
30
+ > ul li a::before
31
+ content: "– – – "
@@ -1,42 +1,31 @@
1
1
  module ExpressAdmin
2
+ # renders a sidebar partial if one is available
3
+ # otherwise uses menu.yml
2
4
  class AddonSidebarComponent < ExpressTemplates::Components::Base
3
- # Replaces:
4
- #
5
- # .sidebar-wrapper
6
- # %aside.sidebar
7
- # %h5.title= <addon>::Engine.express_admin_menu.name
8
- # %ul.side-nav
9
- # - <addon>::Engine.express_admin_menu.items.each do |item|
10
- # %li
11
- # = link_to item.name, eval(item.path)
12
5
 
13
- helper :menu_name, &-> { current_menu_name }
6
+ emits -> {
7
+ begin
8
+ render("shared/#{helpers.current_module_path_name}/sidebar")
9
+ rescue Exception => e
10
+ section(class: 'module-sidebar') {
11
+ ul(class: 'menu-items') {
12
+ li(class: 'title') { current_menu_name }
13
+ menu_list(helpers.current_menu.items)
14
+ }
15
+ }
16
+ end
17
+ }
14
18
 
15
- emits menu_item: -> {
16
- li {
17
- link_to "{{item.title}}", "{{eval(item.path)}}"
18
- }
19
- },
20
-
21
- menu_wrapper: -> {
22
- section._module_sidebar {
23
- ul._menu_items {
24
- li.title { menu_name }
25
- _yield
26
- }
27
- }
28
- }
29
-
30
- for_each -> { current_menu.items || [] }, as: :item, emit: :menu_item
31
-
32
- wrap_with :menu_wrapper
19
+ def menu_list(list)
20
+ list.each do |item|
21
+ menu_list_item(item)
22
+ end
23
+ end
33
24
 
34
- def compile
35
- %Q(begin
36
- render(partial: "shared/\#\{current_module_path_name\}/sidebar")
37
- rescue => e
38
- #{super}
39
- end)
25
+ def menu_list_item(item)
26
+ li {
27
+ link_to item.title.html_safe, helpers.instance_eval(item.path)
28
+ }
40
29
  end
41
30
 
42
31
  end
@@ -0,0 +1,38 @@
1
+ module ExpressAdmin
2
+ class DefinitionList < ExpressTemplates::Components::Configurable
3
+ include ExpressTemplates::Components::Capabilities::Resourceful
4
+
5
+ emits -> {
6
+ dl {
7
+ definitions.each do |label, content|
8
+ dt { label }
9
+ dd { content }
10
+ end
11
+ }
12
+ }
13
+
14
+ def definitions
15
+ if @args.first.kind_of?(Array)
16
+ definitions_from_array(@args.first)
17
+ elsif @args.first.kind_of?(Hash)
18
+ definitions_from_hash(@args.first)
19
+ end
20
+ end
21
+
22
+ def definitions_from_hash(hash)
23
+ processed = hash.map do |k,v|
24
+ if v.kind_of? Symbol
25
+ [k, resource.send(v)]
26
+ else
27
+ [k, v]
28
+ end
29
+ end
30
+ Hash[processed]
31
+ end
32
+
33
+ def definitions_from_array(fields)
34
+ Hash[fields.map {|field| ["#{field.to_s.titleize}:", resource.send(field)]}]
35
+ end
36
+
37
+ end
38
+ end
@@ -0,0 +1,51 @@
1
+ module ExpressAdmin
2
+ class DefinitionTable < ExpressTemplates::Components::Configurable
3
+ include ExpressTemplates::Components::Capabilities::Resourceful
4
+
5
+ emits -> {
6
+ table(class: 'definitions') {
7
+ tbody {
8
+ definitions.each do |label, content|
9
+ tr {
10
+ th(align: "right") { label }
11
+ td { content }
12
+ }
13
+ end
14
+ }
15
+ }
16
+ }
17
+
18
+ def definitions
19
+ if @args.nil?
20
+ definitions_from_hash(config)
21
+ elsif @args.first.try(:kind_of?, Array)
22
+ definitions_from_array(@args.first)
23
+ end
24
+ end
25
+
26
+ def definitions_from_hash(hash)
27
+ processed = hash.map do |k,v|
28
+ if v.kind_of? Symbol
29
+ [promptify(k), resource.send(v)]
30
+ else
31
+ [promptify(k), helpers.instance_eval("(#{v.source}).call(resource).to_s").html_safe]
32
+ end
33
+ end
34
+ Hash[processed]
35
+ end
36
+
37
+ def definitions_from_array(fields)
38
+ Hash[fields.map {|field| ["#{field.to_s.titleize}:", "{{resource.#{field}}}"]}]
39
+ end
40
+
41
+ private
42
+ def promptify(k)
43
+ if k.kind_of?(Symbol)
44
+ k.to_s.promptify
45
+ else
46
+ k.to_s
47
+ end
48
+ end
49
+
50
+ end
51
+ end
@@ -1,19 +1,13 @@
1
1
  module ExpressAdmin
2
2
  class FlashMessageComponent < ExpressTemplates::Components::Base
3
3
 
4
- helper(:safe_message) {|message| message[1] }
5
- helper(:classes) {|message| "flash nav-alert alert-box " }
6
-
7
4
  emits -> {
8
- div {
9
- div(class: ExpressAdmin::FlashMessageComponent.classes('{{flash_message}}'), data: {alert: ''}) {
10
- safe_message('{{flash_message}}')
11
- a.close(:href => "#") { "&times;" }
5
+ helpers.flash.each do |flash_message|
6
+ div(class:"flash nav-alert alert-box ", data: {alert: ''}) {
7
+ span flash_message[1]
8
+ a(class: 'close', href: "#") { "&times;".html_safe }
12
9
  }
13
- }
10
+ end
14
11
  }
15
-
16
- for_each -> { flash }, as: :flash_message
17
-
18
12
  end
19
13
  end
@@ -1,14 +1,7 @@
1
1
  module ExpressAdmin
2
- class LayoutComponent < ExpressTemplates::Components::Base
3
- include ExpressTemplates::Components::Capabilities::Configurable
4
- include ExpressTemplates::Components::Capabilities::Parenting
5
-
2
+ class LayoutComponent < ExpressTemplates::Components::Configurable
6
3
  def dom_id
7
- @config.try(:[], :id)
8
- end
9
-
10
- def classes
11
- ([macro_name] + (@config.try(:[], :class)||[])).join(" ")
4
+ config.try(:[], :id)
12
5
  end
13
6
  end
14
7
  end
@@ -1,8 +1,8 @@
1
1
  module ExpressAdmin
2
- class MainRegion < ExpressTemplates::Components::Container
3
- emits -> {
4
- div._main_region {
5
- _yield
2
+ class MainRegion < ExpressTemplates::Components::Configurable
3
+ emits -> (block) {
4
+ div(class: 'main-region') {
5
+ block.call(self) if block
6
6
  }
7
7
  }
8
8
  end
@@ -18,44 +18,50 @@ module ExpressAdmin
18
18
  # %span.icon.ion-plus
19
19
  # Add Module
20
20
 
21
- helper(:extra_menu) {
22
- render(partial: 'shared/express_admin/express_admin_extra_menu') rescue nil
21
+ emits -> {
22
+ menu_wrapper {
23
+ if helpers.admin_menus.any?
24
+ helpers.admin_menus.each do |menu|
25
+ menu_item(menu)
26
+ end
27
+ else
28
+ para(class: 'lead text-muted') {
29
+ "No modules added yet."
30
+ }
31
+ end
32
+ }
23
33
  }
24
34
 
25
- fragments menu_item: -> {
26
- li {
27
- a(href: "{{eval(menu.path)}}") {
28
- i.icon(class: "icon-express_{{menu.title.downcase}}")
29
- span "{{menu.title}}"
30
- }
31
- }
32
- },
33
-
34
- empty_state: -> {
35
- p.lead._text_muted "No modules added yet."
36
- },
37
-
38
- menu_wrapper: -> {
39
- li._has_sub_menu {
40
- a._sub_menu_expander(href: '#', onClick: 'return false;') {
41
- span.item { 'Manage' }
42
- i._ion_arrow_down_b
43
- }
44
- div._sub_menu.hidden {
45
- ul._sub_menu_items {
46
- li.title { 'Modules' }
47
- _yield
48
- }
49
- ul._sub_menu_items {
50
- extra_menu
51
- }
52
- }
53
- }
54
- }
35
+ def extra_menu
36
+ render(partial: 'shared/express_admin/express_admin_extra_menu') rescue nil
37
+ end
55
38
 
56
- for_each -> {admin_menus}, as: 'menu', emit: :menu_item, empty: :empty_state
39
+ def menu_item(menu)
40
+ li {
41
+ a(href: helpers.instance_eval(menu.path)) {
42
+ i(class: "icon icon-express_#{menu.title.gsub(/\s+/, '').underscore}")
43
+ span menu.title
44
+ }
45
+ }
46
+ end
57
47
 
58
- wrap_with :menu_wrapper, dont_wrap_if: -> { admin_menus.empty? }
48
+ def menu_wrapper
49
+ li(class: "has-sub-menu") {
50
+ a(class: "sub-menu-expander", href: '#', onClick: 'return false;') {
51
+ span(class: 'item') {'Manage' }
52
+ i(class: "ion-arrow-down-b")
53
+ }
54
+ div(class: 'sub-menu hidden') {
55
+ ul(class: 'sub-menu-items') {
56
+ li(class: 'title') { 'Modules' }
57
+ yield
58
+ }
59
+ ul(class: 'sub-menu-items') {
60
+ extra_menu
61
+ }
62
+ }
63
+ }
64
+ end
59
65
 
60
66
  end
61
67
  end