express_admin 1.1.0 → 1.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 (397) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +3 -1
  3. data/app/assets/images/express_admin/appexpress_logo_dark.png +0 -0
  4. data/app/assets/javascripts/express_admin.js +1 -4
  5. data/app/assets/javascripts/express_admin/admin.js +0 -2
  6. data/app/assets/javascripts/express_admin/scrollTableBody.js +127 -0
  7. data/app/assets/stylesheets/express_admin.css +1 -1
  8. data/app/assets/stylesheets/express_admin/components/_main_menu.sass +5 -0
  9. data/app/assets/stylesheets/express_admin/components/_megadropdown.sass +0 -5
  10. data/app/assets/stylesheets/express_admin/components/_module_sidebar.sass +9 -0
  11. data/app/assets/stylesheets/express_admin/components/_pane.sass +9 -0
  12. data/app/assets/stylesheets/express_admin/components/_widget_box.sass +10 -0
  13. data/app/assets/stylesheets/express_admin/globals/_foundation_overrides.sass +612 -0
  14. data/app/assets/stylesheets/express_admin/globals/_mixins.sass +9 -0
  15. data/app/assets/stylesheets/express_admin/globals/_typography.sass +8 -16
  16. data/app/assets/stylesheets/express_admin/globals/_variables.sass +18 -12
  17. data/app/assets/stylesheets/express_admin/screen.sass +16 -9
  18. data/app/assets/stylesheets/express_admin/sections/_header.sass +8 -94
  19. data/app/assets/stylesheets/express_admin/sections/_main_content.sass +3 -61
  20. data/app/assets/stylesheets/express_admin/sections/_main_region.sass +9 -0
  21. data/app/assets/stylesheets/express_admin/sections/_page_body.sass +6 -0
  22. data/app/assets/stylesheets/express_admin/sections/_page_sidebar.sass +5 -0
  23. data/app/assets/stylesheets/express_admin/sections/_sidebar_region.sass +7 -0
  24. data/app/assets/stylesheets/express_admin/shared/_buttons.sass +2 -31
  25. data/app/assets/stylesheets/express_admin/shared/_forms.sass +3 -97
  26. data/app/assets/stylesheets/express_admin/shared/_layout_components.sass +60 -0
  27. data/app/assets/stylesheets/express_admin/shared/_messages.sass +1 -1
  28. data/app/assets/stylesheets/express_admin/shared/_tables.sass +12 -67
  29. data/app/assets/stylesheets/express_admin/shared/_trees.sass +27 -0
  30. data/app/components/express_admin/addon_sidebar_component.rb +5 -9
  31. data/app/components/express_admin/h_box.rb +16 -0
  32. data/app/components/express_admin/layout_component.rb +14 -0
  33. data/app/components/express_admin/main_region.rb +1 -1
  34. data/app/components/express_admin/pane.rb +37 -0
  35. data/app/components/express_admin/sidebar_region.rb +2 -4
  36. data/app/components/express_admin/smart_form.rb +63 -27
  37. data/app/components/express_admin/smart_table.rb +131 -41
  38. data/app/components/express_admin/v_box.rb +16 -0
  39. data/app/components/express_admin/widget_box.rb +2 -2
  40. data/app/helpers/express_admin/admin_helper.rb +14 -9
  41. data/app/views/layouts/express_admin/admin.html.et +7 -11
  42. data/app/views/shared/express_admin/_navigation_bar.html.et +17 -13
  43. data/app/views/shared/express_admin/_navigation_bar_profile.html.et +0 -2
  44. data/app/views/shared/express_admin/_title.html.et +6 -8
  45. data/lib/express_admin/engine.rb +1 -1
  46. data/lib/express_admin/menu.rb +7 -2
  47. data/lib/express_admin/version.rb +1 -1
  48. data/lib/generators/express_admin/install/install_generator.rb +4 -4
  49. data/lib/generators/express_admin/install/templates/controllers/admin_controller.rb.erb +1 -1
  50. data/lib/generators/express_admin/scaffold/scaffold_generator.rb +10 -2
  51. data/lib/generators/express_admin/scaffold/templates/index.html.et.erb +1 -1
  52. data/test/dummy/app/controllers/admin/categories_controller.rb +12 -0
  53. data/test/dummy/app/controllers/admin/widgets_controller.rb +12 -0
  54. data/test/dummy/app/models/category.rb +3 -0
  55. data/test/dummy/app/models/tag.rb +4 -0
  56. data/test/dummy/app/models/widget.rb +7 -0
  57. data/test/dummy/app/models/widget_tag.rb +4 -0
  58. data/test/dummy/app/views/admin/categories/index.html.et +10 -0
  59. data/test/dummy/app/views/admin/widgets/index.html.et +10 -0
  60. data/test/dummy/config/routes.rb +5 -0
  61. data/test/dummy/db/development.sqlite3 +0 -0
  62. data/test/dummy/db/migrate/20150525221206_create_widgets.rb +15 -0
  63. data/test/dummy/db/migrate/20150525221228_create_categories.rb +9 -0
  64. data/test/dummy/db/migrate/20150610081108_create_tags.rb +7 -0
  65. data/test/dummy/db/migrate/20150610081204_create_widget_tags.rb +8 -0
  66. data/test/dummy/db/schema.rb +26 -5
  67. data/test/dummy/db/test.sqlite3 +0 -0
  68. data/test/dummy/log/development.log +35 -0
  69. data/test/dummy/log/test.log +33428 -0
  70. data/test/dummy/test/components/smart_form_test.rb +93 -0
  71. data/test/dummy/test/components/smart_table_test.rb +137 -0
  72. data/test/dummy/test/fixtures/categories.yml +8 -0
  73. data/test/dummy/test/fixtures/tags.yml +14 -0
  74. data/test/dummy/test/fixtures/widget_tags.yml +10 -0
  75. data/test/dummy/test/fixtures/widgets.yml +20 -0
  76. data/test/dummy/test/models/category_test.rb +13 -0
  77. data/test/dummy/test/models/tag_test.rb +13 -0
  78. data/test/dummy/test/models/widget_tag_test.rb +13 -0
  79. data/test/dummy/test/models/widget_test.rb +13 -0
  80. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0fNukwCUjSC_GRsVIMtSMVdZkd5bq5eShMcGCrCVolc.cache +0 -0
  81. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1c4REJHKdQH9bwZhZ7Ixshmy_1jAzXc3-9OiDCDyRlk.cache +0 -0
  82. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1rKHSaJsgLcnfIJRWYdYy7IimMCKcdI-I_ABekUargk.cache +0 -0
  83. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2kMk5s4FKAOWE1z_MvFIKHmdvNDzyoknoi39xL7KwJw.cache +0 -0
  84. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2oGeKB_QtwWpX3sJNHocsJiBZT60x_cwV_nSGh_HS-A.cache +0 -0
  85. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2rQDWRzFxOlBnczJ1BLfE2yCPVvrhgLGfAI7VSM54wk.cache +0 -0
  86. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/3S9nnUmEIG4-hDY6cVc82GFUUWicNxtpFfWwJAmJSkI.cache +2 -0
  87. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4WErFdugnc8uWYwUE9vVfw4xxCgknECdpWhn8teZbLk.cache +1 -0
  88. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4a7epNa5R1jeKCtFsJKTdVqMEQm5p0clABRPIiKegMo.cache +0 -0
  89. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/57pjjkzReNE1L9yodewGebfd0AwnfQb33rtJjSTNpLc.cache +0 -0
  90. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/7vpDV8GyXVfyuFIkRrrkOwUXyIaCmf22tBPDpvhCUUc.cache +0 -0
  91. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Cpj6WyqdggDUkeQl_Ut3P9sUtPHPXXwkmZ92TfIJGJ8.cache +0 -0
  92. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DwepgSdLiEklsJWIJItEY_ZW-nOjjeHqcdQwBtu0mus.cache +0 -0
  93. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FOJpwMQCx9V9wfhJQKFa2f7BjfP7vyS7M3o6VX0nAI0.cache +1 -0
  94. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/GStmpiXE4g01i-UTlSKq8B9yS69WpAp0YH7vWyESBwI.cache +0 -0
  95. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/H53ZZ50FwJjYUOMH60F7cpINgkh9tOF4R3L6ANoH6tU.cache +1 -0
  96. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HY86Fwn8VPlIysY56uV-wu90bISxrXeiCtwDXg94Glg.cache +0 -0
  97. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/IcNDN_pmsAcLAMv6CST75OwOucmYm3q2099jn4tB0H8.cache +2 -0
  98. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/JpdfSFVzivQn6TFSivlys3nV3VzD8cT0ET8uqbptxV4.cache +1 -0
  99. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KYe0_GIi-cNX0eRteBB0aixVATrVRo7Z3BaWFCgc7yg.cache +1 -0
  100. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/LsiO4sLQfM0GvyEYhaC2E54rCurTkewg7YJX-sWBctI.cache +0 -0
  101. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NDViKg4-yspkY1tX9IQWnh1-LkiKqIohBqtRlYZZQcs.cache +2 -0
  102. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/OXsmreTQ3MNzGsrV1eEoW72VZQ52hQ0HiuTr0ImnqHA.cache +0 -0
  103. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PuMvTyv89E8wfRqbWNMhTH3PAE61uCCHgpEsgdOzMXQ.cache +0 -0
  104. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Pvp8CVIKYjspNrgzEvgleujifrrdfATzWbwALDzQNE4.cache +2 -0
  105. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PzcOUndLc-O-VBR2SDM2rFkiqh-iqknTEgEAXDLKfdc.cache +0 -0
  106. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QbX1HRM7KX85_PeVHcd6VJM6sqzUCWXEEYZX7CAG0eA.cache +1 -0
  107. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UDHqQKrYSSvXfCbiJjXzmJh2Q6T5hLO80aaPvs9n-74.cache +0 -0
  108. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UFtISk01WwcjjWcPLyjeHX3bgBqZHGQcb0Z4KFNmduA.cache +0 -0
  109. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UWvG-0WgVYHVxrtLU32uumROQuSjJv_M_svW1B8YxhY.cache +1 -0
  110. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UruI7_ZpuzDnmNir9hzUa_r8oiuuIfVTco19ACdxwRw.cache +2 -0
  111. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/VQ2-2HlkGd1XVIHlwRGcgDsjto3oE-50-4E3HGdt8uU.cache +1 -0
  112. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/VezioHwyk87G6TWkkYX88tBHC6QToVGOU5geZ54Ts5A.cache +1 -0
  113. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WfQ-xKbnwqaKy-UQa8spczc9qocIL_jZE4cyRZftjfA.cache +2 -0
  114. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/XPpCqlT8yHTnQNHKRxjnilUBvAs6klpgWXneFU15U78.cache +0 -0
  115. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/XXTM8o6vkSxhxxm8P_orbeCZvxb8nMk7cjdwvUNL1io.cache +0 -0
  116. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/XyRQXY_oj8GLw9z8lj2dknGu45jbX5lK8ko7TePosPE.cache +2 -0
  117. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YDMOayx363vI7odbkHMVI-_RxkOoVP2Hb7FX0mFVFE0.cache +1 -0
  118. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Z88gJS67lNABJgUB18JzXrnGkVbYfXQvjqm7mSJIv3o.cache +1 -0
  119. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_k4X14Cc-2Y4gc47s7PaWtAaG_zcq1ICJInTYNp6bI4.cache +2 -0
  120. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_kr_dP4VVnM8s8ZMdiNBSpuPqkQVx46FUdCTDH4XR70.cache +0 -0
  121. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_y-BPEZTh3iXcaPJkcP9-krjw-V8LMhop4VGxUEUDsY.cache +1 -0
  122. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/afi__XQzjsqMT3svcCGlVD_YrHEWQZAEbJt4CgYaCkw.cache +1 -0
  123. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/bdqS7lHa0nBN-mqdSomfMK-S6ct2TAn0z9kVzFBwQPM.cache +0 -0
  124. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/csH89NDps1_QU4E0p0HHZti2XLd_etKYDqM9cPsNpps.cache +0 -0
  125. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ePtEu-AuU0iZ2J02ZafF9yOJVd8VVdV2KSheiJYlXzA.cache +1 -0
  126. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/eTRff0YXBw-Tx9VEMxb-Es8NwqjHCXiaosBLxijl3I8.cache +1 -0
  127. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fRkrxaDYzRDIvxEUGZBFbW5ocAlmDQNg8_LRcOJJOzI.cache +1 -0
  128. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/goVFgqSk0CBOXpbwLNd-enc31BvXm1S8cMSJ3zbxRYI.cache +1 -0
  129. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hPH6lLkPX0EzSG_eBprMMUnmFs9y89AOarfyhGoAFGc.cache +0 -0
  130. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hgfrt0FmGrYD5SJVJhlsUPtL9usJvw3vZrW4dqQq16Y.cache +1 -0
  131. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hiZg7FLw7SFa7S-BQ8CKWdAqFVUZy2HVb2chmQijM-g.cache +0 -0
  132. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/iKb8yzw0EdFpNkayUbc16U7olK7iwE2xIs_6b_xIEtI.cache +1 -0
  133. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/iY03Ztj2YhBWadK8LHOKR3Hj1W7PLss0v85Q6Nj7E3Q.cache +0 -0
  134. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ipLhCJrCCVwH7l_p1quUi2xS6POFlVHfZCqIymk8CoI.cache +0 -0
  135. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ipTot5AshDPhFtCBNfXROxutQlCrYkvsXsy3fcVT0Nw.cache +0 -0
  136. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/j5CxYBAeuD-bGDZUBh-pA0mEPCSVFDZsJm3x7QED4g0.cache +1 -0
  137. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jr4uhEONyFYm0QhfEOMqv05S-BeUP7gw1gQl3GIFyAI.cache +0 -0
  138. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kGO7_IQtBwpe93nSTKj6cCWGm0fZ_NoXltdw8E_74CQ.cache +2 -0
  139. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/le9WohG3eSGbBMySdKkdvkHXW8yipO8w4iQZCCCQb3M.cache +1 -0
  140. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mtmR_XlvnlYbOPmP1EkOj96q2Z5OQNv4HkeFj9DwEXQ.cache +2 -0
  141. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nU1obIDVHUhN-3yRA6B9U5aO8wsd6zh1tyVtSROJewk.cache +2 -0
  142. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/oZ6SMNNft5SCbvNtWXkGQwKQPVwXoJRMV7VUJfWHc2k.cache +2 -0
  143. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/oygs10cGTBBo7Mj97CjFRTrSrFR7Qi3MnHNR_WQvIps.cache +0 -0
  144. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/p0Gnpai0VYzEsAXH_5t9huZ3dO0v6JKRH0PIH--q-XA.cache +2 -0
  145. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/pu9xM8T2O07hU3PafxbOLjg2vJxbbHE3qnIK9JHqVhA.cache +1 -0
  146. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qEHftZrJ-Da_nsvX4UOaALyIt0mwnOuE2TdtBPGAWEw.cache +0 -0
  147. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/rtdpq5fxIYMKM43QyOIluEECg2NP5OA-7Zi8yuowZSI.cache +1 -0
  148. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ujFa5Hu76zd1O6nO2G7WcgnOWZyTOMKLajazyMXAL_I.cache +0 -0
  149. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uovLHiJZBoVnD7CXYj2WZYmAbBcqGLQOzu4Voz5Fx8c.cache +0 -0
  150. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uyHm0KHsHpJhn-wv69exuuyU4kyJtW3DDQLP7tCD7e4.cache +0 -0
  151. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/v50nc5cuqpLxjepk7XsBmomcmFARYlHQRtq8yOv8AY0.cache +0 -0
  152. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vAh5eTPxI929yxRCyXgbKTWat5cZiVSOyX0UeTveXGE.cache +1 -0
  153. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vKiuNu1fQitE151bh0Tr2Ufkc80jWzchPjxaHkpjQL8.cache +1 -0
  154. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/x-3lyh5i4qS-Q9E3X2uj2LthTOxsndFTrFXBsPPo6hI.cache +2 -0
  155. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/x3xQgAyjbrGTXy2FX2UzGG77agJgt_xsyNBuofrvY_E.cache +0 -0
  156. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xQqBwKYWFPxZm5tidxsRKk23Z3q-OLRmKQUlMjRev_c.cache +0 -0
  157. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/yZNo-6dzWGUNCJDnmqm7X5YB5FOxjYp_l8aKS6KaZOg.cache +0 -0
  158. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zV58Nou0R2EJG875wLND6wF9ES4diVi1fP7B_B6eCzw.cache +1 -0
  159. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zxPFYKpkfNJtui1ekitdNMaGAo39fefm-oJCnILEEQ8.cache +1 -0
  160. data/test/fixtures/widgets.yml +20 -0
  161. data/test/lib/express_admin/menu_test.rb +1 -1
  162. data/test/{fixtures/express_admin → support}/test_menu.yml +0 -0
  163. data/test/test_helper.rb +25 -5
  164. data/vendor/gems/express_templates/Gemfile +16 -0
  165. data/vendor/gems/express_templates/Gemfile.lock +153 -0
  166. data/vendor/gems/express_templates/LICENSE +21 -0
  167. data/vendor/gems/express_templates/README.md +152 -0
  168. data/vendor/gems/express_templates/Rakefile +32 -0
  169. data/vendor/gems/express_templates/diagrams/diagram.graffle +2404 -0
  170. data/vendor/gems/express_templates/diagrams/diagram_express_templates.png +0 -0
  171. data/vendor/gems/express_templates/diagrams/diagram_haml_erb.png +0 -0
  172. data/vendor/gems/express_templates/express_templates-0.5.0.gem +0 -0
  173. data/vendor/gems/express_templates/express_templates.gemspec +29 -0
  174. data/vendor/gems/express_templates/lib/core_extensions/proc.rb +90 -0
  175. data/vendor/gems/express_templates/lib/core_extensions/string.rb +25 -0
  176. data/vendor/gems/express_templates/lib/express_templates.rb +19 -0
  177. data/vendor/gems/express_templates/lib/express_templates/compiler.rb +36 -0
  178. data/vendor/gems/express_templates/lib/express_templates/components.rb +18 -0
  179. data/vendor/gems/express_templates/lib/express_templates/components/base.rb +54 -0
  180. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/adoptable.rb +20 -0
  181. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/building.rb +14 -0
  182. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/conditionality.rb +54 -0
  183. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/configurable.rb +90 -0
  184. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/iterating.rb +75 -0
  185. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/parenting.rb +72 -0
  186. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/rendering.rb +30 -0
  187. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/resourceful.rb +135 -0
  188. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/templating.rb +198 -0
  189. data/vendor/gems/express_templates/lib/express_templates/components/capabilities/wrapping.rb +84 -0
  190. data/vendor/gems/express_templates/lib/express_templates/components/column.rb +13 -0
  191. data/vendor/gems/express_templates/lib/express_templates/components/container.rb +7 -0
  192. data/vendor/gems/express_templates/lib/express_templates/components/content_for.rb +42 -0
  193. data/vendor/gems/express_templates/lib/express_templates/components/for_each.rb +30 -0
  194. data/vendor/gems/express_templates/lib/express_templates/components/form_rails_support.rb +22 -0
  195. data/vendor/gems/express_templates/lib/express_templates/components/forms.rb +17 -0
  196. data/vendor/gems/express_templates/lib/express_templates/components/forms/basic_fields.rb +53 -0
  197. data/vendor/gems/express_templates/lib/express_templates/components/forms/checkbox.rb +37 -0
  198. data/vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb +57 -0
  199. data/vendor/gems/express_templates/lib/express_templates/components/forms/form_component.rb +64 -0
  200. data/vendor/gems/express_templates/lib/express_templates/components/forms/form_support.rb +13 -0
  201. data/vendor/gems/express_templates/lib/express_templates/components/forms/option_support.rb +65 -0
  202. data/vendor/gems/express_templates/lib/express_templates/components/forms/radio.rb +84 -0
  203. data/vendor/gems/express_templates/lib/express_templates/components/forms/select.rb +105 -0
  204. data/vendor/gems/express_templates/lib/express_templates/components/forms/select_collection.rb +57 -0
  205. data/vendor/gems/express_templates/lib/express_templates/components/forms/submit.rb +26 -0
  206. data/vendor/gems/express_templates/lib/express_templates/components/null_wrap.rb +41 -0
  207. data/vendor/gems/express_templates/lib/express_templates/components/row.rb +28 -0
  208. data/vendor/gems/express_templates/lib/express_templates/components/table_for.rb +163 -0
  209. data/vendor/gems/express_templates/lib/express_templates/components/tree_for.rb +86 -0
  210. data/vendor/gems/express_templates/lib/express_templates/components/unless_block.rb +40 -0
  211. data/vendor/gems/express_templates/lib/express_templates/expander.rb +140 -0
  212. data/vendor/gems/express_templates/lib/express_templates/indenter.rb +47 -0
  213. data/vendor/gems/express_templates/lib/express_templates/interpolator.rb +36 -0
  214. data/vendor/gems/express_templates/lib/express_templates/macro.rb +45 -0
  215. data/vendor/gems/express_templates/lib/express_templates/markup.rb +9 -0
  216. data/vendor/gems/express_templates/lib/express_templates/markup/html_tag.rb +62 -0
  217. data/vendor/gems/express_templates/lib/express_templates/markup/tag.rb +150 -0
  218. data/vendor/gems/express_templates/lib/express_templates/markup/wrapper.rb +94 -0
  219. data/vendor/gems/express_templates/lib/express_templates/markup/yielder.rb +21 -0
  220. data/vendor/gems/express_templates/lib/express_templates/renderer.rb +11 -0
  221. data/vendor/gems/express_templates/lib/express_templates/template/handler.rb +15 -0
  222. data/vendor/gems/express_templates/lib/express_templates/version.rb +3 -0
  223. data/vendor/gems/express_templates/lib/tasks/express_templates.rake +4 -0
  224. data/vendor/gems/express_templates/test/compiler_test.rb +9 -0
  225. data/vendor/gems/express_templates/test/components/base_test.rb +44 -0
  226. data/vendor/gems/express_templates/test/components/capabilities/resourceful_test.rb +63 -0
  227. data/vendor/gems/express_templates/test/components/column_test.rb +11 -0
  228. data/vendor/gems/express_templates/test/components/conditionality_test.rb +37 -0
  229. data/vendor/gems/express_templates/test/components/configurable_test.rb +43 -0
  230. data/vendor/gems/express_templates/test/components/container_test.rb +66 -0
  231. data/vendor/gems/express_templates/test/components/content_for_test.rb +60 -0
  232. data/vendor/gems/express_templates/test/components/forms/basic_fields_test.rb +52 -0
  233. data/vendor/gems/express_templates/test/components/forms/checkbox_test.rb +44 -0
  234. data/vendor/gems/express_templates/test/components/forms/express_form_test.rb +108 -0
  235. data/vendor/gems/express_templates/test/components/forms/radio_test.rb +96 -0
  236. data/vendor/gems/express_templates/test/components/forms/select_test.rb +146 -0
  237. data/vendor/gems/express_templates/test/components/forms/submit_test.rb +12 -0
  238. data/vendor/gems/express_templates/test/components/iterating_test.rb +127 -0
  239. data/vendor/gems/express_templates/test/components/null_wrap_test.rb +28 -0
  240. data/vendor/gems/express_templates/test/components/row_test.rb +16 -0
  241. data/vendor/gems/express_templates/test/components/table_for_test.rb +211 -0
  242. data/vendor/gems/express_templates/test/components/tree_for_test.rb +103 -0
  243. data/vendor/gems/express_templates/test/core_extensions/proc_test.rb +71 -0
  244. data/vendor/gems/express_templates/test/core_extensions/string_test.rb +20 -0
  245. data/vendor/gems/express_templates/test/dummy/Rakefile +6 -0
  246. data/vendor/gems/express_templates/test/dummy/app/assets/javascripts/application.js +13 -0
  247. data/vendor/gems/express_templates/test/dummy/app/assets/stylesheets/application.css +15 -0
  248. data/vendor/gems/express_templates/test/dummy/app/controllers/application_controller.rb +5 -0
  249. data/vendor/gems/express_templates/test/dummy/app/controllers/hello_controller.rb +5 -0
  250. data/vendor/gems/express_templates/test/dummy/app/helpers/application_helper.rb +2 -0
  251. data/vendor/gems/express_templates/test/dummy/app/views/hello/show.html.et +5 -0
  252. data/vendor/gems/express_templates/test/dummy/app/views/layouts/application.html.et +15 -0
  253. data/vendor/gems/express_templates/test/dummy/bin/bundle +3 -0
  254. data/vendor/gems/express_templates/test/dummy/bin/rails +4 -0
  255. data/vendor/gems/express_templates/test/dummy/bin/rake +4 -0
  256. data/vendor/gems/express_templates/test/dummy/config.ru +4 -0
  257. data/vendor/gems/express_templates/test/dummy/config/application.rb +26 -0
  258. data/vendor/gems/express_templates/test/dummy/config/boot.rb +5 -0
  259. data/vendor/gems/express_templates/test/dummy/config/environment.rb +5 -0
  260. data/vendor/gems/express_templates/test/dummy/config/environments/development.rb +37 -0
  261. data/vendor/gems/express_templates/test/dummy/config/environments/production.rb +82 -0
  262. data/vendor/gems/express_templates/test/dummy/config/environments/test.rb +40 -0
  263. data/vendor/gems/express_templates/test/dummy/config/initializers/assets.rb +8 -0
  264. data/vendor/gems/express_templates/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  265. data/vendor/gems/express_templates/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  266. data/vendor/gems/express_templates/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  267. data/vendor/gems/express_templates/test/dummy/config/initializers/inflections.rb +16 -0
  268. data/vendor/gems/express_templates/test/dummy/config/initializers/mime_types.rb +4 -0
  269. data/vendor/gems/express_templates/test/dummy/config/initializers/session_store.rb +3 -0
  270. data/vendor/gems/express_templates/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  271. data/vendor/gems/express_templates/test/dummy/config/locales/en.yml +23 -0
  272. data/vendor/gems/express_templates/test/dummy/config/routes.rb +4 -0
  273. data/vendor/gems/express_templates/test/dummy/config/secrets.yml +22 -0
  274. data/vendor/gems/express_templates/test/dummy/log/test.log +15987 -0
  275. data/vendor/gems/express_templates/test/dummy/public/404.html +67 -0
  276. data/vendor/gems/express_templates/test/dummy/public/422.html +67 -0
  277. data/vendor/gems/express_templates/test/dummy/public/500.html +66 -0
  278. data/vendor/gems/express_templates/test/dummy/public/favicon.ico +0 -0
  279. data/vendor/gems/express_templates/test/dummy/test/controllers/hello_controller_test.rb +14 -0
  280. data/vendor/gems/express_templates/test/dummy/test/helpers/hello_helper_test.rb +4 -0
  281. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-1ax0k6FO5drSUN6jbogg4G0JliUHLffvQUvzSePKxA.cache +1 -0
  282. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-cDLO4NJHMndDHchOLz8KLD7QBc68WtaAbYxK2r6GsU.cache +0 -0
  283. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0t68EIwZ96sAqQSxFka9MQyIk4viw8ZIoREMCGiJRx0.cache +0 -0
  284. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/28LzLLDYjhr3jmu0GxjZ-ms5Bol6JilDRXpg8Zgbjqs.cache +1 -0
  285. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2zt1IbQCnmzGyeZS_I4sYQzrgneSCKIJBRxcffVHlWY.cache +1 -0
  286. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/5AeGDyXQbv_BTj3PD4MJpNnGVwUxLsA8H1VcwB69_wE.cache +0 -0
  287. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/B0RgtiEmqwrCQuw4AnDa3fdENtJeBtO_TqtGJuWOeNs.cache +3 -0
  288. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/D-tMNp19G2zWOPPhnQRUm4K8DPa8SpKPfGALkkofTeE.cache +0 -0
  289. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/EDVlXrcn_wEfaZ5nc_4QJBT7lPiIBcX96jBo7PBz-vc.cache +1 -0
  290. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Eso3tkb79hXQ1XdQgjbV03KyQwSeZFAHxVHImsjQ-HQ.cache +2 -0
  291. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/I8LhheC1OlOyvp_qY8kWpqKcZFiqv_BO-l5bExvDEi0.cache +1 -0
  292. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Kf4VrP5sW-qzziYSN-m7p4nETjLiEwwwRfwUOm7rOr0.cache +0 -0
  293. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Pd5YOD1DAL7QtTnwETZYBCabg5DkCFgbjt4iuBOcSoY.cache +1 -0
  294. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QJ0Z8hROMfWpY6f5Chb7GSuDHE4gpabKVQTr9BCZe9s.cache +1 -0
  295. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/T1pSAx767vY7X1UDN0vdF7YGEkI5wMSVUKopsdvp7kI.cache +1 -0
  296. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/VlSPFPDK05c7ImadRiRVKzsaa6e15RwX77QR3NYabME.cache +0 -0
  297. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Y7_BbgB9jgJIWYjDCsASySd26DTfPADAu_3DDnLlFog.cache +0 -0
  298. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/bSfZQxeyghTF4WIVnzGavxlg9afmSNuqcW6bA1Bm1OA.cache +0 -0
  299. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fvD_ZNFRzd8Sc4PoTjyHPnkg4f7WMietFunnKqNjlvc.cache +2 -0
  300. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/g2xQygPqA5kMmp5L3wVGWaUIhdVsxFmOel9FF6M0Fuw.cache +0 -0
  301. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hKbgrf5CbMO8pe9fCHc-rI5mp1ejAhivBfvfDxBNhQA.cache +0 -0
  302. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kaif59owjUr3HBharCH5GUxU6KoW_zXD9a9JiTjIYPY.cache +1 -0
  303. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kpvKX5UlhhoLJv-faeq7Ibv2KQh4ROjTiarh13gHuWI.cache +2 -0
  304. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/lfyrNtbNtwuTXAWlmPCKTS-D3FHoPTY6h53wnUN36-A.cache +0 -0
  305. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/lyDRhWNhfDw_YCCSbxQw_iOIV3eTfeAoX6mTREuVZSA.cache +3 -0
  306. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/p17lC0HAHCtk1ds_NHl9xhEyMtRjfQInw1c6fmFWguc.cache +0 -0
  307. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/p1cwnBd8RQBm9x5HzDmiiU7RhvnxhPX8VTfi0tTElJY.cache +3 -0
  308. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qT6_0ti_v6fAjS3wETXqvTkr6W0LP4PB942uLYQzWK8.cache +3 -0
  309. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qzU7DVwQZ7z6i6pYUpssYsAj0y33GN83B4O1bLvkW_4.cache +1 -0
  310. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/r56eI1z7iFKeySym_9zw5hVOPjb0d6IQPn5pAYTKk04.cache +2 -0
  311. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/rGWvoeLyiyqb813IXgfDpDxks23JQoLLZOa69bzKPE8.cache +1 -0
  312. data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/y8T65xpx0s3RgT_YiqWEEXIaBsgK4woCNSuZ1zjQZBk.cache +2 -0
  313. data/vendor/gems/express_templates/test/expander_stack_test.rb +41 -0
  314. data/vendor/gems/express_templates/test/expander_test.rb +99 -0
  315. data/vendor/gems/express_templates/test/express_templates_test.rb +19 -0
  316. data/vendor/gems/express_templates/test/handler_test.rb +122 -0
  317. data/vendor/gems/express_templates/test/indenter_test.rb +27 -0
  318. data/vendor/gems/express_templates/test/interpolator_test.rb +80 -0
  319. data/vendor/gems/express_templates/test/markup/tag_test.rb +149 -0
  320. data/vendor/gems/express_templates/test/markup/wrapper_test.rb +42 -0
  321. data/vendor/gems/express_templates/test/markup/yielder_test.rb +9 -0
  322. data/vendor/gems/express_templates/test/performance_test.rb +93 -0
  323. data/vendor/gems/express_templates/test/test_helper.rb +28 -0
  324. data/vendor/gems/foundation_apps_styles/Gemfile +4 -0
  325. data/vendor/gems/foundation_apps_styles/LICENSE.txt +21 -0
  326. data/vendor/gems/foundation_apps_styles/README.md +41 -0
  327. data/vendor/gems/foundation_apps_styles/Rakefile +13 -0
  328. data/vendor/gems/foundation_apps_styles/bin/console +14 -0
  329. data/vendor/gems/foundation_apps_styles/bin/setup +7 -0
  330. data/vendor/gems/foundation_apps_styles/foundation_apps_styles.gemspec +24 -0
  331. data/vendor/gems/foundation_apps_styles/lib/foundation_apps_styles.rb +6 -0
  332. data/vendor/gems/foundation_apps_styles/lib/foundation_apps_styles/version.rb +3 -0
  333. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/account.svg +44 -0
  334. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/action.svg +38 -0
  335. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/ban.svg +17 -0
  336. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/bell.svg +22 -0
  337. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/bookmark.svg +14 -0
  338. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/cart.svg +35 -0
  339. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/chevron.svg +28 -0
  340. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/circle-check.svg +25 -0
  341. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/circle-x.svg +25 -0
  342. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/cog.svg +17 -0
  343. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/comment-square.svg +14 -0
  344. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/dashboard.svg +38 -0
  345. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/document.svg +28 -0
  346. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/envelope.svg +44 -0
  347. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/flag.svg +24 -0
  348. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/home.svg +28 -0
  349. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/lock.svg +55 -0
  350. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/magnifying-glass.svg +26 -0
  351. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/person.svg +62 -0
  352. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/reload.svg +19 -0
  353. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/share-boxed.svg +17 -0
  354. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/star.svg +14 -0
  355. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/thumb.svg +38 -0
  356. data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/zoom.svg +56 -0
  357. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/_global.scss +131 -0
  358. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/_includes.scss +33 -0
  359. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/_settings.scss +614 -0
  360. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_accordion.scss +72 -0
  361. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_action-sheet.scss +265 -0
  362. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_block-list.scss +360 -0
  363. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_button-group.scss +197 -0
  364. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_button.scss +205 -0
  365. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_card.scss +93 -0
  366. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_extras.scss +54 -0
  367. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_forms.scss +460 -0
  368. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_grid.scss +422 -0
  369. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_iconic.scss +95 -0
  370. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_label.scss +134 -0
  371. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_list.scss +19 -0
  372. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_menu-bar.scss +382 -0
  373. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_modal.scss +129 -0
  374. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_motion.scss +525 -0
  375. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_notification.scss +207 -0
  376. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_off-canvas.scss +169 -0
  377. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_panel.scss +134 -0
  378. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_popup.scss +68 -0
  379. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_switch.scss +134 -0
  380. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_tabs.scss +100 -0
  381. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_title-bar.scss +135 -0
  382. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_typography.scss +345 -0
  383. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_utilities.scss +160 -0
  384. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/foundation-apps.css +6146 -0
  385. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/foundation.scss +50 -0
  386. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/helpers/_breakpoints.scss +154 -0
  387. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/helpers/_functions.scss +343 -0
  388. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/helpers/_images.scss +19 -0
  389. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/helpers/_mixins.scss +123 -0
  390. data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/vendor/_normalize.scss +424 -0
  391. metadata +512 -36
  392. data/app/assets/stylesheets/express_admin/foundation_and_overrides.scss +0 -1443
  393. data/app/assets/stylesheets/express_admin/sections/_devise.sass +0 -42
  394. data/app/assets/stylesheets/express_admin/sections/_sidebar.sass +0 -42
  395. data/app/assets/stylesheets/express_admin/shared/_labels.sass +0 -16
  396. data/app/assets/stylesheets/express_admin/shared/_navigation.sass +0 -20
  397. data/lib/generators/express_admin/scaffold/templates/show.html.et.erb +0 -10
@@ -0,0 +1,84 @@
1
+ module ExpressTemplates
2
+ module Components
3
+ module Capabilities
4
+
5
+ # Add the ability for a component template to wrap or decorate a fragment
6
+ # with another fragment.
7
+ #
8
+ # The insertion point for the inner fragment is marked with <tt>_yield</tt>
9
+ #
10
+ # Example:
11
+ #
12
+ # class MenuComponent < ExpressTemplates::Components::Base
13
+ #
14
+ # fragments :menu_item, -> { li { menu_link(item) } },
15
+ # :menu_wrapper, -> { ul { _yield } }
16
+ #
17
+ # for_each -> { menu_items }
18
+ #
19
+ # wrap_with :menu_wrapper
20
+ #
21
+ # end
22
+ #
23
+ # Note this example also uses Capabilities::Iterating.
24
+ #
25
+ # Provides:
26
+ #
27
+ # * Wrapping::ClassMethods
28
+ #
29
+ module Wrapping
30
+ def self.included(base)
31
+ base.class_eval do
32
+ extend ClassMethods
33
+ include InstanceMethods
34
+ end
35
+ end
36
+
37
+ module InstanceMethods
38
+ def compile
39
+ lookup :markup
40
+ end
41
+ end
42
+
43
+ module ClassMethods
44
+
45
+ # Enclose whatever the component would already generate
46
+ # inside the specified fragment wherever we encounter _yield
47
+ def wrap_with(fragment, dont_wrap_if: false )
48
+ wrapper_name(fragment)
49
+ wrapper_src = _lookup(fragment).source
50
+ inner_src = _lookup(:markup).source_body
51
+ wrapped_src = wrapper_src.gsub!(/\W_yield\W/, inner_src)
52
+
53
+ fragment_src = if dont_wrap_if
54
+ %Q(-> {
55
+ unless_block(Proc.from_source(#{dont_wrap_if.source.inspect}), alt: Proc.from_source(%q(-> {#{inner_src}}))) {
56
+ #{Proc.from_source(wrapped_src).source_body}
57
+ }
58
+ })
59
+ else
60
+ wrapped_src
61
+ end
62
+
63
+ _store :markup, Proc.from_source(fragment_src)
64
+
65
+ end
66
+
67
+ def wrapper_name(name = nil)
68
+ if name.nil?
69
+ @wrapper_name || :markup
70
+ else
71
+ @wrapper_name = name
72
+ end
73
+ end
74
+
75
+ def _yield(*args)
76
+ "{{_yield}}"
77
+ end
78
+
79
+ end
80
+
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,13 @@
1
+ module ExpressTemplates
2
+ module Components
3
+ class Column < Container
4
+ include Capabilities::Configurable
5
+
6
+ emits -> {
7
+ div.column(my[:id]) {
8
+ _yield
9
+ }
10
+ }
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ module ExpressTemplates
2
+ module Components
3
+ class Container < Base
4
+ include Capabilities::Parenting
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,42 @@
1
+ module ExpressTemplates
2
+ module Components
3
+ # Provide a wrapper for the content_for helper which
4
+ # accepts a block of express template code.
5
+ #
6
+ # Example:
7
+ #
8
+ # ```ruby
9
+ # content_for(:header) {
10
+ # h1 "Title"
11
+ # }
12
+ # ```
13
+ # Or:
14
+ # ```ruby
15
+ # content_for(:page_title), "People"
16
+ # ```
17
+ class ContentFor < Container
18
+ include Capabilities::Configurable
19
+ def compile
20
+ children_markup = compile_children
21
+ content_label = @args[0]
22
+ result = %Q|\ncontent_for(:#{content_label}|
23
+ if children_markup.empty?
24
+ if @args[1].kind_of?(String)
25
+ children_markup = @args[1]
26
+ # append children as argument
27
+ result << %Q|, "#{children_markup}".html_safe).to_s|
28
+ else
29
+ # no markup specified - must be referencing the content
30
+ result << ").to_s"
31
+ end
32
+ else
33
+ # append children in block form
34
+ result << %Q|) {
35
+ (#{children_markup.gsub(/^\s+/, '')}).html_safe
36
+ }.to_s|
37
+ end
38
+ result
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,30 @@
1
+ module ExpressTemplates
2
+ module Components
3
+ class ForEach < Components::Container
4
+ attr :collection, :member
5
+
6
+ def initialize(*args)
7
+ iterator = args.shift
8
+ options = args.first.kind_of?(Hash) ? args.shift : {}
9
+ expander = args.shift
10
+ @collection, @member = nil, (options[:as]||"item")
11
+ if iterator.kind_of?(Symbol)
12
+ @collection = iterator.to_s
13
+ @member = collection.sub(/^@/, '').singularize
14
+ elsif iterator.kind_of?(Proc)
15
+ @collection = "(#{iterator.source}.call)"
16
+ elsif iterator.kind_of?(String)
17
+ @collection = "(#{iterator}.call)"
18
+ else
19
+ raise "ForEach unknown iterator: #{iterator}"
20
+ end
21
+ end
22
+
23
+
24
+ def compile
25
+ %Q((#{@collection}.each_with_index.map do |#{@member}, #{@member}_index|#{compile_children}\nend).join)
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,22 @@
1
+ module ExpressTemplates
2
+ module Components
3
+ # Provide hidden fields such as the authenticity token
4
+ # and the utf8 enforcer tag as well as a method tag as
5
+ # would be provided by Rails' form helpers.
6
+ #
7
+ # An optional method may be speficied. Defaults to 'post'.
8
+ class FormRailsSupport < Base
9
+ include Capabilities::Configurable
10
+ emits -> {
11
+ div(style: 'display:none') {
12
+ utf8_enforcer_tag
13
+ # NOTE: This should be moved into the forms module and made a FormComponent
14
+ # to have access to the resource_name as this code assumes existence of
15
+ # a resource method which may not exist
16
+ method_tag(@config[:id] || "{{((resource.persisted? ? :put : :post) rescue :post)}}")
17
+ token_tag
18
+ }
19
+ }
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,17 @@
1
+ module ExpressTemplates
2
+ module Components
3
+ module Forms
4
+ end
5
+ end
6
+ end
7
+
8
+ require 'express_templates/components/forms/form_support'
9
+ require 'express_templates/components/forms/express_form'
10
+ require 'express_templates/components/forms/form_component'
11
+ require 'express_templates/components/forms/option_support'
12
+ require 'express_templates/components/forms/submit'
13
+ require 'express_templates/components/forms/select'
14
+ require 'express_templates/components/forms/select_collection'
15
+ require 'express_templates/components/forms/radio'
16
+ require 'express_templates/components/forms/checkbox'
17
+ require 'express_templates/components/forms/basic_fields'
@@ -0,0 +1,53 @@
1
+ module ExpressTemplates
2
+ module Components
3
+ module Forms
4
+ module BasicFields
5
+ ALL = %w(email phone text password color date datetime
6
+ datetime_local number range
7
+ search telephone time url week)
8
+
9
+ ALL.each do |type|
10
+ class_definition = <<-RUBY
11
+ class #{type.classify} < FormComponent
12
+ emits -> {
13
+ div(class: field_wrapper_class) {
14
+ label_tag(label_name, label_text)
15
+ #{type}_field resource_var, field_name.to_sym
16
+ }
17
+ }
18
+ end
19
+ RUBY
20
+
21
+ eval(class_definition)
22
+
23
+ end
24
+ end
25
+
26
+ # class Email < FormComponent
27
+ # emits -> {
28
+ # div(class: field_wrapper_class) {
29
+ # email_field resource_var, field_name.to_sym
30
+ # }
31
+ # }
32
+ # end
33
+
34
+ class Textarea < FormComponent
35
+ emits -> {
36
+ div(class: field_wrapper_class) {
37
+ label_tag(label_name, label_text)
38
+ text_area resource_var, field_name.to_sym
39
+ }
40
+ }
41
+ end
42
+
43
+ class Hidden < FormComponent
44
+ emits -> {
45
+ hidden_field resource_var, field_name.to_sym
46
+ }
47
+ end
48
+
49
+
50
+ end
51
+ end
52
+ end
53
+
@@ -0,0 +1,37 @@
1
+ module ExpressTemplates
2
+ module Components
3
+ module Forms
4
+ class Checkbox < FormComponent
5
+
6
+ emits -> {
7
+ div(class: field_wrapper_class) {
8
+ label_tag(label_name, label_text) if label_before?
9
+ check_box(resource_var, field_name.to_sym, field_options, checked_value, unchecked_value)
10
+ label_tag(label_name, label_text) if label_after?
11
+ }
12
+ }
13
+
14
+ def label_before?
15
+ !label_after?
16
+ end
17
+
18
+ def label_after?
19
+ !!@config[:label_after]
20
+ end
21
+
22
+ def field_options
23
+ {}
24
+ end
25
+
26
+ def checked_value
27
+ "1"
28
+ end
29
+
30
+ def unchecked_value
31
+ "0"
32
+ end
33
+
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,57 @@
1
+ module ExpressTemplates
2
+ module Components
3
+ module Forms
4
+ class ExpressForm < Base
5
+ include Capabilities::Configurable
6
+ include Capabilities::Parenting
7
+ include Capabilities::Resourceful
8
+ include Forms::FormSupport
9
+
10
+ emits -> {
11
+ form( form_args ) {
12
+ form_rails_support form_method
13
+ _yield
14
+ }
15
+ }
16
+
17
+ def form_id
18
+ "#{resource_name}_{{@#{resource_name}.id}}"
19
+ end
20
+
21
+ def form_method
22
+ @config[:method]
23
+ end
24
+
25
+
26
+ def form_args
27
+ # there are no put/patch emthods in HTML5, so we have to enforce post
28
+ # need to find a better way to do this: id/action can be overridden but method
29
+ # should always be :post IN THE FORM TAG
30
+ args = {id: form_id, action: form_action}.merge!(@config).merge!(method: :post)
31
+
32
+ if html_options = args.delete(:html_options)
33
+ args.merge!(html_options)
34
+ end
35
+ args[:method] = args[:method].to_s.upcase
36
+ args
37
+ end
38
+
39
+ def resource_name_for_path
40
+ @config[:id].to_s
41
+ end
42
+
43
+ def resource_name
44
+ (@config[:resource_name] || @config[:id]).to_s
45
+ end
46
+
47
+ private
48
+
49
+ def _modifying_resource?
50
+ [:put, :patch].include? form_method
51
+ end
52
+
53
+ end
54
+ end
55
+ end
56
+ end
57
+
@@ -0,0 +1,64 @@
1
+ module ExpressTemplates
2
+ module Components
3
+ module Forms
4
+ class FormComponent < Base
5
+ include Capabilities::Configurable
6
+ include Capabilities::Adoptable
7
+
8
+ def compile(*args)
9
+ raise "#{self.class} requires a parent ExpressForm" if parent.nil? or parent_form.nil?
10
+ super(*args)
11
+ end
12
+
13
+ # Lookup the resource_name from the parent ExpressForm.
14
+ def resource_name
15
+ parent_form.resource_name
16
+ end
17
+
18
+ def resource_var
19
+ resource_name.to_sym
20
+ end
21
+
22
+ def resource_class
23
+ parent_form.resource_class
24
+ end
25
+
26
+ # Return the name attribute for the lable
27
+ def label_name
28
+ "#{resource_name.singularize}_#{field_name}"
29
+ end
30
+
31
+ # Return the text content for the label
32
+ def label_text
33
+ @config[:label] || field_name.titleize
34
+ end
35
+
36
+ # Return the field_name as a string. This taken from the first argument
37
+ # to the component macro in the template or fragment.
38
+ def field_name
39
+ (@config[:id] || (@args.first.is_a?(String) && @args.first)).to_s
40
+ end
41
+
42
+ # Return the field name attribute. Currently handles only simple attributes
43
+ # on the resource. Does not handle attributes for associated resources.
44
+ def field_name_attribute
45
+ "#{resource_name.singularize}[#{field_name}]"
46
+ end
47
+
48
+ def field_wrapper_class
49
+ @config[:wrapper_class] || 'field-wrapper'
50
+ end
51
+
52
+ # Search the parent graph until we find an ExpressForm. Returns nil if none found.
53
+ def parent_form
54
+ @my_form ||= parent
55
+ until @my_form.nil? || @my_form.kind_of?(ExpressForm)
56
+ @my_form = @my_form.parent
57
+ end
58
+ return @my_form
59
+ end
60
+
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,13 @@
1
+ module ExpressTemplates
2
+ module Components
3
+ module Forms
4
+ module FormSupport
5
+
6
+ def form_action
7
+ @config[:action] || "{{@#{resource_name}.try(:persisted?) ? #{resource_path(ivar: true)} : #{collection_path}}}"
8
+ end
9
+
10
+ end
11
+ end
12
+ end
13
+ end