matestack-ui-core 0.7.6 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (298) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +8 -0
  3. data/README.md +695 -121
  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.rb +23 -19
  8. data/app/concepts/matestack/ui/core/actionview/dynamic.haml +4 -4
  9. data/app/concepts/matestack/ui/core/address/address.haml +3 -3
  10. data/app/concepts/matestack/ui/core/address/address.rb +1 -1
  11. data/app/concepts/matestack/ui/core/app/app.haml +2 -3
  12. data/app/concepts/matestack/ui/core/app/app.js +4 -1
  13. data/app/concepts/matestack/ui/core/app/app.rb +32 -56
  14. data/app/concepts/matestack/ui/core/app/store.js +27 -1
  15. data/app/concepts/matestack/ui/core/area/area.haml +1 -1
  16. data/app/concepts/matestack/ui/core/area/area.rb +2 -14
  17. data/app/concepts/matestack/ui/core/article/article.haml +3 -3
  18. data/app/concepts/matestack/ui/core/article/article.rb +1 -1
  19. data/app/concepts/matestack/ui/core/aside/aside.haml +1 -1
  20. data/app/concepts/matestack/ui/core/aside/aside.rb +0 -1
  21. data/app/concepts/matestack/ui/core/async/async.haml +6 -2
  22. data/app/concepts/matestack/ui/core/async/async.js +43 -31
  23. data/app/concepts/matestack/ui/core/async/async.rb +29 -4
  24. data/app/concepts/matestack/ui/core/async/children_wrapper.haml +2 -0
  25. data/app/concepts/matestack/ui/core/b/b.haml +3 -3
  26. data/app/concepts/matestack/ui/core/b/b.rb +1 -1
  27. data/app/concepts/matestack/ui/core/bdi/bdi.haml +3 -3
  28. data/app/concepts/matestack/ui/core/bdi/bdi.rb +1 -0
  29. data/app/concepts/matestack/ui/core/bdo/bdo.haml +3 -3
  30. data/app/concepts/matestack/ui/core/bdo/bdo.rb +2 -7
  31. data/app/concepts/matestack/ui/core/blockquote/blockquote.haml +3 -3
  32. data/app/concepts/matestack/ui/core/blockquote/blockquote.rb +2 -7
  33. data/app/concepts/matestack/ui/core/br/br.haml +4 -4
  34. data/app/concepts/matestack/ui/core/br/br.rb +1 -1
  35. data/app/concepts/matestack/ui/core/button/button.haml +3 -3
  36. data/app/concepts/matestack/ui/core/button/button.rb +3 -7
  37. data/app/concepts/matestack/ui/core/cable/cable.haml +4 -0
  38. data/app/concepts/matestack/ui/core/cable/cable.js +100 -0
  39. data/app/concepts/matestack/ui/core/cable/cable.rb +28 -0
  40. data/app/concepts/matestack/ui/core/cable/children_wrapper.haml +2 -0
  41. data/app/concepts/matestack/ui/core/caption/caption.haml +3 -3
  42. data/app/concepts/matestack/ui/core/caption/caption.rb +1 -1
  43. data/app/concepts/matestack/ui/core/cite/cite.haml +3 -3
  44. data/app/concepts/matestack/ui/core/cite/cite.rb +1 -1
  45. data/app/concepts/matestack/ui/core/code/code.haml +3 -3
  46. data/app/concepts/matestack/ui/core/code/code.rb +1 -1
  47. data/app/concepts/matestack/ui/core/collection/content/content.js +2 -2
  48. data/app/concepts/matestack/ui/core/collection/content/content.rb +4 -6
  49. data/app/concepts/matestack/ui/core/collection/content/next/next.haml +1 -1
  50. data/app/concepts/matestack/ui/core/collection/content/page/link/link.haml +1 -1
  51. data/app/concepts/matestack/ui/core/collection/content/page/link/link.rb +5 -3
  52. data/app/concepts/matestack/ui/core/collection/content/previous/previous.haml +1 -1
  53. data/app/concepts/matestack/ui/core/collection/filter/filter.rb +4 -5
  54. data/app/concepts/matestack/ui/core/collection/filter/input/input.rb +11 -8
  55. data/app/concepts/matestack/ui/core/collection/filter/reset/reset.haml +1 -1
  56. data/app/concepts/matestack/ui/core/collection/filter/select/select.haml +10 -0
  57. data/app/concepts/matestack/ui/core/collection/filter/select/select.rb +30 -0
  58. data/app/concepts/matestack/ui/core/collection/filter/submit/submit.haml +1 -1
  59. data/app/concepts/matestack/ui/core/collection/helper.rb +14 -6
  60. data/app/concepts/matestack/ui/core/collection/order/order.js +1 -1
  61. data/app/concepts/matestack/ui/core/collection/order/order.rb +4 -5
  62. data/app/concepts/matestack/ui/core/collection/order/toggle/indicator/indicator.rb +9 -5
  63. data/app/concepts/matestack/ui/core/collection/order/toggle/toggle.haml +1 -1
  64. data/app/concepts/matestack/ui/core/collection/order/toggle/toggle.rb +0 -1
  65. data/app/concepts/matestack/ui/core/component/base.rb +430 -0
  66. data/app/concepts/matestack/ui/core/component/children.haml +2 -2
  67. data/app/concepts/matestack/ui/core/component/component.js +9 -46
  68. data/app/concepts/matestack/ui/core/component/dynamic.haml +1 -1
  69. data/app/concepts/matestack/ui/core/component/dynamic.rb +25 -247
  70. data/app/concepts/matestack/ui/core/component/static.rb +3 -12
  71. data/app/concepts/matestack/ui/core/data/data.haml +3 -3
  72. data/app/concepts/matestack/ui/core/data/data.rb +2 -5
  73. data/app/concepts/matestack/ui/core/datalist/datalist.haml +2 -2
  74. data/app/concepts/matestack/ui/core/datalist/datalist.rb +1 -2
  75. data/app/concepts/matestack/ui/core/dd/dd.haml +3 -3
  76. data/app/concepts/matestack/ui/core/dd/dd.rb +1 -1
  77. data/app/concepts/matestack/ui/core/del/del.haml +3 -3
  78. data/app/concepts/matestack/ui/core/del/del.rb +2 -0
  79. data/app/concepts/matestack/ui/core/details/details.haml +1 -1
  80. data/app/concepts/matestack/ui/core/details/details.rb +1 -1
  81. data/app/concepts/matestack/ui/core/dfn/dfn.haml +3 -3
  82. data/app/concepts/matestack/ui/core/dfn/dfn.rb +1 -1
  83. data/app/concepts/matestack/ui/core/dialog/dialog.haml +3 -3
  84. data/app/concepts/matestack/ui/core/dialog/dialog.rb +2 -5
  85. data/app/concepts/matestack/ui/core/div/div.haml +1 -1
  86. data/app/concepts/matestack/ui/core/div/div.rb +0 -1
  87. data/app/concepts/matestack/ui/core/dl/dl.haml +3 -3
  88. data/app/concepts/matestack/ui/core/dl/dl.rb +2 -2
  89. data/app/concepts/matestack/ui/core/dt/dt.haml +3 -3
  90. data/app/concepts/matestack/ui/core/dt/dt.rb +1 -1
  91. data/app/concepts/matestack/ui/core/em/em.haml +3 -3
  92. data/app/concepts/matestack/ui/core/em/em.rb +1 -1
  93. data/app/concepts/matestack/ui/core/fieldset/fieldset.haml +4 -4
  94. data/app/concepts/matestack/ui/core/fieldset/fieldset.rb +3 -6
  95. data/app/concepts/matestack/ui/core/figure/figure.haml +1 -1
  96. data/app/concepts/matestack/ui/core/figure/figure.rb +0 -1
  97. data/app/concepts/matestack/ui/core/footer/footer.haml +1 -1
  98. data/app/concepts/matestack/ui/core/footer/footer.rb +0 -1
  99. data/app/concepts/matestack/ui/core/form/checkbox/checkbox.rb +79 -0
  100. data/app/concepts/matestack/ui/core/form/form.haml +1 -1
  101. data/app/concepts/matestack/ui/core/form/form.js +25 -20
  102. data/app/concepts/matestack/ui/core/form/form.rb +35 -24
  103. data/app/concepts/matestack/ui/core/form/has_errors.rb +54 -0
  104. data/app/concepts/matestack/ui/core/form/has_input_html_attributes.rb +13 -0
  105. data/app/concepts/matestack/ui/core/form/input/input.rb +32 -52
  106. data/app/concepts/matestack/ui/core/form/radio/radio.rb +71 -0
  107. data/app/concepts/matestack/ui/core/form/select/select.haml +9 -80
  108. data/app/concepts/matestack/ui/core/form/select/select.rb +41 -56
  109. data/app/concepts/matestack/ui/core/form/submit/submit.haml +1 -1
  110. data/app/concepts/matestack/ui/core/form/submit/submit.rb +5 -2
  111. data/app/concepts/matestack/ui/core/form/textarea/textarea.rb +28 -0
  112. data/app/concepts/matestack/ui/core/form/utils.rb +47 -0
  113. data/app/concepts/matestack/ui/core/header/header.haml +1 -1
  114. data/app/concepts/matestack/ui/core/header/header.rb +0 -1
  115. data/app/concepts/matestack/ui/core/heading/heading.haml +4 -49
  116. data/app/concepts/matestack/ui/core/heading/heading.rb +1 -1
  117. data/app/concepts/matestack/ui/core/hr/hr.haml +1 -1
  118. data/app/concepts/matestack/ui/core/hr/hr.rb +0 -1
  119. data/app/concepts/matestack/ui/core/icon/icon.haml +3 -3
  120. data/app/concepts/matestack/ui/core/icon/icon.rb +1 -1
  121. data/app/concepts/matestack/ui/core/iframe/iframe.haml +3 -3
  122. data/app/concepts/matestack/ui/core/iframe/iframe.rb +3 -10
  123. data/app/concepts/matestack/ui/core/img/img.haml +1 -1
  124. data/app/concepts/matestack/ui/core/img/img.rb +8 -8
  125. data/app/concepts/matestack/ui/core/input/input.haml +1 -2
  126. data/app/concepts/matestack/ui/core/input/input.rb +4 -4
  127. data/app/concepts/matestack/ui/core/ins/ins.haml +3 -3
  128. data/app/concepts/matestack/ui/core/ins/ins.rb +2 -6
  129. data/app/concepts/matestack/ui/core/isolated/children_wrapper.haml +2 -0
  130. data/app/concepts/matestack/ui/core/isolated/isolated.haml +10 -0
  131. data/app/concepts/matestack/ui/core/isolated/isolated.js +108 -0
  132. data/app/concepts/matestack/ui/core/isolated/isolated.rb +59 -0
  133. data/app/concepts/matestack/ui/core/js/core.js +6 -4
  134. data/app/concepts/matestack/ui/core/kbd/kbd.haml +3 -3
  135. data/app/concepts/matestack/ui/core/kbd/kbd.rb +1 -0
  136. data/app/concepts/matestack/ui/core/label/label.haml +3 -3
  137. data/app/concepts/matestack/ui/core/label/label.rb +2 -6
  138. data/app/concepts/matestack/ui/core/legend/legend.haml +3 -3
  139. data/app/concepts/matestack/ui/core/legend/legend.rb +1 -1
  140. data/app/concepts/matestack/ui/core/li/li.haml +3 -3
  141. data/app/concepts/matestack/ui/core/li/li.rb +2 -1
  142. data/app/concepts/matestack/ui/core/link/link.haml +3 -3
  143. data/app/concepts/matestack/ui/core/link/link.rb +10 -14
  144. data/app/concepts/matestack/ui/core/main/main.haml +1 -1
  145. data/app/concepts/matestack/ui/core/main/main.rb +0 -1
  146. data/app/concepts/matestack/ui/core/map/map.haml +1 -1
  147. data/app/concepts/matestack/ui/core/map/map.rb +1 -7
  148. data/app/concepts/matestack/ui/core/mark/mark.haml +3 -3
  149. data/app/concepts/matestack/ui/core/mark/mark.rb +1 -0
  150. data/app/concepts/matestack/ui/core/meter/meter.haml +1 -1
  151. data/app/concepts/matestack/ui/core/meter/meter.rb +1 -10
  152. data/app/concepts/matestack/ui/core/nav/nav.haml +1 -1
  153. data/app/concepts/matestack/ui/core/nav/nav.rb +0 -1
  154. data/app/concepts/matestack/ui/core/noscript/noscript.haml +3 -3
  155. data/app/concepts/matestack/ui/core/noscript/noscript.rb +1 -1
  156. data/app/concepts/matestack/ui/core/object/object.haml +1 -1
  157. data/app/concepts/matestack/ui/core/object/object.rb +1 -11
  158. data/app/concepts/matestack/ui/core/ol/ol.haml +1 -1
  159. data/app/concepts/matestack/ui/core/ol/ol.rb +1 -1
  160. data/app/concepts/matestack/ui/core/onclick/onclick.haml +1 -1
  161. data/app/concepts/matestack/ui/core/onclick/onclick.rb +1 -0
  162. data/app/concepts/matestack/ui/core/optgroup/optgroup.haml +1 -1
  163. data/app/concepts/matestack/ui/core/optgroup/optgroup.rb +1 -6
  164. data/app/concepts/matestack/ui/core/option/option.haml +3 -3
  165. data/app/concepts/matestack/ui/core/option/option.rb +2 -8
  166. data/app/concepts/matestack/ui/core/output/output.haml +3 -3
  167. data/app/concepts/matestack/ui/core/output/output.rb +2 -7
  168. data/app/concepts/matestack/ui/core/page/{content.js → content/content.js} +8 -2
  169. data/app/concepts/matestack/ui/core/page/content/content.rb +28 -0
  170. data/app/concepts/matestack/ui/core/page/page.haml +3 -9
  171. data/app/concepts/matestack/ui/core/page/page.rb +15 -179
  172. data/app/concepts/matestack/ui/core/paragraph/paragraph.haml +3 -3
  173. data/app/concepts/matestack/ui/core/paragraph/paragraph.rb +1 -1
  174. data/app/concepts/matestack/ui/core/param/param.haml +1 -1
  175. data/app/concepts/matestack/ui/core/param/param.rb +1 -6
  176. data/app/concepts/matestack/ui/core/partial/partial.rb +0 -1
  177. data/app/concepts/matestack/ui/core/picture/picture.haml +1 -1
  178. data/app/concepts/matestack/ui/core/pre/pre.haml +3 -3
  179. data/app/concepts/matestack/ui/core/pre/pre.rb +1 -1
  180. data/app/concepts/matestack/ui/core/progress/progress.haml +1 -1
  181. data/app/concepts/matestack/ui/core/progress/progress.rb +1 -10
  182. data/app/concepts/matestack/ui/core/q/q.haml +3 -3
  183. data/app/concepts/matestack/ui/core/q/q.rb +2 -7
  184. data/app/concepts/matestack/ui/core/rp/rp.haml +3 -3
  185. data/app/concepts/matestack/ui/core/rp/rp.rb +1 -1
  186. data/app/concepts/matestack/ui/core/rt/rt.haml +3 -3
  187. data/app/concepts/matestack/ui/core/rt/rt.rb +1 -1
  188. data/app/concepts/matestack/ui/core/ruby/ruby.haml +3 -3
  189. data/app/concepts/matestack/ui/core/ruby/ruby.rb +1 -1
  190. data/app/concepts/matestack/ui/core/s/s.haml +3 -3
  191. data/app/concepts/matestack/ui/core/s/s.rb +1 -1
  192. data/app/concepts/matestack/ui/core/samp/samp.haml +3 -3
  193. data/app/concepts/matestack/ui/core/samp/samp.rb +1 -0
  194. data/app/concepts/matestack/ui/core/section/section.haml +1 -1
  195. data/app/concepts/matestack/ui/core/section/section.rb +0 -1
  196. data/app/concepts/matestack/ui/core/slot/slot.rb +1 -2
  197. data/app/concepts/matestack/ui/core/small/small.haml +3 -3
  198. data/app/concepts/matestack/ui/core/small/small.rb +1 -1
  199. data/app/concepts/matestack/ui/core/span/span.haml +3 -3
  200. data/app/concepts/matestack/ui/core/span/span.rb +1 -1
  201. data/app/concepts/matestack/ui/core/strong/strong.haml +3 -3
  202. data/app/concepts/matestack/ui/core/strong/strong.rb +1 -1
  203. data/app/concepts/matestack/ui/core/sub/sub.haml +3 -3
  204. data/app/concepts/matestack/ui/core/sub/sub.rb +1 -1
  205. data/app/concepts/matestack/ui/core/summary/summary.haml +3 -3
  206. data/app/concepts/matestack/ui/core/summary/summary.rb +1 -1
  207. data/app/concepts/matestack/ui/core/sup/sup.haml +3 -3
  208. data/app/concepts/matestack/ui/core/sup/sup.rb +1 -1
  209. data/app/concepts/matestack/ui/core/table/table.haml +1 -1
  210. data/app/concepts/matestack/ui/core/table/table.rb +0 -1
  211. data/app/concepts/matestack/ui/core/tbody/tbody.haml +1 -1
  212. data/app/concepts/matestack/ui/core/tbody/tbody.rb +0 -1
  213. data/app/concepts/matestack/ui/core/td/td.haml +3 -3
  214. data/app/concepts/matestack/ui/core/td/td.rb +2 -1
  215. data/app/concepts/matestack/ui/core/template/template.haml +1 -1
  216. data/app/concepts/matestack/ui/core/textarea/textarea.haml +5 -0
  217. data/app/concepts/matestack/ui/core/textarea/textarea.rb +10 -0
  218. data/app/concepts/matestack/ui/core/tfoot/tfoot.haml +1 -1
  219. data/app/concepts/matestack/ui/core/tfoot/tfoot.rb +0 -1
  220. data/app/concepts/matestack/ui/core/th/th.haml +3 -3
  221. data/app/concepts/matestack/ui/core/th/th.rb +2 -1
  222. data/app/concepts/matestack/ui/core/thead/thead.haml +1 -1
  223. data/app/concepts/matestack/ui/core/thead/thead.rb +0 -1
  224. data/app/concepts/matestack/ui/core/time/time.haml +1 -1
  225. data/app/concepts/matestack/ui/core/time/time.rb +1 -7
  226. data/app/concepts/matestack/ui/core/toggle/toggle.haml +2 -0
  227. data/app/concepts/matestack/ui/core/toggle/toggle.js +71 -0
  228. data/app/concepts/matestack/ui/core/toggle/toggle.rb +13 -0
  229. data/app/concepts/matestack/ui/core/tr/tr.haml +1 -1
  230. data/app/concepts/matestack/ui/core/tr/tr.rb +0 -1
  231. data/app/concepts/matestack/ui/core/transition/transition.haml +3 -3
  232. data/app/concepts/matestack/ui/core/transition/transition.js +1 -0
  233. data/app/concepts/matestack/ui/core/transition/transition.rb +14 -7
  234. data/app/concepts/matestack/ui/core/u/u.haml +3 -3
  235. data/app/concepts/matestack/ui/core/u/u.rb +1 -1
  236. data/app/concepts/matestack/ui/core/ul/ul.haml +1 -1
  237. data/app/concepts/matestack/ui/core/ul/ul.rb +0 -1
  238. data/app/concepts/matestack/ui/core/unescaped/unescaped.rb +3 -1
  239. data/app/concepts/matestack/ui/core/var/var.haml +3 -3
  240. data/app/concepts/matestack/ui/core/var/var.rb +1 -0
  241. data/app/concepts/matestack/ui/core/video/video.haml +2 -2
  242. data/app/concepts/matestack/ui/core/video/video.rb +4 -14
  243. data/app/concepts/matestack/ui/core/view/view.haml +1 -0
  244. data/app/concepts/matestack/ui/core/view/view.rb +30 -0
  245. data/app/concepts/matestack/ui/core/wbr/wbr.haml +5 -1
  246. data/app/concepts/matestack/ui/core/wbr/wbr.rb +1 -0
  247. data/app/concepts/matestack/ui/core/youtube/youtube.haml +1 -1
  248. data/app/concepts/matestack/ui/core/youtube/youtube.rb +18 -16
  249. data/app/helpers/matestack/ui/core/application_helper.rb +94 -21
  250. data/app/lib/matestack/ui/component.rb +1 -0
  251. data/app/lib/matestack/ui/core/has_view_context.rb +6 -4
  252. data/app/lib/matestack/ui/core/html_attributes.rb +43 -0
  253. data/app/lib/matestack/ui/core/properties.rb +161 -0
  254. data/app/lib/matestack/ui/core/rendering/default_renderer_class_determiner.rb +33 -0
  255. data/app/lib/matestack/ui/core/rendering/main_renderer.rb +203 -0
  256. data/app/lib/matestack/ui/isolated_component.rb +1 -0
  257. data/app/lib/matestack/ui/vue_js_component.rb +1 -0
  258. data/lib/matestack/ui/core.rb +4 -2
  259. data/lib/matestack/ui/core/cell.rb +0 -2
  260. data/lib/matestack/ui/core/component/registry.rb +47 -0
  261. data/lib/matestack/ui/core/components.rb +269 -0
  262. data/lib/matestack/ui/core/dsl.rb +6 -0
  263. data/lib/matestack/ui/core/engine.rb +16 -0
  264. data/lib/matestack/ui/core/version.rb +1 -1
  265. data/vendor/assets/javascripts/dist/matestack-ui-core.js +467 -142
  266. data/vendor/assets/javascripts/dist/matestack-ui-core.js.map +1 -1
  267. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js +1 -1
  268. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.br +0 -0
  269. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.gz +0 -0
  270. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map +1 -1
  271. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map.br +0 -0
  272. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map.gz +0 -0
  273. metadata +50 -63
  274. data/MIT-LICENSE +0 -20
  275. data/app/concepts/matestack/ui/core/absolute/absolute.haml +0 -3
  276. data/app/concepts/matestack/ui/core/absolute/absolute.rb +0 -17
  277. data/app/concepts/matestack/ui/core/collection/filter/input/input.haml +0 -2
  278. data/app/concepts/matestack/ui/core/component/response.haml +0 -2
  279. data/app/concepts/matestack/ui/core/component/response_dynamic.haml +0 -7
  280. data/app/concepts/matestack/ui/core/component/response_dynamic_without_rerender.haml +0 -3
  281. data/app/concepts/matestack/ui/core/component/static.haml +0 -1
  282. data/app/concepts/matestack/ui/core/form/inline/inline.haml +0 -6
  283. data/app/concepts/matestack/ui/core/form/inline/inline.rb +0 -9
  284. data/app/concepts/matestack/ui/core/form/input/input.haml +0 -46
  285. data/app/concepts/matestack/ui/core/html/html.haml +0 -3
  286. data/app/concepts/matestack/ui/core/html/html.js +0 -10
  287. data/app/concepts/matestack/ui/core/html/html.rb +0 -17
  288. data/app/concepts/matestack/ui/core/isolate/isolate.haml +0 -2
  289. data/app/concepts/matestack/ui/core/isolate/isolate.rb +0 -11
  290. data/app/concepts/matestack/ui/core/page/content.haml +0 -7
  291. data/app/concepts/matestack/ui/core/page/content.rb +0 -5
  292. data/app/concepts/matestack/ui/core/pg/pg.haml +0 -5
  293. data/app/concepts/matestack/ui/core/pg/pg.rb +0 -5
  294. data/app/lib/matestack/ui/core/app_node.rb +0 -53
  295. data/app/lib/matestack/ui/core/component_node.rb +0 -87
  296. data/app/lib/matestack/ui/core/page_node.rb +0 -100
  297. data/app/lib/matestack/ui/core/render.rb +0 -89
  298. data/app/lib/matestack/ui/core/to_cell.rb +0 -129
@@ -1,2 +1,2 @@
1
- - @children_cells.each do |key, cell|
2
- = cell.call(:show)
1
+ - @children.each do |child|
2
+ = child.show
@@ -1,59 +1,22 @@
1
- import Vue from 'vue/dist/vue.esm'
2
- import axios from 'axios'
3
- import VRuntimeTemplate from "v-runtime-template"
4
1
  import matestackEventHub from '../js/event-hub'
5
2
 
6
3
  const componentMixin = {
7
4
  props: ['componentConfig', 'params'],
8
- data: function(){
9
- return {
10
- asyncTemplate: null
11
- }
12
- },
13
5
  methods: {
14
- onRerender: function(event){
15
- if (this.$el.id === event+"__wrapper"){
16
- this.rerender()
6
+ registerEvents: function(events, callback){
7
+ if(events != undefined){
8
+ var event_names = events.split(",")
9
+ event_names.forEach(event_name => matestackEventHub.$on(event_name.trim(), callback));
17
10
  }
18
11
  },
19
- onMatestackUiCoreChannel: function(event){
20
- if (this.componentConfig["rerender_on"] == event.message){
21
- this.rerender()
12
+ removeEvents: function(events, callback){
13
+ if(events != undefined){
14
+ var event_names = events.split(",")
15
+ event_names.forEach(event_name => matestackEventHub.$off(event_name.trim(), callback));
22
16
  }
23
- },
24
- rerender: function(){
25
- var self = this;
26
- self.params["component_key"] = self.componentConfig["component_key"]
27
- axios({
28
- method: "get",
29
- url: location.pathname + location.search,
30
- headers: {
31
- 'X-CSRF-Token': document.getElementsByName("csrf-token")[0].getAttribute('content')
32
- },
33
- params: {"component_key": self.componentConfig["component_key"]}
34
- })
35
- .then(function(response){
36
- self.asyncTemplate = response["data"];
37
- })
38
- },
39
- rerenderWith: function(newParams){
40
- Object.assign(this.params, newParams);
41
- this.rerender()
42
17
  }
43
- },
44
- created: function () {
45
- const self = this
46
- matestackEventHub.$on('rerender', self.onRerender)
47
- matestackEventHub.$on('MatestackUiCoreChannel', self.onMatestackUiCoreChannel)
48
- },
49
- beforeDestroy: function() {
50
- const self = this
51
- matestackEventHub.$off('rerender', self.onRerender);
52
- matestackEventHub.$off('MatestackUiCoreChannel', self.onMatestackUiCoreChannel)
53
- },
54
- components: {
55
- VRuntimeTemplate: VRuntimeTemplate
56
18
  }
19
+
57
20
  }
58
21
 
59
22
  export default componentMixin
@@ -1,5 +1,5 @@
1
1
  %component{dynamic_tag_attributes}
2
- %div
2
+ %div{class: "matestack-async-component-wrapper", "v-bind:class": "{ 'loading': loading === true }"}
3
3
  %div{"v-if": "asyncTemplate == null"}
4
4
  = render_content
5
5
  %div{"v-if": "asyncTemplate != null"}
@@ -1,269 +1,47 @@
1
1
  module Matestack::Ui::Core::Component
2
- class Dynamic < Trailblazer::Cell
3
- include Matestack::Ui::Core::Cell
4
- include Matestack::Ui::Core::ApplicationHelper
5
- include Matestack::Ui::Core::ToCell
6
- include Matestack::Ui::Core::HasViewContext
2
+ class Dynamic < Base
7
3
 
8
- view_paths << "#{Matestack::Ui::Core::Engine.root}/app/concepts"
9
- view_paths << "#{::Rails.root}/app/matestack"
10
-
11
- extend ViewName::Flat
12
-
13
- def self.prefixes
14
- _prefixes = super
15
- modified_prefixes = _prefixes.map do |prefix|
16
- prefix_parts = prefix.split("/")
17
-
18
- if prefix_parts.last.include?(self.name.split("::")[-1].downcase)
19
- prefix_parts[0..-2].join("/")
20
- else
21
- prefix
22
- end
23
-
24
- end
25
-
26
- return modified_prefixes + _prefixes
27
- end
28
-
29
- def self.views_dir
30
- return ""
31
- end
32
-
33
- def initialize(model=nil, options={})
4
+ def initialize(*_args)
34
5
  super
35
- @component_config = options.except(:context, :children, :url_params, :included_config)
36
- @url_params = options[:url_params].except(:action, :controller, :component_key)
37
- @component_key = options[:component_key]
38
- @children_cells = {}
39
- @controller_context = context[:controller_context]
40
- @argument = model
41
- @static = false
42
- @nodes = {}
43
- @cells = {}
44
- @included_config = options[:included_config]
45
- @cached_params = options[:cached_params]
46
- @rerender = false
47
- @options = options
48
- set_tag_attributes
49
- setup
50
- generate_component_name
51
- generate_children_cells
52
- validate_options
53
- end
54
-
55
- def validate_options
56
- if defined? self.class::REQUIRED_KEYS
57
- self.class::REQUIRED_KEYS.each do |key|
58
- raise "required key '#{key}' is missing" if options[key].nil?
59
- end
60
- end
61
- custom_options_validation
62
6
  end
63
7
 
64
- def custom_options_validation
65
- true
8
+ def show
9
+ render :dynamic_without_rerender
66
10
  end
67
11
 
68
- def setup
69
- true
70
- end
71
-
72
- def show(&block)
73
- if respond_to? :prepare
74
- prepare
75
- end
76
- if respond_to? :response
77
- response &block
78
- if @static
79
- render :response
80
- else
81
- if @rerender
82
- render :response_dynamic
83
- else
84
- render :response_dynamic_without_rerender
85
- end
86
- end
87
- else
88
- if @static
89
- render(view: :static, &block)
90
- else
91
- if @rerender
92
- render(view: :dynamic, &block)
93
- else
94
- render(view: :dynamic_without_rerender, &block)
95
- end
96
- end
97
- end
98
- end
99
-
100
- def render_children
101
- render(view: :children)
102
- end
103
-
104
- def render_content(&block)
105
- if respond_to? :prepare
106
- prepare
107
- end
108
- if respond_to? :response
109
- response &block
110
- render :response
111
- else
112
- # render(view: self.class.name.split("::")[-1].downcase.to_sym) do
113
- render do
114
- render_children
115
- end
116
- end
117
- end
118
-
119
- def component_id
120
- options[:id] ||= nil
121
- end
12
+ private
122
13
 
123
- def js_action name, arguments
124
- argumentString = arguments.join('", "')
125
- argumentString = '"' + argumentString + '"'
126
- [name, '(', argumentString, ')'].join("")
14
+ def dynamic_tag_attributes
15
+ attrs = {
16
+ "is": get_vue_js_name,
17
+ "ref": component_id,
18
+ ":params": params.except(:controller, :action).to_json,
19
+ ":component-config": component_config.to_json,
20
+ "inline-template": true,
21
+ }
22
+ attrs.merge!(options[:attributes]) unless options[:attributes].nil?
23
+ attrs
127
24
  end
128
25
 
129
- def navigate_to path
130
- js_action("navigateTo", [path])
26
+ def get_vue_js_name
27
+ self.class.vue_js_name
131
28
  end
132
29
 
133
- def components(&block)
134
- @nodes = Matestack::Ui::Core::ComponentNode.build(self, nil, &block)
30
+ class << self
135
31
 
136
- @nodes.each do |key, node|
137
- @cells[key] = to_cell("#{@component_key}__#{key}", node["component_name"], node["config"], node["argument"], node["components"], node["included_config"], node["cached_params"])
32
+ def inherited(subclass)
33
+ super # do not overwrite inherited implementation of Base
34
+ subclass.vue_js_component_name vue_js_name unless self == Matestack::Ui::Core::Component::Dynamic
138
35
  end
139
- end
140
-
141
- def partial(&block)
142
- return Matestack::Ui::Core::ComponentNode.build(self, nil, &block)
143
- end
144
36
 
145
- def slot(&block)
146
- return Matestack::Ui::Core::ComponentNode.build(self, nil, &block)
147
- end
148
-
149
- def get_children
150
- return options[:children]
151
- end
152
-
153
- def to_css_class(symbol)
154
- symbol.to_s.gsub("_", "-")
155
- end
156
-
157
- def modifiers
158
- result = []
159
- return unless defined? self.class::OPTIONS
160
- self.class::OPTIONS.select{ |modifer_key, modifier_options|
161
- modifier_options[:css_modifier] == true
162
- }.each do |modifer_key, modifier_options|
163
- if !options[modifer_key] == false || modifier_options[:default] == true
164
- result << "#{to_css_class(self.class::CSSClASS)}--#{to_css_class(modifer_key)}"
165
- end
37
+ def vue_js_component_name(name)
38
+ @vue_js_name = name.to_s
166
39
  end
167
- result.join(" ")
168
- end
169
40
 
170
- def render_child_component component_key, current_search_keys_array
171
- if respond_to? :prepare
172
- prepare
173
- end
174
-
175
- response
176
-
177
- if current_search_keys_array.count > 1
178
- if @nodes.dig(*current_search_keys_array) == nil
179
- rest = []
180
- while @nodes.dig(*current_search_keys_array) == nil
181
- rest << current_search_keys_array.pop
182
- end
183
- node = @nodes.dig(*current_search_keys_array)
184
- cell = to_cell(component_key, node["component_name"], node["config"], node["argument"], node["components"], node["included_config"], node["cached_params"])
185
- begin
186
- return cell.render_child_component component_key, rest.reverse[1..-1]
187
- rescue
188
- return cell.render_content
189
- end
190
- else
191
- node = @nodes.dig(*current_search_keys_array)
192
- cell = to_cell(component_key, node["component_name"], node["config"], node["argument"], node["components"], node["included_config"], node["cached_params"])
193
- return cell.render_content
194
- end
195
- else
196
- node = @nodes[current_search_keys_array[0]]
197
- cell = to_cell(component_key, node["component_name"], node["config"], node["argument"], node["components"], node["included_config"], node["cached_params"])
198
- return cell.render_content
41
+ def vue_js_name
42
+ @vue_js_name ||= self.name.split(/(?=[A-Z])/).join("-").downcase.gsub("::", "")
199
43
  end
200
44
  end
201
45
 
202
- private
203
-
204
- def generate_children_cells
205
- unless options[:children].nil?
206
- #needs refactoring --> in some cases, :component_key, :children, :origin_url, :url_params, :included_config get passed into options[:children] which causes errors
207
- #quickfix: except them from iteration
208
- options[:children].except(:component_key, :children, :origin_url, :url_params, :included_config).each do |key, node|
209
- @children_cells[key] = to_cell("#{@component_key}__#{key}", node["component_name"], node["config"], node["argument"], node["components"], node["included_config"], node["cached_params"])
210
- end
211
- end
212
- end
213
-
214
- def generate_component_name
215
- name_parts = self.class.name.split("::")
216
- module_name = name_parts[0]
217
- if module_name == "Components"
218
- name_parts[0] = "Custom"
219
- end
220
- if name_parts.count > 1
221
- if name_parts.include?("Cell")
222
- name = name_parts[0] + name_parts[1]
223
- if name_parts[0] == name_parts[2]
224
- name = name_parts[0] + name_parts[1]
225
- @component_class = name.underscore.gsub("_", "-")
226
- else
227
- name = name_parts[0] + name_parts[2] + name_parts[1]
228
- @component_class = name.underscore.gsub("_", "-")
229
- end
230
- else
231
- if name_parts[-2] == name_parts[-1]
232
- @component_class = name_parts[0..-2].join("-").downcase
233
- else
234
- @component_class = name_parts.join("-").downcase
235
- end
236
- end
237
- else
238
- name = name_parts[0]
239
- @component_class = name.underscore.gsub("_", "-")
240
- end
241
- @component_name = @component_class
242
- end
243
-
244
- def set_tag_attributes
245
- default_attributes = {
246
- "id": component_id,
247
- "class": options[:class]
248
- }
249
- unless options[:attributes].nil?
250
- default_attributes.merge!(options[:attributes])
251
- end
252
-
253
- @tag_attributes = default_attributes
254
- end
255
-
256
- def dynamic_tag_attributes
257
- attrs = {
258
- "is": @component_class,
259
- "ref": component_id,
260
- ":params": @url_params.to_json,
261
- ":component-config": @component_config.to_json,
262
- "inline-template": true,
263
- }
264
- attrs.merge!(options[:attributes]) unless options[:attributes].nil?
265
- return attrs
266
- end
267
-
268
46
  end
269
47
  end
@@ -1,16 +1,7 @@
1
1
  module Matestack::Ui::Core::Component
2
- class Static < Matestack::Ui::Core::Component::Dynamic
3
-
4
- def initialize(model=nil, options={})
5
- super
6
- if options[:dynamic]
7
- @static = false
8
- @rerender = true
9
- @component_class = "anonym-dynamic-component"
10
- else
11
- @static = true
12
- end
2
+ class Static < Base
3
+ def show
4
+ render_content
13
5
  end
14
-
15
6
  end
16
7
  end
@@ -1,5 +1,5 @@
1
- %data{@tag_attributes}
2
- - if options[:text].blank? && block_given?
1
+ %data{ html_attributes }
2
+ - if text.blank? && block_given?
3
3
  = yield
4
4
  - else
5
- = options[:text]
5
+ = text
@@ -1,9 +1,6 @@
1
1
  module Matestack::Ui::Core::Data
2
2
  class Data < Matestack::Ui::Core::Component::Static
3
- def setup
4
- @tag_attributes.merge!({
5
- "value": options[:value] ||= nil
6
- })
7
- end
3
+ html_attributes :value
4
+ optional :text
8
5
  end
9
6
  end
@@ -1,3 +1,3 @@
1
- %datalist{@tag_attributes}
1
+ %datalist{ html_attributes }
2
2
  - if block_given?
3
- = yield
3
+ = yield
@@ -1,5 +1,4 @@
1
1
  module Matestack::Ui::Core::Datalist
2
2
  class Datalist < Matestack::Ui::Core::Component::Static
3
-
4
3
  end
5
- end
4
+ end
@@ -1,5 +1,5 @@
1
- %dd{@tag_attributes}
2
- - if options[:text].nil? && block_given?
1
+ %dd{ html_attributes }
2
+ - if text.nil? && block_given?
3
3
  = yield
4
4
  - else
5
- = options[:text]
5
+ = text
@@ -1,5 +1,5 @@
1
1
  module Matestack::Ui::Core::Dd
2
2
  class Dd < Matestack::Ui::Core::Component::Static
3
-
3
+ optional :text
4
4
  end
5
5
  end