matestack-ui-core 0.7.2.1 → 1.0.0.rc.1

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 (265) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +8 -0
  3. data/README.md +28 -204
  4. data/Rakefile +32 -0
  5. data/app/concepts/matestack/ui/core/abbr/abbr.haml +2 -2
  6. data/app/concepts/matestack/ui/core/abbr/abbr.rb +3 -2
  7. data/app/concepts/matestack/ui/core/action/action.js +114 -11
  8. data/app/concepts/matestack/ui/core/action/action.rb +41 -13
  9. data/app/concepts/matestack/ui/core/{component/response_dynamic.haml → actionview/dynamic.haml} +2 -3
  10. data/app/concepts/matestack/ui/core/actionview/dynamic.rb +28 -0
  11. data/app/concepts/matestack/ui/core/{component → actionview}/static.haml +0 -0
  12. data/app/concepts/matestack/ui/core/actionview/static.rb +28 -0
  13. data/app/concepts/matestack/ui/core/address/address.haml +2 -2
  14. data/app/concepts/matestack/ui/core/address/address.rb +1 -1
  15. data/app/concepts/matestack/ui/core/app/app.haml +2 -3
  16. data/app/concepts/matestack/ui/core/app/app.js +18 -4
  17. data/app/concepts/matestack/ui/core/app/app.rb +34 -81
  18. data/app/concepts/matestack/ui/core/app/location.js +9 -0
  19. data/app/concepts/matestack/ui/core/app/store.js +35 -6
  20. data/app/concepts/matestack/ui/core/area/area.haml +1 -0
  21. data/app/concepts/matestack/ui/core/area/area.rb +20 -0
  22. data/app/concepts/matestack/ui/core/aside/aside.haml +3 -0
  23. data/app/concepts/matestack/ui/core/aside/aside.rb +5 -0
  24. data/app/concepts/matestack/ui/core/async/async.haml +6 -2
  25. data/app/concepts/matestack/ui/core/async/async.js +64 -8
  26. data/app/concepts/matestack/ui/core/async/async.rb +29 -4
  27. data/app/concepts/matestack/ui/core/async/children_wrapper.haml +2 -0
  28. data/app/concepts/matestack/ui/core/{pg/pg.haml → b/b.haml} +1 -1
  29. data/app/concepts/matestack/ui/core/b/b.rb +5 -0
  30. data/app/concepts/matestack/ui/core/bdi/bdi.haml +5 -0
  31. data/app/concepts/matestack/ui/core/bdi/bdi.rb +4 -0
  32. data/app/concepts/matestack/ui/core/bdo/bdo.haml +5 -0
  33. data/app/concepts/matestack/ui/core/bdo/bdo.rb +11 -0
  34. data/app/concepts/matestack/ui/core/cite/cite.haml +5 -0
  35. data/app/concepts/matestack/ui/core/cite/cite.rb +5 -0
  36. data/app/concepts/matestack/ui/core/code/code.haml +5 -0
  37. data/app/concepts/matestack/ui/core/code/code.rb +5 -0
  38. data/app/concepts/matestack/ui/core/collection/content/content.js +4 -4
  39. data/app/concepts/matestack/ui/core/collection/content/content.rb +2 -2
  40. data/app/concepts/matestack/ui/core/collection/content/page/link/link.rb +4 -2
  41. data/app/concepts/matestack/ui/core/collection/filter/filter.js +3 -3
  42. data/app/concepts/matestack/ui/core/collection/filter/filter.rb +4 -5
  43. data/app/concepts/matestack/ui/core/collection/filter/select/select.haml +10 -0
  44. data/app/concepts/matestack/ui/core/collection/filter/select/select.rb +29 -0
  45. data/app/concepts/matestack/ui/core/collection/helper.rb +14 -6
  46. data/app/concepts/matestack/ui/core/collection/order/order.js +4 -4
  47. data/app/concepts/matestack/ui/core/collection/order/order.rb +4 -5
  48. data/app/concepts/matestack/ui/core/collection/order/toggle/indicator/indicator.rb +6 -5
  49. data/app/concepts/matestack/ui/core/component/anonym-dynamic-component.js +1 -1
  50. data/app/concepts/matestack/ui/core/component/base.rb +424 -0
  51. data/app/concepts/matestack/ui/core/component/children.haml +2 -2
  52. data/app/concepts/matestack/ui/core/component/component.js +1 -55
  53. data/app/concepts/matestack/ui/core/component/dynamic.haml +1 -1
  54. data/app/concepts/matestack/ui/core/component/dynamic.rb +24 -239
  55. data/app/concepts/matestack/ui/core/component/rerender.rb +8 -0
  56. data/app/concepts/matestack/ui/core/component/static.rb +3 -12
  57. data/app/concepts/matestack/ui/core/data/data.haml +5 -0
  58. data/app/concepts/matestack/ui/core/data/data.rb +9 -0
  59. data/app/concepts/matestack/ui/core/datalist/datalist.haml +3 -0
  60. data/app/concepts/matestack/ui/core/datalist/datalist.rb +5 -0
  61. data/app/concepts/matestack/ui/core/dd/dd.haml +5 -0
  62. data/app/concepts/matestack/ui/core/dd/dd.rb +5 -0
  63. data/app/concepts/matestack/ui/core/del/del.haml +5 -0
  64. data/app/concepts/matestack/ui/core/del/del.rb +4 -0
  65. data/app/concepts/matestack/ui/core/dfn/dfn.haml +5 -0
  66. data/app/concepts/matestack/ui/core/dfn/dfn.rb +6 -0
  67. data/app/concepts/matestack/ui/core/dialog/dialog.haml +5 -0
  68. data/app/concepts/matestack/ui/core/dialog/dialog.rb +9 -0
  69. data/app/concepts/matestack/ui/core/dl/dl.haml +5 -0
  70. data/app/concepts/matestack/ui/core/dl/dl.rb +5 -0
  71. data/app/concepts/matestack/ui/core/dt/dt.haml +5 -0
  72. data/app/concepts/matestack/ui/core/dt/dt.rb +5 -0
  73. data/app/concepts/matestack/ui/core/em/em.haml +5 -0
  74. data/app/concepts/matestack/ui/core/em/em.rb +5 -0
  75. data/app/concepts/matestack/ui/core/fieldset/fieldset.haml +5 -0
  76. data/app/concepts/matestack/ui/core/fieldset/fieldset.rb +9 -0
  77. data/app/concepts/matestack/ui/core/figure/figure.haml +3 -0
  78. data/app/concepts/matestack/ui/core/figure/figure.rb +5 -0
  79. data/app/concepts/matestack/ui/core/form/checkbox/checkbox.rb +79 -0
  80. data/app/concepts/matestack/ui/core/form/form.js +266 -96
  81. data/app/concepts/matestack/ui/core/form/form.rb +29 -2
  82. data/app/concepts/matestack/ui/core/form/has_errors.rb +54 -0
  83. data/app/concepts/matestack/ui/core/form/has_input_html_attributes.rb +13 -0
  84. data/app/concepts/matestack/ui/core/form/input/input.rb +39 -52
  85. data/app/concepts/matestack/ui/core/form/radio/radio.rb +71 -0
  86. data/app/concepts/matestack/ui/core/form/select/select.haml +9 -76
  87. data/app/concepts/matestack/ui/core/form/select/select.rb +64 -49
  88. data/app/concepts/matestack/ui/core/form/submit/submit.rb +4 -1
  89. data/app/concepts/matestack/ui/core/form/textarea/textarea.rb +28 -0
  90. data/app/concepts/matestack/ui/core/form/utils.rb +47 -0
  91. data/app/concepts/matestack/ui/core/heading/heading.rb +2 -0
  92. data/app/concepts/matestack/ui/core/iframe/iframe.haml +5 -0
  93. data/app/concepts/matestack/ui/core/iframe/iframe.rb +14 -0
  94. data/app/concepts/matestack/ui/core/img/img.rb +1 -0
  95. data/app/concepts/matestack/ui/core/input/input.haml +1 -3
  96. data/app/concepts/matestack/ui/core/input/input.rb +8 -0
  97. data/app/concepts/matestack/ui/core/ins/ins.haml +5 -0
  98. data/app/concepts/matestack/ui/core/ins/ins.rb +10 -0
  99. data/app/concepts/matestack/ui/core/isolated/children_wrapper.haml +2 -0
  100. data/app/concepts/matestack/ui/core/isolated/isolated.haml +10 -0
  101. data/app/concepts/matestack/ui/core/isolated/isolated.js +108 -0
  102. data/app/concepts/matestack/ui/core/isolated/isolated.rb +59 -0
  103. data/app/concepts/matestack/ui/core/js/core.js +43 -19
  104. data/app/concepts/matestack/ui/core/kbd/kbd.haml +5 -0
  105. data/app/concepts/matestack/ui/core/kbd/kbd.rb +4 -0
  106. data/app/concepts/matestack/ui/core/label/label.rb +6 -1
  107. data/app/concepts/matestack/ui/core/legend/legend.haml +5 -0
  108. data/app/concepts/matestack/ui/core/legend/legend.rb +5 -0
  109. data/app/concepts/matestack/ui/core/link/link.rb +7 -6
  110. data/app/concepts/matestack/ui/core/{absolute/absolute.haml → map/map.haml} +1 -1
  111. data/app/concepts/matestack/ui/core/map/map.rb +11 -0
  112. data/app/concepts/matestack/ui/core/mark/mark.haml +5 -0
  113. data/app/concepts/matestack/ui/core/mark/mark.rb +4 -0
  114. data/app/concepts/matestack/ui/core/meter/meter.haml +4 -0
  115. data/app/concepts/matestack/ui/core/meter/meter.rb +14 -0
  116. data/app/concepts/matestack/ui/core/noscript/noscript.haml +5 -0
  117. data/app/concepts/matestack/ui/core/noscript/noscript.rb +5 -0
  118. data/app/concepts/matestack/ui/core/object/object.haml +1 -0
  119. data/app/concepts/matestack/ui/core/object/object.rb +15 -0
  120. data/app/concepts/matestack/ui/core/onclick/onclick.js +2 -3
  121. data/app/concepts/matestack/ui/core/onclick/onclick.rb +1 -0
  122. data/app/concepts/matestack/ui/core/optgroup/optgroup.haml +3 -0
  123. data/app/concepts/matestack/ui/core/optgroup/optgroup.rb +10 -0
  124. data/app/concepts/matestack/ui/core/option/option.haml +5 -0
  125. data/app/concepts/matestack/ui/core/option/option.rb +12 -0
  126. data/app/concepts/matestack/ui/core/output/output.haml +5 -0
  127. data/app/concepts/matestack/ui/core/output/output.rb +11 -0
  128. data/app/concepts/matestack/ui/core/page/{content.js → content/content.js} +8 -2
  129. data/app/concepts/matestack/ui/core/page/content/content.rb +29 -0
  130. data/app/concepts/matestack/ui/core/page/page.haml +3 -9
  131. data/app/concepts/matestack/ui/core/page/page.rb +15 -160
  132. data/app/concepts/matestack/ui/core/param/param.haml +1 -0
  133. data/app/concepts/matestack/ui/core/param/param.rb +10 -0
  134. data/app/concepts/matestack/ui/core/picture/picture.haml +3 -0
  135. data/app/concepts/matestack/ui/core/picture/picture.rb +4 -0
  136. data/app/concepts/matestack/ui/core/plain/plain.rb +1 -1
  137. data/app/concepts/matestack/ui/core/pre/pre.haml +5 -0
  138. data/app/concepts/matestack/ui/core/pre/pre.rb +5 -0
  139. data/app/concepts/matestack/ui/core/progress/progress.rb +1 -1
  140. data/app/concepts/matestack/ui/core/q/q.haml +5 -0
  141. data/app/concepts/matestack/ui/core/q/q.rb +11 -0
  142. data/app/concepts/matestack/ui/core/rp/rp.haml +5 -0
  143. data/app/concepts/matestack/ui/core/rp/rp.rb +5 -0
  144. data/app/concepts/matestack/ui/core/rt/rt.haml +5 -0
  145. data/app/concepts/matestack/ui/core/rt/rt.rb +5 -0
  146. data/app/concepts/matestack/ui/core/ruby/ruby.haml +5 -0
  147. data/app/concepts/matestack/ui/core/ruby/ruby.rb +5 -0
  148. data/app/concepts/matestack/ui/core/s/s.haml +5 -0
  149. data/app/concepts/matestack/ui/core/s/s.rb +6 -0
  150. data/app/concepts/matestack/ui/core/samp/samp.haml +5 -0
  151. data/app/concepts/matestack/ui/core/samp/samp.rb +4 -0
  152. data/app/concepts/matestack/ui/core/slot/slot.rb +2 -2
  153. data/app/concepts/matestack/ui/core/sup/sup.haml +5 -0
  154. data/app/concepts/matestack/ui/core/sup/sup.rb +5 -0
  155. data/app/concepts/matestack/ui/core/template/template.haml +3 -0
  156. data/app/concepts/matestack/ui/core/template/template.rb +4 -0
  157. data/app/concepts/matestack/ui/core/textarea/textarea.haml +2 -0
  158. data/app/concepts/matestack/ui/core/textarea/textarea.rb +10 -0
  159. data/app/concepts/matestack/ui/core/toggle/toggle.haml +2 -0
  160. data/app/concepts/matestack/ui/core/toggle/toggle.js +71 -0
  161. data/app/concepts/matestack/ui/core/toggle/toggle.rb +14 -0
  162. data/app/concepts/matestack/ui/core/transition/transition.js +18 -2
  163. data/app/concepts/matestack/ui/core/transition/transition.rb +2 -1
  164. data/app/concepts/matestack/ui/core/u/u.haml +5 -0
  165. data/app/concepts/matestack/ui/core/u/u.rb +6 -0
  166. data/app/concepts/matestack/ui/core/unescaped/unescaped.rb +7 -0
  167. data/app/concepts/matestack/ui/core/var/var.haml +5 -0
  168. data/app/concepts/matestack/ui/core/var/var.rb +4 -0
  169. data/app/concepts/matestack/ui/core/video/video.haml +3 -1
  170. data/app/concepts/matestack/ui/core/video/video.rb +17 -1
  171. data/app/concepts/matestack/ui/core/view/view.haml +1 -2
  172. data/app/concepts/matestack/ui/core/view/view.rb +27 -2
  173. data/app/concepts/matestack/ui/core/wbr/wbr.haml +1 -0
  174. data/app/concepts/matestack/ui/core/wbr/wbr.rb +4 -0
  175. data/app/concepts/matestack/ui/core/youtube/youtube.rb +1 -1
  176. data/app/helpers/matestack/ui/core/application_helper.rb +89 -17
  177. data/app/javascript/matestack-ui-core/index.js +22 -0
  178. data/app/javascript/matestack-ui-core/styles/index.scss +5 -0
  179. data/app/javascript/packs/matestack-ui-core.js +8 -0
  180. data/app/lib/matestack/ui/component.rb +1 -0
  181. data/app/lib/matestack/ui/core/has_view_context.rb +14 -0
  182. data/app/lib/matestack/ui/core/html_attributes.rb +43 -0
  183. data/app/lib/matestack/ui/core/properties.rb +88 -0
  184. data/app/lib/matestack/ui/core/rendering/default_renderer_class_determiner.rb +33 -0
  185. data/app/lib/matestack/ui/core/rendering/main_renderer.rb +199 -0
  186. data/app/lib/matestack/ui/dynamic_actionview_component.rb +1 -0
  187. data/app/lib/matestack/ui/isolated_component.rb +1 -0
  188. data/app/lib/matestack/ui/static_actionview_component.rb +1 -0
  189. data/app/lib/matestack/ui/vue_js_component.rb +1 -0
  190. data/config/routes.rb +0 -1
  191. data/lib/generators/matestack/app/USAGE +21 -0
  192. data/lib/generators/matestack/app/app_generator.rb +25 -0
  193. data/lib/generators/{matestack_app/templates/matestack_app_controller.erb → matestack/app/templates/app/controllers/%file_name%_controller.rb.tt} +0 -2
  194. data/lib/generators/matestack/app/templates/app/matestack/apps/%file_name%.rb.tt +28 -0
  195. data/lib/generators/matestack/component/USAGE +20 -0
  196. data/lib/generators/matestack/component/component_generator.rb +29 -0
  197. data/lib/generators/{matestack_component/templates/matestack_component.haml.erb → matestack/component/templates/app/matestack/components/%namespace%/%file_name%.haml.tt} +0 -0
  198. data/lib/generators/{matestack_component/templates/matestack_component.js.erb → matestack/component/templates/app/matestack/components/%namespace%/%file_name%.js.tt} +2 -2
  199. data/lib/generators/matestack/component/templates/app/matestack/components/%namespace%/%file_name%.rb.tt +11 -0
  200. data/lib/generators/{matestack_component/templates/matestack_component.scss.erb → matestack/component/templates/app/matestack/components/%namespace%/%file_name%.scss.tt} +0 -0
  201. data/lib/generators/matestack/core/component/USAGE +16 -0
  202. data/lib/generators/matestack/core/component/component_generator.rb +23 -0
  203. data/lib/generators/matestack/core/component/templates/app/concepts/matestack/ui/core/%file_name%/%file_name%.haml.tt +5 -0
  204. data/lib/generators/matestack/core/component/templates/app/concepts/matestack/ui/core/%file_name%/%file_name%.rb.tt +4 -0
  205. data/lib/generators/matestack/core/component/templates/docs/components/%file_name%.md.tt +45 -0
  206. data/lib/generators/matestack/core/component/templates/spec/usage/components/%file_name%_spec.rb +31 -0
  207. data/lib/generators/matestack/page/USAGE +28 -0
  208. data/lib/generators/matestack/page/page_generator.rb +54 -0
  209. data/lib/generators/matestack/page/templates/app/matestack/pages/%app_name%/%namespace%/%file_name%.rb.tt +29 -0
  210. data/lib/matestack/ui/core.rb +5 -2
  211. data/lib/matestack/ui/core/cell.rb +31 -0
  212. data/lib/matestack/ui/core/component/registry.rb +47 -0
  213. data/lib/matestack/ui/core/components.rb +267 -0
  214. data/lib/matestack/ui/core/dsl.rb +6 -0
  215. data/lib/matestack/ui/core/engine.rb +16 -0
  216. data/lib/matestack/ui/core/version.rb +1 -1
  217. data/vendor/assets/javascripts/dist/manifest.json +18 -0
  218. data/vendor/assets/javascripts/dist/manifest.json.br +0 -0
  219. data/vendor/assets/javascripts/dist/manifest.json.gz +0 -0
  220. data/vendor/assets/javascripts/dist/matestack-ui-core.css +3 -0
  221. data/vendor/assets/javascripts/dist/matestack-ui-core.css.map +1 -0
  222. data/vendor/assets/javascripts/dist/matestack-ui-core.js +17060 -0
  223. data/vendor/assets/javascripts/dist/matestack-ui-core.js.map +1 -0
  224. data/vendor/assets/javascripts/dist/matestack-ui-core.min.css +0 -0
  225. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js +3 -0
  226. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.LICENSE.txt +18 -0
  227. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.gz +0 -0
  228. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map +1 -0
  229. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map.gz +0 -0
  230. data/vendor/assets/javascripts/matestack-ui-core.js.erb +2 -0
  231. data/vendor/assets/stylesheets/dist +1 -0
  232. data/vendor/assets/stylesheets/matestack-ui-core.css.erb +2 -0
  233. metadata +188 -89
  234. data/MIT-LICENSE +0 -20
  235. data/app/concepts/matestack/ui/core/absolute/absolute.rb +0 -17
  236. data/app/concepts/matestack/ui/core/component/response.haml +0 -2
  237. data/app/concepts/matestack/ui/core/component/response_dynamic_without_rerender.haml +0 -3
  238. data/app/concepts/matestack/ui/core/form/inline/inline.haml +0 -6
  239. data/app/concepts/matestack/ui/core/form/inline/inline.rb +0 -9
  240. data/app/concepts/matestack/ui/core/form/input/input.haml +0 -27
  241. data/app/concepts/matestack/ui/core/html/html.haml +0 -3
  242. data/app/concepts/matestack/ui/core/html/html.js +0 -10
  243. data/app/concepts/matestack/ui/core/html/html.rb +0 -17
  244. data/app/concepts/matestack/ui/core/isolate/isolate.haml +0 -2
  245. data/app/concepts/matestack/ui/core/isolate/isolate.rb +0 -11
  246. data/app/concepts/matestack/ui/core/page/content.haml +0 -7
  247. data/app/concepts/matestack/ui/core/page/content.rb +0 -5
  248. data/app/concepts/matestack/ui/core/pg/pg.rb +0 -5
  249. data/app/concepts/matestack/ui/core/view/view.js +0 -42
  250. data/app/lib/matestack/ui/core/app_node.rb +0 -53
  251. data/app/lib/matestack/ui/core/component_node.rb +0 -73
  252. data/app/lib/matestack/ui/core/page_node.rb +0 -96
  253. data/app/lib/matestack/ui/core/to_cell.rb +0 -129
  254. data/lib/generators/matestack_app/USAGE +0 -21
  255. data/lib/generators/matestack_app/matestack_app_generator.rb +0 -26
  256. data/lib/generators/matestack_app/templates/matestack_app.erb +0 -26
  257. data/lib/generators/matestack_component/USAGE +0 -20
  258. data/lib/generators/matestack_component/matestack_component_generator.rb +0 -30
  259. data/lib/generators/matestack_component/templates/matestack_component.rb.erb +0 -13
  260. data/lib/generators/matestack_page/USAGE +0 -28
  261. data/lib/generators/matestack_page/matestack_page_generator.rb +0 -41
  262. data/lib/generators/matestack_page/templates/matestack_page.erb +0 -15
  263. data/vendor/assets/javascripts/manifest.json +0 -4
  264. data/vendor/assets/javascripts/matestack-ui-core.js +0 -15309
  265. data/vendor/assets/javascripts/matestack-ui-core.js.map +0 -1
@@ -0,0 +1 @@
1
+ Matestack::Ui::DynamicActionviewComponent = Matestack::Ui::Core::Actionview::Dynamic
@@ -0,0 +1 @@
1
+ Matestack::Ui::IsolatedComponent = Matestack::Ui::Core::Isolated::Isolated
@@ -0,0 +1 @@
1
+ Matestack::Ui::StaticActionviewComponent = Matestack::Ui::Core::Actionview::Static
@@ -0,0 +1 @@
1
+ Matestack::Ui::VueJsComponent = Matestack::Ui::Core::Component::Dynamic
@@ -1,3 +1,2 @@
1
1
  Matestack::Ui::Core::Engine.routes.draw do
2
- get '/div', to: 'docs#div'
3
2
  end
@@ -0,0 +1,21 @@
1
+ Description:
2
+ Stubs out a new matestack app. Pass the app name under_scored.
3
+
4
+ If you want so, pass the option '--all_inclusive' to also create
5
+ a corresponding matestack example_page, a controller, its action
6
+ and the route in 'config/routes.rb'.
7
+
8
+ Example 1:
9
+ `rails generate matestack:app example_app`
10
+
11
+ This will create:
12
+ app/matestack/apps/example_app.rb
13
+
14
+ Example 2:
15
+ `rails generate matestack:app example_app --all_inclusive`
16
+
17
+ This will create:
18
+ app/matestack/apps/example_app.rb
19
+ app/matestack/pages/example_app/example_page.rb
20
+ app/controllers/example_app_controller.rb
21
+ route get 'example_app/example_page', to: 'example_app#example_page'
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Matestack
4
+ module Generators
5
+ class AppGenerator < Rails::Generators::NamedBase
6
+ source_root File.expand_path('templates', __dir__)
7
+
8
+ class_option :all_inclusive, type: :boolean, default: false
9
+
10
+ def create_app
11
+ template 'app/matestack/apps/%file_name%.rb.tt'
12
+
13
+ if options[:all_inclusive] == true
14
+ template 'app/controllers/%file_name%_controller.rb'
15
+
16
+ route %{get '#{file_name}/example_page', to: '#{file_name}\#example_page'}
17
+
18
+ generate "matestack:page example_page --app_name #{file_name} --called_by_app_generator=true"
19
+
20
+ puts "You can visit your new matestack apps' example page under http://localhost:3000/#{file_name}/example_page"
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,7 +1,5 @@
1
1
  class <%= class_name %>Controller < ApplicationController
2
-
3
2
  def example_page
4
3
  responder_for(Pages::<%= class_name %>::ExamplePage)
5
4
  end
6
-
7
5
  end
@@ -0,0 +1,28 @@
1
+ class Apps::<%= class_name %> < Matestack::Ui::App
2
+ # OPTIONAL: Prepare data that gets used on every page of this app
3
+ # def prepare
4
+ # API calls and db queries go here
5
+ # end
6
+
7
+ # MANDATORY: This is where your matestack pages get yielded
8
+ def response
9
+ components {
10
+ heading text: 'Welcome to your <%= class_name %> app'
11
+ page_content
12
+ }
13
+ end
14
+
15
+ # OPTIONAL: Use partials to render stuff like layout components
16
+ # def partial_example
17
+ # partial {
18
+ # # your components go here
19
+ # }
20
+ # end
21
+
22
+ # OPTIONAL: Slots come after partials
23
+ # def slot_example
24
+ # slot {
25
+ # # your components go here
26
+ # }
27
+ # end
28
+ end
@@ -0,0 +1,20 @@
1
+ Description:
2
+ Stubs out a new matestack component. Pass the component name, under_scored.
3
+
4
+ To create a dynamic component, specify it using the --dynamic option.
5
+
6
+ To place this component within a namespace, specify the namespace name under_scored and it
7
+ will get generated into 'app/matestack/components/namespace/*'.
8
+
9
+ Example 1:
10
+ `rails generate matestack:component NAME`
11
+
12
+ This will create:
13
+ app/matestack/components/NAME.rb
14
+
15
+ Example 2:
16
+ `rails generate matestack:component NAME --dynamic --namespace sample_namespace`
17
+
18
+ This will create:
19
+ app/matestack/components/sample_namespace/NAME.rb
20
+ app/matestack/components/sample_namespace/NAME.js
@@ -0,0 +1,29 @@
1
+ module Matestack
2
+ module Generators
3
+ class ComponentGenerator < Rails::Generators::NamedBase
4
+ source_root File.expand_path('templates', __dir__)
5
+
6
+ class_option :dynamic, type: :boolean, default: false
7
+ class_option :scss, type: :boolean, default: false
8
+ class_option :haml, type: :boolean, default: false
9
+ class_option :namespace, type: :string
10
+
11
+ def namespace
12
+ options[:namespace]
13
+ end
14
+
15
+ def dynamic
16
+ options[:dynamic]
17
+ end
18
+
19
+ def create_component
20
+ # Future: Check for matestack-compatible namespacing!
21
+
22
+ template 'app/matestack/components/%namespace%/%file_name%.rb.tt'
23
+ template 'app/matestack/components/%namespace%/%file_name%.js.tt' if options[:dynamic]
24
+ template 'app/matestack/components/%namespace%/%file_name%.scss.tt' if options[:scss]
25
+ template 'app/matestack/components/%namespace%/%file_name%.haml.tt' if options[:haml]
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,8 +1,8 @@
1
1
  // Require your custom component in your application.js before usage
2
2
  // Place it below "//= require matestack-ui-core" using the following line:
3
- //= require <% unless @namespace.nil? %><%= @namespace %>/<% end %><%= file_name %>
3
+ //= require <% unless namespace.nil? %><%= namespace %>/<% end %><%= file_name %>
4
4
 
5
- MatestackUiCore.Vue.component('custom<% unless @namespace.nil? %>-<%= @namespace %><% end %>-<%= file_name %>', {
5
+ MatestackUiCore.Vue.component('custom<% unless namespace.nil? %>-<%= namespace %><% end %>-<%= file_name %>', {
6
6
  mixins: [MatestackUiCore.componentMixin],
7
7
  data: function() {
8
8
  return {
@@ -0,0 +1,11 @@
1
+ class Components::<% unless namespace.nil? %><%= namespace.camelize %>::<% end %><%= class_name %> < Matestack::Ui::<% if dynamic == true %>DynamicComponent<% else %>StaticComponent<% end %>
2
+ def prepare
3
+ # DB queries and API calls go here
4
+ end
5
+
6
+ def response
7
+ components {
8
+ # orchestrate existing matestack components here
9
+ }
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ Description:
2
+ This generates a matestack core component in app/concepts/matestack, a spec file and a docs file.
3
+
4
+ Pass the name of the component under_scored.
5
+
6
+ Example 1:
7
+ `rails generate matestack:core:component NAME`
8
+
9
+ This will create:
10
+ app/concepts/matestack/ui/core/NAME/NAME.haml
11
+ app/concepts/matestack/ui/core/NAME/NAME.rb
12
+ spec/usage/components/NAME_spec.rb
13
+ docs/components/NAME.md
14
+
15
+ This will insert a link to the docs in:
16
+ docs/components/README.md
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Matestack
4
+ module Core
5
+ module Generators
6
+ class ComponentGenerator < Rails::Generators::NamedBase
7
+ source_root File.expand_path('templates', __dir__)
8
+
9
+ def create_core_component
10
+ template 'app/concepts/matestack/ui/core/%file_name%/%file_name%.haml'
11
+ template 'app/concepts/matestack/ui/core/%file_name%/%file_name%.rb'
12
+ template 'spec/usage/components/%file_name%_spec.rb'
13
+ template 'docs/components/%file_name%.md'
14
+
15
+ inject_into_file 'docs/components/README.md', before: "\n## Dynamic Core Components\n" do <<~RUBY
16
+ - [#{file_name.underscore}](/docs/components/#{file_name.underscore}.md)
17
+ RUBY
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,5 @@
1
+ %<%= file_name.underscore %>{@tag_attributes}
2
+ - if options[:text].blank? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,4 @@
1
+ module Matestack::Ui::Core::<%= file_name.camelcase %>
2
+ class <%= file_name.camelcase %> < Matestack::Ui::Core::Component::Static
3
+ end
4
+ end
@@ -0,0 +1,45 @@
1
+ # matestack core component: <%= file_name.camelcase %>
2
+
3
+ Show [specs](/spec/usage/components/<%= file_name.underscore %>_spec.rb)
4
+
5
+ The HTML `<<%= file_name.underscore %>>` tag implemented in ruby.
6
+
7
+ ## Parameters
8
+
9
+ This component can take 2 optional configuration params and either yield content or display what gets passed to the `text` configuration param.
10
+
11
+ #### # id (optional)
12
+ Expects a string with all ids the `<<%= file_name.underscore %>>` should have.
13
+
14
+ #### # class (optional)
15
+ Expects a string with all classes the `<<%= file_name.underscore %>>` should have.
16
+
17
+ ## Example 1: Yield a given block
18
+
19
+ ```ruby
20
+ <%= file_name.underscore %> id: 'foo', class: 'bar' do
21
+ plain '<%= file_name.camelcase %> example 1' # optional content
22
+ end
23
+ ```
24
+
25
+ returns
26
+
27
+ ```html
28
+ <<%= file_name.underscore %> id="foo" class="bar">
29
+ <%= file_name.camelcase %> example 1
30
+ </<%= file_name.underscore %>>
31
+ ```
32
+
33
+ ## Example 2: Render `options[:text]` param
34
+
35
+ ```ruby
36
+ <%= file_name.underscore %> id: 'foo', class: 'bar', text: '<%= file_name.camelcase %> example 2'
37
+ ```
38
+
39
+ returns
40
+
41
+ ```html
42
+ <<%= file_name.underscore %> id="foo" class="bar">
43
+ <%= file_name.camelcase %> example 2
44
+ </<%= file_name.underscore %>>
45
+ ```
@@ -0,0 +1,31 @@
1
+ require_relative '../../support/utils'
2
+ include Utils
3
+
4
+ describe '<%= file_name.camelcase %> component', type: :feature, js: true do
5
+ it 'Renders a simple and enhanced <%= file_name.underscore %> tag on a page' do
6
+ class ExamplePage < Matestack::Ui::Page
7
+ def response
8
+ components {
9
+ # Simple <%= file_name.underscore %>
10
+ <%= file_name.underscore %> text: 'Simple <%= file_name.underscore %> tag'
11
+
12
+ # Enhanced <%= file_name.underscore %>
13
+ <%= file_name.underscore %> id: 'my-id', class: 'my-class' do
14
+ plain 'Enhanced <%= file_name.underscore %> tag'
15
+ end
16
+ }
17
+ end
18
+ end
19
+
20
+ visit '/example'
21
+
22
+ static_output = page.html
23
+
24
+ expected_static_output = <<~HTML
25
+ <<%= file_name.underscore %>>Simple <%= file_name.underscore %> tag</<%= file_name.underscore %>>
26
+ <<%= file_name.underscore %> id="my-id" class="my-class">Enhanced <%= file_name.underscore %> tag</<%= file_name.underscore %>>
27
+ HTML
28
+
29
+ expect(stripped(static_output)).to include(stripped(expected_static_output))
30
+ end
31
+ end
@@ -0,0 +1,28 @@
1
+ Description:
2
+ Stubs out a new matestack page and its route. Pass the page name and --app-name, both under_scored.
3
+
4
+ To place the page within a namespace, specify the namespace name under_scored and it
5
+ will get generated into 'app/matestack/pages/namespace/*'.
6
+
7
+ To create a custom controller#action to use in the created route, specify it as
8
+ under_scored_controller#under_scored_action
9
+
10
+ This generates a matestack page class in app/matestack/pages/ and adds a route to config/routes.rb
11
+
12
+ Example 1:
13
+ `rails generate matestack:page example_page --app_name example_app`
14
+
15
+ This will create:
16
+ app/matestack/pages/example_app/example_page.rb
17
+
18
+ This will add to routes:
19
+ get 'example_app/example_page', to: 'example_app#example_page'
20
+
21
+ Example 2:
22
+ `rails generate matestack:page example_page --app_name example_app --controller_action=static#second`
23
+
24
+ This will create:
25
+ app/matestack/pages/example_app/example_page.rb
26
+
27
+ This will add to routes:
28
+ get 'example_app/example_page', to: 'static#second'
@@ -0,0 +1,54 @@
1
+ module Matestack
2
+ module Generators
3
+ class PageGenerator < Rails::Generators::NamedBase
4
+ source_root File.expand_path('templates', __dir__)
5
+
6
+ class_option :app_name, type: :string, required: true
7
+ class_option :namespace, type: :string
8
+ class_option :controller_action, type: :string
9
+ class_option :called_by_app_generator, type: :boolean, default: false
10
+
11
+ def app_name
12
+ options[:app_name]
13
+ end
14
+
15
+ def namespace
16
+ options[:namespace]
17
+ end
18
+
19
+ def controller_action
20
+ if options[:controller_action].nil?
21
+ "#{app_name}\##{file_name}"
22
+ else
23
+ options[:controller_action]
24
+ end
25
+ end
26
+
27
+ def create_page
28
+ template "app/matestack/pages/%app_name%/%namespace%/%file_name%.rb"
29
+
30
+ unless options[:called_by_app_generator]
31
+ if namespace
32
+ route %{get '#{app_name}/#{namespace}/#{file_name}', to: '#{controller_action}'}
33
+ else
34
+ route %{get '#{app_name}/#{file_name}', to: '#{controller_action}'}
35
+ end
36
+
37
+ puts "Page created! Make sure to add"
38
+ puts ""
39
+ puts "def #{file_name}"
40
+
41
+ if namespace
42
+ puts " responder_for(Pages::#{app_name.camelize}::#{namespace.camelize}::#{file_name.camelize})"
43
+ else
44
+ puts " responder_for(Pages::#{app_name.camelize}::#{file_name.camelize})"
45
+ end
46
+
47
+ puts "end"
48
+ puts ""
49
+ puts "to the desired controller!"
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,29 @@
1
+ class Pages::<% unless namespace.nil? %><%= namespace.camelize %>::<% end %><% unless app_name.nil? %><%= app_name.camelize %>::<% end %><%= class_name %> < Matestack::Ui::Page
2
+ # OPTIONAL: Prepare data for the response method
3
+ # def prepare
4
+ # API calls and db queries go here
5
+ # end
6
+
7
+ # MANDATORY: This is where the matestack magic happens
8
+ def response
9
+ components {
10
+ heading text: 'Welcome to your <%= class_name %> page'
11
+ # your page content goes here, e.g.
12
+ # partial :partial_example
13
+ }
14
+ end
15
+
16
+ # OPTIONAL: Use partials to render stuff like layout components
17
+ # def partial_example
18
+ # partial {
19
+ # # your components go here
20
+ # }
21
+ # end
22
+
23
+ # OPTIONAL: Slots come after partials
24
+ # def slot_example
25
+ # slot {
26
+ # # your components go here
27
+ # }
28
+ # end
29
+ end
@@ -1,11 +1,14 @@
1
- require 'trailblazer'
2
- require 'trailblazer/rails'
3
1
  require 'trailblazer/cell'
4
2
  require 'cell/rails'
5
3
  require 'cell/haml'
6
4
 
5
+ require "matestack/ui/core/cell"
7
6
  require "matestack/ui/core/engine"
8
7
 
8
+ require "matestack/ui/core/dsl"
9
+ require "matestack/ui/core/component/registry"
10
+ require "matestack/ui/core/components"
11
+
9
12
  module Matestack
10
13
  module Ui
11
14
  module Core