matestack-ui-core 0.7.4 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (295) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +8 -0
  3. data/README.md +28 -216
  4. data/app/concepts/matestack/ui/core/abbr/abbr.haml +3 -3
  5. data/app/concepts/matestack/ui/core/abbr/abbr.rb +1 -8
  6. data/app/concepts/matestack/ui/core/action/action.haml +1 -1
  7. data/app/concepts/matestack/ui/core/action/action.js +120 -39
  8. data/app/concepts/matestack/ui/core/action/action.rb +40 -15
  9. data/app/concepts/matestack/ui/core/actionview/dynamic.haml +4 -4
  10. data/app/concepts/matestack/ui/core/address/address.haml +3 -3
  11. data/app/concepts/matestack/ui/core/address/address.rb +1 -1
  12. data/app/concepts/matestack/ui/core/app/app.haml +2 -3
  13. data/app/concepts/matestack/ui/core/app/app.js +16 -5
  14. data/app/concepts/matestack/ui/core/app/app.rb +33 -56
  15. data/app/concepts/matestack/ui/core/app/location.js +2 -3
  16. data/app/concepts/matestack/ui/core/app/store.js +38 -5
  17. data/app/concepts/matestack/ui/core/area/area.haml +1 -1
  18. data/app/concepts/matestack/ui/core/area/area.rb +2 -14
  19. data/app/concepts/matestack/ui/core/article/article.haml +3 -3
  20. data/app/concepts/matestack/ui/core/article/article.rb +1 -1
  21. data/app/concepts/matestack/ui/core/aside/aside.haml +1 -1
  22. data/app/concepts/matestack/ui/core/aside/aside.rb +0 -1
  23. data/app/concepts/matestack/ui/core/async/async.haml +6 -2
  24. data/app/concepts/matestack/ui/core/async/async.js +62 -6
  25. data/app/concepts/matestack/ui/core/async/async.rb +33 -5
  26. data/app/concepts/matestack/ui/core/async/children_wrapper.haml +2 -0
  27. data/app/concepts/matestack/ui/core/b/b.haml +3 -3
  28. data/app/concepts/matestack/ui/core/b/b.rb +1 -1
  29. data/app/concepts/matestack/ui/core/bdi/bdi.haml +3 -3
  30. data/app/concepts/matestack/ui/core/bdi/bdi.rb +1 -0
  31. data/app/concepts/matestack/ui/core/bdo/bdo.haml +3 -3
  32. data/app/concepts/matestack/ui/core/bdo/bdo.rb +2 -7
  33. data/app/concepts/matestack/ui/core/blockquote/blockquote.haml +3 -3
  34. data/app/concepts/matestack/ui/core/blockquote/blockquote.rb +2 -7
  35. data/app/concepts/matestack/ui/core/br/br.haml +4 -4
  36. data/app/concepts/matestack/ui/core/br/br.rb +1 -1
  37. data/app/concepts/matestack/ui/core/button/button.haml +3 -3
  38. data/app/concepts/matestack/ui/core/button/button.rb +3 -7
  39. data/app/concepts/matestack/ui/core/caption/caption.haml +3 -3
  40. data/app/concepts/matestack/ui/core/caption/caption.rb +1 -1
  41. data/app/concepts/matestack/ui/core/cite/cite.haml +3 -3
  42. data/app/concepts/matestack/ui/core/cite/cite.rb +1 -1
  43. data/app/concepts/matestack/ui/core/code/code.haml +3 -3
  44. data/app/concepts/matestack/ui/core/code/code.rb +1 -1
  45. data/app/concepts/matestack/ui/core/collection/content/content.rb +5 -7
  46. data/app/concepts/matestack/ui/core/collection/content/next/next.haml +1 -1
  47. data/app/concepts/matestack/ui/core/collection/content/page/link/link.haml +1 -1
  48. data/app/concepts/matestack/ui/core/collection/content/page/link/link.rb +5 -3
  49. data/app/concepts/matestack/ui/core/collection/content/previous/previous.haml +1 -1
  50. data/app/concepts/matestack/ui/core/collection/filter/filter.rb +4 -5
  51. data/app/concepts/matestack/ui/core/collection/filter/input/input.rb +11 -8
  52. data/app/concepts/matestack/ui/core/collection/filter/reset/reset.haml +1 -1
  53. data/app/concepts/matestack/ui/core/collection/filter/select/select.haml +10 -0
  54. data/app/concepts/matestack/ui/core/collection/filter/select/select.rb +30 -0
  55. data/app/concepts/matestack/ui/core/collection/filter/submit/submit.haml +1 -1
  56. data/app/concepts/matestack/ui/core/collection/helper.rb +14 -6
  57. data/app/concepts/matestack/ui/core/collection/order/order.js +1 -1
  58. data/app/concepts/matestack/ui/core/collection/order/order.rb +4 -5
  59. data/app/concepts/matestack/ui/core/collection/order/toggle/indicator/indicator.rb +9 -5
  60. data/app/concepts/matestack/ui/core/collection/order/toggle/toggle.haml +1 -1
  61. data/app/concepts/matestack/ui/core/collection/order/toggle/toggle.rb +0 -1
  62. data/app/concepts/matestack/ui/core/component/base.rb +424 -0
  63. data/app/concepts/matestack/ui/core/component/children.haml +2 -2
  64. data/app/concepts/matestack/ui/core/component/component.js +1 -55
  65. data/app/concepts/matestack/ui/core/component/dynamic.haml +1 -1
  66. data/app/concepts/matestack/ui/core/component/dynamic.rb +25 -247
  67. data/app/concepts/matestack/ui/core/component/rerender.rb +8 -0
  68. data/app/concepts/matestack/ui/core/component/static.rb +3 -12
  69. data/app/concepts/matestack/ui/core/data/data.haml +3 -3
  70. data/app/concepts/matestack/ui/core/data/data.rb +2 -5
  71. data/app/concepts/matestack/ui/core/{absolute/absolute.haml → datalist/datalist.haml} +1 -1
  72. data/app/concepts/matestack/ui/core/datalist/datalist.rb +4 -0
  73. data/app/concepts/matestack/ui/core/dd/dd.haml +3 -3
  74. data/app/concepts/matestack/ui/core/dd/dd.rb +1 -1
  75. data/app/concepts/matestack/ui/core/del/del.haml +3 -3
  76. data/app/concepts/matestack/ui/core/del/del.rb +2 -0
  77. data/app/concepts/matestack/ui/core/details/details.haml +1 -1
  78. data/app/concepts/matestack/ui/core/details/details.rb +1 -1
  79. data/app/concepts/matestack/ui/core/dfn/dfn.haml +3 -3
  80. data/app/concepts/matestack/ui/core/dfn/dfn.rb +1 -1
  81. data/app/concepts/matestack/ui/core/dialog/dialog.haml +3 -3
  82. data/app/concepts/matestack/ui/core/dialog/dialog.rb +2 -5
  83. data/app/concepts/matestack/ui/core/div/div.haml +1 -1
  84. data/app/concepts/matestack/ui/core/div/div.rb +0 -1
  85. data/app/concepts/matestack/ui/core/dl/dl.haml +3 -3
  86. data/app/concepts/matestack/ui/core/dl/dl.rb +2 -2
  87. data/app/concepts/matestack/ui/core/dt/dt.haml +3 -3
  88. data/app/concepts/matestack/ui/core/dt/dt.rb +1 -1
  89. data/app/concepts/matestack/ui/core/em/em.haml +3 -3
  90. data/app/concepts/matestack/ui/core/em/em.rb +1 -1
  91. data/app/concepts/matestack/ui/core/fieldset/fieldset.haml +4 -4
  92. data/app/concepts/matestack/ui/core/fieldset/fieldset.rb +3 -6
  93. data/app/concepts/matestack/ui/core/figure/figure.haml +1 -1
  94. data/app/concepts/matestack/ui/core/figure/figure.rb +0 -1
  95. data/app/concepts/matestack/ui/core/footer/footer.haml +1 -1
  96. data/app/concepts/matestack/ui/core/footer/footer.rb +0 -1
  97. data/app/concepts/matestack/ui/core/form/checkbox/checkbox.rb +79 -0
  98. data/app/concepts/matestack/ui/core/form/form.haml +1 -1
  99. data/app/concepts/matestack/ui/core/form/form.js +257 -123
  100. data/app/concepts/matestack/ui/core/form/form.rb +52 -19
  101. data/app/concepts/matestack/ui/core/form/has_errors.rb +54 -0
  102. data/app/concepts/matestack/ui/core/form/has_input_html_attributes.rb +13 -0
  103. data/app/concepts/matestack/ui/core/form/input/input.rb +39 -52
  104. data/app/concepts/matestack/ui/core/form/radio/radio.rb +71 -0
  105. data/app/concepts/matestack/ui/core/form/select/select.haml +9 -76
  106. data/app/concepts/matestack/ui/core/form/select/select.rb +44 -49
  107. data/app/concepts/matestack/ui/core/form/submit/submit.haml +1 -1
  108. data/app/concepts/matestack/ui/core/form/submit/submit.rb +5 -2
  109. data/app/concepts/matestack/ui/core/form/textarea/textarea.rb +28 -0
  110. data/app/concepts/matestack/ui/core/form/utils.rb +47 -0
  111. data/app/concepts/matestack/ui/core/header/header.haml +1 -1
  112. data/app/concepts/matestack/ui/core/header/header.rb +0 -1
  113. data/app/concepts/matestack/ui/core/heading/heading.haml +4 -49
  114. data/app/concepts/matestack/ui/core/heading/heading.rb +1 -1
  115. data/app/concepts/matestack/ui/core/hr/hr.haml +1 -1
  116. data/app/concepts/matestack/ui/core/hr/hr.rb +0 -1
  117. data/app/concepts/matestack/ui/core/icon/icon.haml +3 -3
  118. data/app/concepts/matestack/ui/core/icon/icon.rb +1 -1
  119. data/app/concepts/matestack/ui/core/iframe/iframe.haml +3 -3
  120. data/app/concepts/matestack/ui/core/iframe/iframe.rb +3 -10
  121. data/app/concepts/matestack/ui/core/img/img.haml +1 -1
  122. data/app/concepts/matestack/ui/core/img/img.rb +8 -8
  123. data/app/concepts/matestack/ui/core/input/input.haml +1 -3
  124. data/app/concepts/matestack/ui/core/input/input.rb +4 -0
  125. data/app/concepts/matestack/ui/core/ins/ins.haml +3 -3
  126. data/app/concepts/matestack/ui/core/ins/ins.rb +2 -6
  127. data/app/concepts/matestack/ui/core/isolated/children_wrapper.haml +2 -0
  128. data/app/concepts/matestack/ui/core/isolated/isolated.haml +10 -0
  129. data/app/concepts/matestack/ui/core/isolated/isolated.js +108 -0
  130. data/app/concepts/matestack/ui/core/isolated/isolated.rb +59 -0
  131. data/app/concepts/matestack/ui/core/js/core.js +30 -6
  132. data/app/concepts/matestack/ui/core/kbd/kbd.haml +3 -3
  133. data/app/concepts/matestack/ui/core/kbd/kbd.rb +1 -0
  134. data/app/concepts/matestack/ui/core/label/label.haml +3 -3
  135. data/app/concepts/matestack/ui/core/label/label.rb +2 -6
  136. data/app/concepts/matestack/ui/core/legend/legend.haml +3 -3
  137. data/app/concepts/matestack/ui/core/legend/legend.rb +1 -1
  138. data/app/concepts/matestack/ui/core/li/li.haml +3 -3
  139. data/app/concepts/matestack/ui/core/li/li.rb +2 -1
  140. data/app/concepts/matestack/ui/core/link/link.haml +3 -3
  141. data/app/concepts/matestack/ui/core/link/link.rb +10 -14
  142. data/app/concepts/matestack/ui/core/main/main.haml +1 -1
  143. data/app/concepts/matestack/ui/core/main/main.rb +0 -1
  144. data/app/concepts/matestack/ui/core/map/map.haml +1 -1
  145. data/app/concepts/matestack/ui/core/map/map.rb +1 -7
  146. data/app/concepts/matestack/ui/core/mark/mark.haml +3 -3
  147. data/app/concepts/matestack/ui/core/mark/mark.rb +1 -0
  148. data/app/concepts/matestack/ui/core/meter/meter.haml +1 -1
  149. data/app/concepts/matestack/ui/core/meter/meter.rb +1 -10
  150. data/app/concepts/matestack/ui/core/nav/nav.haml +1 -1
  151. data/app/concepts/matestack/ui/core/nav/nav.rb +0 -1
  152. data/app/concepts/matestack/ui/core/noscript/noscript.haml +3 -3
  153. data/app/concepts/matestack/ui/core/noscript/noscript.rb +1 -1
  154. data/app/concepts/matestack/ui/core/object/object.haml +1 -1
  155. data/app/concepts/matestack/ui/core/object/object.rb +1 -11
  156. data/app/concepts/matestack/ui/core/ol/ol.haml +1 -1
  157. data/app/concepts/matestack/ui/core/ol/ol.rb +1 -1
  158. data/app/concepts/matestack/ui/core/onclick/onclick.haml +1 -1
  159. data/app/concepts/matestack/ui/core/onclick/onclick.rb +1 -0
  160. data/app/concepts/matestack/ui/core/optgroup/optgroup.haml +1 -1
  161. data/app/concepts/matestack/ui/core/optgroup/optgroup.rb +1 -6
  162. data/app/concepts/matestack/ui/core/option/option.haml +3 -3
  163. data/app/concepts/matestack/ui/core/option/option.rb +2 -8
  164. data/app/concepts/matestack/ui/core/output/output.haml +3 -3
  165. data/app/concepts/matestack/ui/core/output/output.rb +2 -7
  166. data/app/concepts/matestack/ui/core/page/{content.js → content/content.js} +8 -2
  167. data/app/concepts/matestack/ui/core/page/content/content.rb +28 -0
  168. data/app/concepts/matestack/ui/core/page/page.haml +3 -9
  169. data/app/concepts/matestack/ui/core/page/page.rb +15 -175
  170. data/app/concepts/matestack/ui/core/paragraph/paragraph.haml +3 -3
  171. data/app/concepts/matestack/ui/core/paragraph/paragraph.rb +1 -1
  172. data/app/concepts/matestack/ui/core/param/param.haml +1 -1
  173. data/app/concepts/matestack/ui/core/param/param.rb +1 -6
  174. data/app/concepts/matestack/ui/core/partial/partial.rb +0 -1
  175. data/app/concepts/matestack/ui/core/picture/picture.haml +1 -1
  176. data/app/concepts/matestack/ui/core/pre/pre.haml +3 -3
  177. data/app/concepts/matestack/ui/core/pre/pre.rb +1 -1
  178. data/app/concepts/matestack/ui/core/progress/progress.haml +1 -1
  179. data/app/concepts/matestack/ui/core/progress/progress.rb +1 -10
  180. data/app/concepts/matestack/ui/core/q/q.haml +3 -3
  181. data/app/concepts/matestack/ui/core/q/q.rb +2 -7
  182. data/app/concepts/matestack/ui/core/rp/rp.haml +3 -3
  183. data/app/concepts/matestack/ui/core/rp/rp.rb +1 -1
  184. data/app/concepts/matestack/ui/core/rt/rt.haml +3 -3
  185. data/app/concepts/matestack/ui/core/rt/rt.rb +1 -1
  186. data/app/concepts/matestack/ui/core/ruby/ruby.haml +3 -3
  187. data/app/concepts/matestack/ui/core/ruby/ruby.rb +1 -1
  188. data/app/concepts/matestack/ui/core/s/s.haml +3 -3
  189. data/app/concepts/matestack/ui/core/s/s.rb +1 -1
  190. data/app/concepts/matestack/ui/core/samp/samp.haml +3 -3
  191. data/app/concepts/matestack/ui/core/samp/samp.rb +1 -0
  192. data/app/concepts/matestack/ui/core/section/section.haml +1 -1
  193. data/app/concepts/matestack/ui/core/section/section.rb +0 -1
  194. data/app/concepts/matestack/ui/core/slot/slot.rb +1 -2
  195. data/app/concepts/matestack/ui/core/small/small.haml +3 -3
  196. data/app/concepts/matestack/ui/core/small/small.rb +1 -1
  197. data/app/concepts/matestack/ui/core/span/span.haml +3 -3
  198. data/app/concepts/matestack/ui/core/span/span.rb +1 -1
  199. data/app/concepts/matestack/ui/core/strong/strong.haml +3 -3
  200. data/app/concepts/matestack/ui/core/strong/strong.rb +1 -1
  201. data/app/concepts/matestack/ui/core/sub/sub.haml +3 -3
  202. data/app/concepts/matestack/ui/core/sub/sub.rb +1 -1
  203. data/app/concepts/matestack/ui/core/summary/summary.haml +3 -3
  204. data/app/concepts/matestack/ui/core/summary/summary.rb +1 -1
  205. data/app/concepts/matestack/ui/core/sup/sup.haml +3 -3
  206. data/app/concepts/matestack/ui/core/sup/sup.rb +1 -1
  207. data/app/concepts/matestack/ui/core/table/table.haml +1 -1
  208. data/app/concepts/matestack/ui/core/table/table.rb +0 -1
  209. data/app/concepts/matestack/ui/core/tbody/tbody.haml +1 -1
  210. data/app/concepts/matestack/ui/core/tbody/tbody.rb +0 -1
  211. data/app/concepts/matestack/ui/core/td/td.haml +3 -3
  212. data/app/concepts/matestack/ui/core/td/td.rb +2 -1
  213. data/app/concepts/matestack/ui/core/template/template.haml +1 -1
  214. data/app/concepts/matestack/ui/core/textarea/textarea.haml +5 -0
  215. data/app/concepts/matestack/ui/core/textarea/textarea.rb +10 -0
  216. data/app/concepts/matestack/ui/core/tfoot/tfoot.haml +1 -1
  217. data/app/concepts/matestack/ui/core/tfoot/tfoot.rb +0 -1
  218. data/app/concepts/matestack/ui/core/th/th.haml +3 -3
  219. data/app/concepts/matestack/ui/core/th/th.rb +2 -1
  220. data/app/concepts/matestack/ui/core/thead/thead.haml +1 -1
  221. data/app/concepts/matestack/ui/core/thead/thead.rb +0 -1
  222. data/app/concepts/matestack/ui/core/time/time.haml +1 -1
  223. data/app/concepts/matestack/ui/core/time/time.rb +1 -7
  224. data/app/concepts/matestack/ui/core/toggle/toggle.haml +2 -0
  225. data/app/concepts/matestack/ui/core/toggle/toggle.js +71 -0
  226. data/app/concepts/matestack/ui/core/toggle/toggle.rb +13 -0
  227. data/app/concepts/matestack/ui/core/tr/tr.haml +1 -1
  228. data/app/concepts/matestack/ui/core/tr/tr.rb +0 -1
  229. data/app/concepts/matestack/ui/core/transition/transition.haml +3 -3
  230. data/app/concepts/matestack/ui/core/transition/transition.js +17 -1
  231. data/app/concepts/matestack/ui/core/transition/transition.rb +15 -8
  232. data/app/concepts/matestack/ui/core/u/u.haml +3 -3
  233. data/app/concepts/matestack/ui/core/u/u.rb +1 -1
  234. data/app/concepts/matestack/ui/core/ul/ul.haml +1 -1
  235. data/app/concepts/matestack/ui/core/ul/ul.rb +0 -1
  236. data/app/concepts/matestack/ui/core/unescaped/unescaped.rb +3 -1
  237. data/app/concepts/matestack/ui/core/var/var.haml +3 -3
  238. data/app/concepts/matestack/ui/core/var/var.rb +1 -0
  239. data/app/concepts/matestack/ui/core/video/video.haml +2 -2
  240. data/app/concepts/matestack/ui/core/video/video.rb +4 -14
  241. data/app/concepts/matestack/ui/core/view/view.haml +1 -0
  242. data/app/concepts/matestack/ui/core/view/view.rb +30 -0
  243. data/app/concepts/matestack/ui/core/wbr/wbr.haml +5 -1
  244. data/app/concepts/matestack/ui/core/wbr/wbr.rb +1 -0
  245. data/app/concepts/matestack/ui/core/youtube/youtube.haml +1 -1
  246. data/app/concepts/matestack/ui/core/youtube/youtube.rb +18 -16
  247. data/app/helpers/matestack/ui/core/application_helper.rb +90 -19
  248. data/app/lib/matestack/ui/component.rb +1 -0
  249. data/app/lib/matestack/ui/core/has_view_context.rb +8 -4
  250. data/app/lib/matestack/ui/core/html_attributes.rb +43 -0
  251. data/app/lib/matestack/ui/core/properties.rb +161 -0
  252. data/app/lib/matestack/ui/core/rendering/default_renderer_class_determiner.rb +33 -0
  253. data/app/lib/matestack/ui/core/rendering/main_renderer.rb +200 -0
  254. data/app/lib/matestack/ui/isolated_component.rb +1 -0
  255. data/app/lib/matestack/ui/vue_js_component.rb +1 -0
  256. data/lib/matestack/ui/core.rb +4 -2
  257. data/lib/matestack/ui/core/cell.rb +0 -2
  258. data/lib/matestack/ui/core/component/registry.rb +47 -0
  259. data/lib/matestack/ui/core/components.rb +268 -0
  260. data/lib/matestack/ui/core/dsl.rb +6 -0
  261. data/lib/matestack/ui/core/engine.rb +16 -0
  262. data/lib/matestack/ui/core/version.rb +1 -1
  263. data/vendor/assets/javascripts/dist/matestack-ui-core.js +852 -311
  264. data/vendor/assets/javascripts/dist/matestack-ui-core.js.map +1 -1
  265. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js +1 -1
  266. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.br +0 -0
  267. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.gz +0 -0
  268. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map +1 -1
  269. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map.br +0 -0
  270. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map.gz +0 -0
  271. metadata +49 -65
  272. data/MIT-LICENSE +0 -20
  273. data/app/concepts/matestack/ui/core/absolute/absolute.rb +0 -17
  274. data/app/concepts/matestack/ui/core/collection/filter/input/input.haml +0 -2
  275. data/app/concepts/matestack/ui/core/component/response.haml +0 -2
  276. data/app/concepts/matestack/ui/core/component/response_dynamic.haml +0 -7
  277. data/app/concepts/matestack/ui/core/component/response_dynamic_without_rerender.haml +0 -3
  278. data/app/concepts/matestack/ui/core/component/static.haml +0 -1
  279. data/app/concepts/matestack/ui/core/form/inline/inline.haml +0 -6
  280. data/app/concepts/matestack/ui/core/form/inline/inline.rb +0 -9
  281. data/app/concepts/matestack/ui/core/form/input/input.haml +0 -27
  282. data/app/concepts/matestack/ui/core/html/html.haml +0 -3
  283. data/app/concepts/matestack/ui/core/html/html.js +0 -10
  284. data/app/concepts/matestack/ui/core/html/html.rb +0 -17
  285. data/app/concepts/matestack/ui/core/isolate/isolate.haml +0 -2
  286. data/app/concepts/matestack/ui/core/isolate/isolate.rb +0 -11
  287. data/app/concepts/matestack/ui/core/page/content.haml +0 -7
  288. data/app/concepts/matestack/ui/core/page/content.rb +0 -5
  289. data/app/concepts/matestack/ui/core/pg/pg.haml +0 -5
  290. data/app/concepts/matestack/ui/core/pg/pg.rb +0 -5
  291. data/app/lib/matestack/ui/core/app_node.rb +0 -53
  292. data/app/lib/matestack/ui/core/component_node.rb +0 -87
  293. data/app/lib/matestack/ui/core/page_node.rb +0 -100
  294. data/app/lib/matestack/ui/core/render.rb +0 -89
  295. data/app/lib/matestack/ui/core/to_cell.rb +0 -129
@@ -1,2 +0,0 @@
1
- - @children_cells.each do |key, cell|
2
- = cell.call(:show)
@@ -1,11 +0,0 @@
1
- module Matestack::Ui::Core::Isolate
2
- class Isolate < Matestack::Ui::Core::Component::Static
3
-
4
- def setup
5
- @component_key = @component_key + "__" + @argument.to_s
6
- @component_key = @component_key + "(" + @cached_params.to_json + ")" if @cached_params.present?
7
- @component_config[:component_key] = @component_key
8
- end
9
-
10
- end
11
- end
@@ -1,7 +0,0 @@
1
- %div{"class": "matestack_page"}
2
- %div{"v-if": "asyncPageTemplate == null"}
3
- %div{"class": "matestack_page_content"}
4
- - @children_cells.each do |key, cell|
5
- = cell.call(:show)
6
- %div{"v-if": "asyncPageTemplate != null"}
7
- %v-runtime-template{":template":"asyncPageTemplate"}
@@ -1,5 +0,0 @@
1
- module Matestack::Ui::Core::Page
2
- class Content < Matestack::Ui::Core::Component::Dynamic
3
-
4
- end
5
- end
@@ -1,5 +0,0 @@
1
- %p{@tag_attributes}
2
- - if options[:text].nil? && block_given?
3
- = yield
4
- - else
5
- = options[:text]
@@ -1,5 +0,0 @@
1
- module Matestack::Ui::Core::Pg
2
- class Pg < Matestack::Ui::Core::Component::Static
3
-
4
- end
5
- end
@@ -1,53 +0,0 @@
1
- module Matestack::Ui::Core
2
- class AppNode
3
-
4
- def self.build(app_instance, &block)
5
- node = AppNode.new(app_instance)
6
- node.instance_eval(&block)
7
- node.hash
8
- end
9
-
10
- attr_reader :hash
11
-
12
- def initialize(app_instance)
13
- @hash = {}
14
- @node_start_id = 0
15
- @app_instance = app_instance
16
- app_instance.instance_variables.each do |app_instance_var_key|
17
- self.instance_variable_set(app_instance_var_key, app_instance.instance_variable_get(app_instance_var_key))
18
- end
19
- end
20
-
21
- def method_missing meth, *args, &block
22
- begin
23
- @app_instance.send(meth, *args, &block)
24
- rescue
25
- node_id = @node_start_id + 1
26
- @node_start_id = node_id
27
- current_node = "#{meth}_#{@node_start_id}"
28
- @hash[current_node] = {}
29
- @hash[current_node]["component_name"] = meth.to_s
30
- @hash[current_node]["config"] = {}
31
- @hash[current_node]["argument"] = nil
32
-
33
- if meth == :page_content
34
- @hash[current_node]["components"] = @app_instance.send(:page_nodes)
35
- elsif meth == :partial
36
- @hash[current_node]["components"] = @app_instance.send(args.first, *args.drop(1))
37
- else
38
- if args.first.is_a?(Hash)
39
- @hash[current_node]["config"] = args.first
40
- else
41
- @hash[current_node]["argument"] = args.first
42
- end
43
-
44
- if block_given?
45
- @hash[current_node]["components"] = AppNode.build(@app_instance, &block)
46
- end
47
- end
48
- end
49
-
50
- end
51
-
52
- end
53
- end
@@ -1,87 +0,0 @@
1
- module Matestack::Ui::Core
2
- class ComponentNode
3
-
4
- def self.build(component_instance, included_config, &block)
5
- node = ComponentNode.new(component_instance, included_config)
6
- node.instance_eval(&block)
7
- node.hash
8
- end
9
-
10
- attr_reader :hash
11
-
12
- def initialize(component_instance, included_config)
13
- @hash = {}
14
- @node_start_id = 0
15
- @component_instance = component_instance
16
- component_instance.instance_variables.each do |component_instance_var_key|
17
- self.instance_variable_set(component_instance_var_key, component_instance.instance_variable_get(component_instance_var_key))
18
- end
19
- @included_config = included_config
20
- end
21
-
22
- def method_missing meth, *args, &block
23
- begin
24
- if (result = @component_instance.send(meth, *args, &block)).kind_of? ActiveSupport::SafeBuffer
25
- plain result
26
- else
27
- result
28
- end
29
- rescue
30
- node_id = @node_start_id + 1
31
- @node_start_id = node_id
32
- current_node = "#{meth}_#{@node_start_id}"
33
- @hash[current_node] = {}
34
- @hash[current_node]["component_name"] = meth.to_s
35
- @hash[current_node]["config"] = {}
36
- @hash[current_node]["argument"] = nil
37
- @hash[current_node]["included_config"] = @included_config
38
-
39
- if args.second == :include
40
- included = args.first
41
- else
42
- unless @included_config.nil?
43
- included = @included_config
44
- else
45
- included = nil
46
- end
47
- end
48
-
49
- if meth == :isolate
50
- raise("isolate > only works on page level currently. component support is comming soon!")
51
- end
52
-
53
- if meth == :partial
54
- @hash[current_node]["components"] = @component_instance.send(args.first, *args.drop(1))
55
- elsif meth == :yield_components
56
- @hash[current_node]["component_name"] = "partial"
57
- @hash[current_node]["components"] = @component_instance.send(:get_children)
58
- else
59
- if args.first.is_a?(Hash)
60
- @hash[current_node]["config"] = args.first unless meth == :slot
61
- else
62
- @hash[current_node]["argument"] = args.first
63
- end
64
-
65
- # if args.second == :include
66
- # included = args.first
67
- # else
68
- # unless @included_config.nil?
69
- # included = @included_config
70
- # else
71
- # included = nil
72
- # end
73
- # end
74
-
75
- if block_given?
76
- @hash[current_node]["components"] = ComponentNode.build(@component_instance, included, &block)
77
- elsif meth == :slot
78
- # @hash[current_node]["components"] = ComponentNode.build(@component_instance, included, &args.first)
79
- @hash[current_node]["components"] = args.first
80
- end
81
- end
82
- end
83
-
84
- end
85
-
86
- end
87
- end
@@ -1,100 +0,0 @@
1
- module Matestack::Ui::Core
2
- class PageNode
3
-
4
- def self.build(page_instance, included_config, url_params, &block)
5
- node = PageNode.new(page_instance, included_config, url_params)
6
- node.instance_eval(&block)
7
- node.hash
8
- end
9
-
10
- attr_reader :hash
11
-
12
- def initialize(page_instance, included_config, url_params)
13
- @hash = {}
14
- @node_start_id = 0
15
- @included_config = included_config
16
- @url_params = url_params
17
- @page_instance = page_instance
18
- page_instance.instance_variables.each do |page_instance_var_key|
19
- self.instance_variable_set(page_instance_var_key, page_instance.instance_variable_get(page_instance_var_key))
20
- end
21
- end
22
-
23
- def method_missing meth, *args, &block
24
- begin
25
- if (result = @page_instance.send(meth, *args, &block)).kind_of? ActiveSupport::SafeBuffer
26
- plain result
27
- else
28
- result
29
- end
30
- rescue
31
- node_id = @node_start_id + 1
32
- @node_start_id = node_id
33
- current_node = "#{meth}_#{@node_start_id}"
34
- @hash[current_node] = {}
35
- @hash[current_node]["component_name"] = meth.to_s
36
- @hash[current_node]["config"] = {}
37
- @hash[current_node]["included_config"] = @included_config
38
- @hash[current_node]["argument"] = nil
39
-
40
- if args.second == :include
41
- included = args.first
42
- else
43
- unless @included_config.nil?
44
- included = @included_config
45
- else
46
- included = nil
47
- end
48
- end
49
-
50
- if meth == :isolate
51
- if args.second.present?
52
- if args.second.is_a? Hash
53
- if args.second[:cached_params].nil?
54
- raise "isolate > you need to pass params within a hash called 'cached_params'"
55
- else
56
- isolated_block = @page_instance.send(args.first, args.second[:cached_params])
57
- end
58
- else
59
- raise "isolate > you need to pass params within a hash called 'cached_params'"
60
- end
61
- else
62
- isolated_block = @page_instance.send(args.first)
63
- end
64
- @hash[current_node]["components"] = PageNode.build(
65
- @page_instance, nil, @url_params, &isolated_block
66
- )
67
- @hash[current_node]["argument"] = args.first
68
- @hash[current_node]["cached_params"] = args.second[:cached_params] if args.second.present?
69
- end
70
-
71
- if meth == :partial
72
- partial_block = @page_instance.send(args.first, *args.drop(1))
73
- @hash[current_node]["components"] = PageNode.build(
74
- @page_instance, included, @url_params, &partial_block
75
- )
76
- else
77
- if args.first.is_a?(Hash)
78
- @hash[current_node]["config"] = args.first
79
- else
80
- @hash[current_node]["argument"] = args.first
81
- end
82
-
83
- if block_given?
84
- if args.first.is_a?(Hash) && args.first[:defer].present?
85
- if @url_params.present? && @url_params[:component_key].present?
86
- @hash[current_node]["components"] = PageNode.build(@page_instance, included, @url_params, &block)
87
- else
88
- return
89
- end
90
- else
91
- @hash[current_node]["components"] = PageNode.build(@page_instance, included, @url_params, &block)
92
- end
93
- end
94
- end
95
- end
96
-
97
- end
98
-
99
- end
100
- end
@@ -1,89 +0,0 @@
1
- module Matestack::Ui::Core::Render
2
-
3
- # Matestack allows you to use `render` to render matestack pages.
4
- #
5
- # render Pages::Member::Bookings::Index
6
- # render matestack: Pages::Member::Bookings::Index
7
- # render matestack: 'member/bookings/index'
8
- #
9
- def render(*args)
10
- if (matestack_class = args.first).is_a?(Class) && (matestack_class < Matestack::Ui::Page)
11
- responder_for matestack_class
12
- elsif (options = args.first).kind_of?(Hash) && (matestack_arg = options[:matestack]).present?
13
- if (matestack_path = matestack_arg).kind_of? String
14
- matestack_path = "pages/#{matestack_path}" unless matestack_path.start_with?("pages/") or matestack_path.start_with?("components/")
15
- matestack_class = matestack_path.split("/").collect { |str| str.camelcase }.join("::").constantize
16
- elsif matestack_arg.is_a?(Class) && (matestack_arg < Matestack::Ui::Page)
17
- matestack_class = matestack_arg
18
- end
19
- responder_for matestack_class
20
- else
21
- super
22
- end
23
- end
24
-
25
- # Matestack allows implicit rendering. The matestack page class name is inferred from the
26
- # controller path and action name.
27
- #
28
- # class Clients::BookingsController < ApplicationController
29
- # def index
30
- # @bookings = Booking.all
31
- # # looks for Pages::Clients::Bookings::Index
32
- # end
33
- #
34
- # def show
35
- # @booking = Booking.find params[:id]
36
- # # looks for Pages::Clients::Bookings::Show
37
- # end
38
- # end
39
- #
40
- # In this example, `clients/bookings#index` will render `Pages::Clients::Bookings::Index`,
41
- # `clients/bookings#show` will render `Pages::Clients::Bookings::Show`.
42
- #
43
- # Custom action names translate also into page names.
44
- #
45
- # class Clients::BookingsController < ApplicationController
46
- # def step1
47
- # # looks for Pages::Clients::Bookings::Step1
48
- # end
49
- # end
50
- #
51
- # In this example, the `clients/bookings#step1` action will render
52
- # `Pages::Clients::Bookings::Step1`.
53
- #
54
- def default_render(*args)
55
- if matestack_page_class = default_render_matestack_page_class
56
- render matestack: matestack_page_class
57
- else
58
- super
59
- end
60
- end
61
-
62
- def possible_default_render_matestack_page_paths
63
- paths = []
64
- paths << "pages/#{controller_path}/#{action_name}"
65
- paths << "pages/#{controller_path}" if action_name == "index"
66
- paths << "pages/#{controller_path.singularize}" if action_name == "show"
67
- paths << "#{controller_path}/#{action_name}_page"
68
- paths << "#{controller_path}_page" if action_name == "index"
69
- paths << "#{controller_path.singularize}_page" if action_name == "show"
70
- paths
71
- end
72
-
73
- def possible_default_render_matestack_page_class_names
74
- possible_default_render_matestack_page_paths.collect { |page_path|
75
- page_path.split("/").collect { |str| str.camelcase }.join("::")
76
- }
77
- end
78
-
79
- def default_render_matestack_page_class
80
- possible_default_render_matestack_page_class_names.each do |class_name|
81
- begin
82
- return matestack_class = class_name.constantize
83
- rescue NameError
84
- end
85
- end
86
- return nil
87
- end
88
-
89
- end
@@ -1,129 +0,0 @@
1
- module Matestack::Ui::Core::ToCell
2
-
3
- def to_cell(key, component_name, config, argument, children, included_config, cached_params=nil)
4
- # p cached_params
5
- request_uri = context[:request].env["REQUEST_URI"]
6
- query_string = context[:request].env["QUERY_STRING"]
7
-
8
- config.merge!(component_key: key)
9
- config.merge!(children: children)
10
- config.merge!(origin_url: request_uri.gsub("?" + query_string, ""))
11
- config.merge!(url_params: context[:params])
12
- config.merge!(included_config: included_config)
13
- config.merge!(cached_params: cached_params)
14
-
15
- if component_name.start_with?("custom")
16
- return resolve_custom_component(component_name, argument, config)
17
- else
18
- return resolve_core_component(component_name, argument, config)
19
- end
20
-
21
- end
22
-
23
- private
24
-
25
- def resolve_custom_component(component_name, argument, config)
26
- name = component_name.gsub("_", "/")
27
-
28
- path = name.split("/")[1..-1]
29
- path_camelized = path.map { |x| x.camelize }
30
-
31
- if path_camelized.count == 1
32
- class_name = "#{path_camelized[0]}"
33
- rewritten_path = [path[0]]
34
- else
35
- class_name = path_camelized.join("::")
36
- rewritten_path = path
37
- end
38
-
39
- custom_component_class_name = "Components::" + class_name
40
-
41
- begin
42
- begin
43
- component_class = Object.const_get(custom_component_class_name, false)
44
- rescue => e
45
- raise "#{e.message.nil? ? '': 'Got Error: '+e.message}. \
46
- Make sure to define your custom component class correctly \
47
- in \"matestack/components/#{rewritten_path.join('/')}.rb\""
48
- end
49
- if component_class.is_a?(Class)
50
- return cell(component_class, argument, config)
51
- else
52
- raise "Given component #{component_class} is not a class. \
53
- You might forget to add the component name to your component call"
54
- end
55
- rescue => e
56
- raise "#{component_name} > #{e.message}"
57
- end
58
-
59
- end
60
-
61
- def resolve_core_component(component_name, argument, config)
62
- name = component_name.gsub("_", "/")
63
-
64
- unless name.include?("/")
65
- name = "#{name}/#{name}"
66
- end
67
-
68
- path = name.split("/")
69
- path_camelized = path.map { |x| x.camelize }
70
- class_name = path_camelized.join("::")
71
-
72
- core_component_class_name = "Matestack::Ui::Core::" + class_name
73
- begin
74
- begin
75
- component_class = Object.const_get(core_component_class_name, false)
76
- unless component_class.is_a?(Class)
77
- core_component_class_name = core_component_class_name + "::#{name.split("/").last.camelize}"
78
- component_class = Object.const_get(core_component_class_name, false)
79
- end
80
- rescue => e
81
- begin
82
- return resolve_namespaced_component(component_name, argument, config)
83
- rescue => e
84
- raise "#{e.message.nil? ? '': 'Got Error: '+e.message}. \
85
- Component '#{component_name}' not found. Looking for Class '#{core_component_class_name}'. \
86
- Make sure to prefix a custom component with 'custom_'"
87
- end
88
- end
89
- return cell(component_class, argument, config)
90
- rescue => e
91
- raise "#{component_name} > #{e.message}"
92
- end
93
-
94
- end
95
-
96
- def resolve_namespaced_component(component_name, argument, config)
97
- name = component_name.gsub("_", "/")
98
-
99
- path = name.split("/")[1..-1]
100
- namespace = name.split("/")[0].camelize
101
- path_camelized = path.map { |x| x.camelize }
102
-
103
- if path_camelized.count == 1
104
- class_name = "#{path_camelized[0]}::#{path_camelized[0]}"
105
- rewritten_path = [path[0], path[0]]
106
- else
107
- class_name = path_camelized[0..-1].join("::")
108
- rewritten_path = path[0..-1]
109
- end
110
-
111
- namespaced_class_name = "Matestack::Ui::" + namespace + "::" + class_name
112
-
113
- begin
114
- begin
115
- component_class = Object.const_get(namespaced_class_name, false)
116
- unless component_class.is_a?(Class)
117
- namespaced_class_name = namespaced_class_name + "::#{name.split("/").last.camelize}"
118
- component_class = Object.const_get(namespaced_class_name, false)
119
- end
120
- rescue => e
121
- raise "#{e.message}"
122
- end
123
- return cell(component_class, argument, config)
124
- rescue => e
125
- raise "#{e.message}"
126
- end
127
- end
128
-
129
- end