matestack-ui-core 0.7.5 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) 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 +6 -3
  14. data/app/concepts/matestack/ui/core/app/app.rb +33 -56
  15. data/app/concepts/matestack/ui/core/app/store.js +28 -2
  16. data/app/concepts/matestack/ui/core/area/area.haml +1 -1
  17. data/app/concepts/matestack/ui/core/area/area.rb +2 -14
  18. data/app/concepts/matestack/ui/core/article/article.haml +3 -3
  19. data/app/concepts/matestack/ui/core/article/article.rb +1 -1
  20. data/app/concepts/matestack/ui/core/aside/aside.haml +1 -1
  21. data/app/concepts/matestack/ui/core/aside/aside.rb +0 -1
  22. data/app/concepts/matestack/ui/core/async/async.haml +6 -2
  23. data/app/concepts/matestack/ui/core/async/async.js +43 -9
  24. data/app/concepts/matestack/ui/core/async/async.rb +29 -4
  25. data/app/concepts/matestack/ui/core/async/children_wrapper.haml +2 -0
  26. data/app/concepts/matestack/ui/core/b/b.haml +3 -3
  27. data/app/concepts/matestack/ui/core/b/b.rb +1 -1
  28. data/app/concepts/matestack/ui/core/bdi/bdi.haml +3 -3
  29. data/app/concepts/matestack/ui/core/bdi/bdi.rb +1 -0
  30. data/app/concepts/matestack/ui/core/bdo/bdo.haml +3 -3
  31. data/app/concepts/matestack/ui/core/bdo/bdo.rb +2 -7
  32. data/app/concepts/matestack/ui/core/blockquote/blockquote.haml +3 -3
  33. data/app/concepts/matestack/ui/core/blockquote/blockquote.rb +2 -7
  34. data/app/concepts/matestack/ui/core/br/br.haml +4 -4
  35. data/app/concepts/matestack/ui/core/br/br.rb +1 -1
  36. data/app/concepts/matestack/ui/core/button/button.haml +3 -3
  37. data/app/concepts/matestack/ui/core/button/button.rb +3 -7
  38. data/app/concepts/matestack/ui/core/cable/cable.haml +4 -0
  39. data/app/concepts/matestack/ui/core/cable/cable.js +100 -0
  40. data/app/concepts/matestack/ui/core/cable/cable.rb +28 -0
  41. data/app/concepts/matestack/ui/core/cable/children_wrapper.haml +2 -0
  42. data/app/concepts/matestack/ui/core/caption/caption.haml +3 -3
  43. data/app/concepts/matestack/ui/core/caption/caption.rb +1 -1
  44. data/app/concepts/matestack/ui/core/cite/cite.haml +3 -3
  45. data/app/concepts/matestack/ui/core/cite/cite.rb +1 -1
  46. data/app/concepts/matestack/ui/core/code/code.haml +3 -3
  47. data/app/concepts/matestack/ui/core/code/code.rb +1 -1
  48. data/app/concepts/matestack/ui/core/collection/content/content.js +2 -2
  49. data/app/concepts/matestack/ui/core/collection/content/content.rb +4 -6
  50. data/app/concepts/matestack/ui/core/collection/content/next/next.haml +1 -1
  51. data/app/concepts/matestack/ui/core/collection/content/page/link/link.haml +1 -1
  52. data/app/concepts/matestack/ui/core/collection/content/page/link/link.rb +5 -3
  53. data/app/concepts/matestack/ui/core/collection/content/previous/previous.haml +1 -1
  54. data/app/concepts/matestack/ui/core/collection/filter/filter.rb +4 -5
  55. data/app/concepts/matestack/ui/core/collection/filter/input/input.rb +11 -8
  56. data/app/concepts/matestack/ui/core/collection/filter/reset/reset.haml +1 -1
  57. data/app/concepts/matestack/ui/core/collection/filter/select/select.haml +10 -0
  58. data/app/concepts/matestack/ui/core/collection/filter/select/select.rb +30 -0
  59. data/app/concepts/matestack/ui/core/collection/filter/submit/submit.haml +1 -1
  60. data/app/concepts/matestack/ui/core/collection/helper.rb +14 -6
  61. data/app/concepts/matestack/ui/core/collection/order/order.js +1 -1
  62. data/app/concepts/matestack/ui/core/collection/order/order.rb +4 -5
  63. data/app/concepts/matestack/ui/core/collection/order/toggle/indicator/indicator.rb +9 -5
  64. data/app/concepts/matestack/ui/core/collection/order/toggle/toggle.haml +1 -1
  65. data/app/concepts/matestack/ui/core/collection/order/toggle/toggle.rb +0 -1
  66. data/app/concepts/matestack/ui/core/component/base.rb +430 -0
  67. data/app/concepts/matestack/ui/core/component/children.haml +2 -2
  68. data/app/concepts/matestack/ui/core/component/component.js +9 -46
  69. data/app/concepts/matestack/ui/core/component/dynamic.haml +1 -1
  70. data/app/concepts/matestack/ui/core/component/dynamic.rb +25 -247
  71. data/app/concepts/matestack/ui/core/component/static.rb +3 -12
  72. data/app/concepts/matestack/ui/core/data/data.haml +3 -3
  73. data/app/concepts/matestack/ui/core/data/data.rb +2 -5
  74. data/app/concepts/matestack/ui/core/datalist/datalist.haml +2 -2
  75. data/app/concepts/matestack/ui/core/datalist/datalist.rb +1 -2
  76. data/app/concepts/matestack/ui/core/dd/dd.haml +3 -3
  77. data/app/concepts/matestack/ui/core/dd/dd.rb +1 -1
  78. data/app/concepts/matestack/ui/core/del/del.haml +3 -3
  79. data/app/concepts/matestack/ui/core/del/del.rb +2 -0
  80. data/app/concepts/matestack/ui/core/details/details.haml +1 -1
  81. data/app/concepts/matestack/ui/core/details/details.rb +1 -1
  82. data/app/concepts/matestack/ui/core/dfn/dfn.haml +3 -3
  83. data/app/concepts/matestack/ui/core/dfn/dfn.rb +1 -1
  84. data/app/concepts/matestack/ui/core/dialog/dialog.haml +3 -3
  85. data/app/concepts/matestack/ui/core/dialog/dialog.rb +2 -5
  86. data/app/concepts/matestack/ui/core/div/div.haml +1 -1
  87. data/app/concepts/matestack/ui/core/div/div.rb +0 -1
  88. data/app/concepts/matestack/ui/core/dl/dl.haml +3 -3
  89. data/app/concepts/matestack/ui/core/dl/dl.rb +2 -2
  90. data/app/concepts/matestack/ui/core/dt/dt.haml +3 -3
  91. data/app/concepts/matestack/ui/core/dt/dt.rb +1 -1
  92. data/app/concepts/matestack/ui/core/em/em.haml +3 -3
  93. data/app/concepts/matestack/ui/core/em/em.rb +1 -1
  94. data/app/concepts/matestack/ui/core/fieldset/fieldset.haml +4 -4
  95. data/app/concepts/matestack/ui/core/fieldset/fieldset.rb +3 -6
  96. data/app/concepts/matestack/ui/core/figure/figure.haml +1 -1
  97. data/app/concepts/matestack/ui/core/figure/figure.rb +0 -1
  98. data/app/concepts/matestack/ui/core/footer/footer.haml +1 -1
  99. data/app/concepts/matestack/ui/core/footer/footer.rb +0 -1
  100. data/app/concepts/matestack/ui/core/form/checkbox/checkbox.rb +79 -0
  101. data/app/concepts/matestack/ui/core/form/form.haml +1 -1
  102. data/app/concepts/matestack/ui/core/form/form.js +257 -123
  103. data/app/concepts/matestack/ui/core/form/form.rb +52 -19
  104. data/app/concepts/matestack/ui/core/form/has_errors.rb +54 -0
  105. data/app/concepts/matestack/ui/core/form/has_input_html_attributes.rb +13 -0
  106. data/app/concepts/matestack/ui/core/form/input/input.rb +32 -52
  107. data/app/concepts/matestack/ui/core/form/radio/radio.rb +71 -0
  108. data/app/concepts/matestack/ui/core/form/select/select.haml +9 -76
  109. data/app/concepts/matestack/ui/core/form/select/select.rb +44 -49
  110. data/app/concepts/matestack/ui/core/form/submit/submit.haml +1 -1
  111. data/app/concepts/matestack/ui/core/form/submit/submit.rb +5 -2
  112. data/app/concepts/matestack/ui/core/form/textarea/textarea.rb +28 -0
  113. data/app/concepts/matestack/ui/core/form/utils.rb +47 -0
  114. data/app/concepts/matestack/ui/core/header/header.haml +1 -1
  115. data/app/concepts/matestack/ui/core/header/header.rb +0 -1
  116. data/app/concepts/matestack/ui/core/heading/heading.haml +4 -49
  117. data/app/concepts/matestack/ui/core/heading/heading.rb +1 -1
  118. data/app/concepts/matestack/ui/core/hr/hr.haml +1 -1
  119. data/app/concepts/matestack/ui/core/hr/hr.rb +0 -1
  120. data/app/concepts/matestack/ui/core/icon/icon.haml +3 -3
  121. data/app/concepts/matestack/ui/core/icon/icon.rb +1 -1
  122. data/app/concepts/matestack/ui/core/iframe/iframe.haml +3 -3
  123. data/app/concepts/matestack/ui/core/iframe/iframe.rb +3 -10
  124. data/app/concepts/matestack/ui/core/img/img.haml +1 -1
  125. data/app/concepts/matestack/ui/core/img/img.rb +8 -8
  126. data/app/concepts/matestack/ui/core/input/input.haml +1 -2
  127. data/app/concepts/matestack/ui/core/input/input.rb +4 -4
  128. data/app/concepts/matestack/ui/core/ins/ins.haml +3 -3
  129. data/app/concepts/matestack/ui/core/ins/ins.rb +2 -6
  130. data/app/concepts/matestack/ui/core/isolated/children_wrapper.haml +2 -0
  131. data/app/concepts/matestack/ui/core/isolated/isolated.haml +10 -0
  132. data/app/concepts/matestack/ui/core/isolated/isolated.js +108 -0
  133. data/app/concepts/matestack/ui/core/isolated/isolated.rb +59 -0
  134. data/app/concepts/matestack/ui/core/js/core.js +6 -4
  135. data/app/concepts/matestack/ui/core/kbd/kbd.haml +3 -3
  136. data/app/concepts/matestack/ui/core/kbd/kbd.rb +1 -0
  137. data/app/concepts/matestack/ui/core/label/label.haml +3 -3
  138. data/app/concepts/matestack/ui/core/label/label.rb +2 -6
  139. data/app/concepts/matestack/ui/core/legend/legend.haml +3 -3
  140. data/app/concepts/matestack/ui/core/legend/legend.rb +1 -1
  141. data/app/concepts/matestack/ui/core/li/li.haml +3 -3
  142. data/app/concepts/matestack/ui/core/li/li.rb +2 -1
  143. data/app/concepts/matestack/ui/core/link/link.haml +3 -3
  144. data/app/concepts/matestack/ui/core/link/link.rb +10 -14
  145. data/app/concepts/matestack/ui/core/main/main.haml +1 -1
  146. data/app/concepts/matestack/ui/core/main/main.rb +0 -1
  147. data/app/concepts/matestack/ui/core/map/map.haml +1 -1
  148. data/app/concepts/matestack/ui/core/map/map.rb +1 -7
  149. data/app/concepts/matestack/ui/core/mark/mark.haml +3 -3
  150. data/app/concepts/matestack/ui/core/mark/mark.rb +1 -0
  151. data/app/concepts/matestack/ui/core/meter/meter.haml +1 -1
  152. data/app/concepts/matestack/ui/core/meter/meter.rb +1 -10
  153. data/app/concepts/matestack/ui/core/nav/nav.haml +1 -1
  154. data/app/concepts/matestack/ui/core/nav/nav.rb +0 -1
  155. data/app/concepts/matestack/ui/core/noscript/noscript.haml +3 -3
  156. data/app/concepts/matestack/ui/core/noscript/noscript.rb +1 -1
  157. data/app/concepts/matestack/ui/core/object/object.haml +1 -1
  158. data/app/concepts/matestack/ui/core/object/object.rb +1 -11
  159. data/app/concepts/matestack/ui/core/ol/ol.haml +1 -1
  160. data/app/concepts/matestack/ui/core/ol/ol.rb +1 -1
  161. data/app/concepts/matestack/ui/core/onclick/onclick.haml +1 -1
  162. data/app/concepts/matestack/ui/core/onclick/onclick.rb +1 -0
  163. data/app/concepts/matestack/ui/core/optgroup/optgroup.haml +1 -1
  164. data/app/concepts/matestack/ui/core/optgroup/optgroup.rb +1 -6
  165. data/app/concepts/matestack/ui/core/option/option.haml +3 -3
  166. data/app/concepts/matestack/ui/core/option/option.rb +2 -8
  167. data/app/concepts/matestack/ui/core/output/output.haml +3 -3
  168. data/app/concepts/matestack/ui/core/output/output.rb +2 -7
  169. data/app/concepts/matestack/ui/core/page/{content.js → content/content.js} +8 -2
  170. data/app/concepts/matestack/ui/core/page/content/content.rb +28 -0
  171. data/app/concepts/matestack/ui/core/page/page.haml +3 -9
  172. data/app/concepts/matestack/ui/core/page/page.rb +15 -175
  173. data/app/concepts/matestack/ui/core/paragraph/paragraph.haml +3 -3
  174. data/app/concepts/matestack/ui/core/paragraph/paragraph.rb +1 -1
  175. data/app/concepts/matestack/ui/core/param/param.haml +1 -1
  176. data/app/concepts/matestack/ui/core/param/param.rb +1 -6
  177. data/app/concepts/matestack/ui/core/partial/partial.rb +0 -1
  178. data/app/concepts/matestack/ui/core/picture/picture.haml +1 -1
  179. data/app/concepts/matestack/ui/core/pre/pre.haml +3 -3
  180. data/app/concepts/matestack/ui/core/pre/pre.rb +1 -1
  181. data/app/concepts/matestack/ui/core/progress/progress.haml +1 -1
  182. data/app/concepts/matestack/ui/core/progress/progress.rb +1 -10
  183. data/app/concepts/matestack/ui/core/q/q.haml +3 -3
  184. data/app/concepts/matestack/ui/core/q/q.rb +2 -7
  185. data/app/concepts/matestack/ui/core/rp/rp.haml +3 -3
  186. data/app/concepts/matestack/ui/core/rp/rp.rb +1 -1
  187. data/app/concepts/matestack/ui/core/rt/rt.haml +3 -3
  188. data/app/concepts/matestack/ui/core/rt/rt.rb +1 -1
  189. data/app/concepts/matestack/ui/core/ruby/ruby.haml +3 -3
  190. data/app/concepts/matestack/ui/core/ruby/ruby.rb +1 -1
  191. data/app/concepts/matestack/ui/core/s/s.haml +3 -3
  192. data/app/concepts/matestack/ui/core/s/s.rb +1 -1
  193. data/app/concepts/matestack/ui/core/samp/samp.haml +3 -3
  194. data/app/concepts/matestack/ui/core/samp/samp.rb +1 -0
  195. data/app/concepts/matestack/ui/core/section/section.haml +1 -1
  196. data/app/concepts/matestack/ui/core/section/section.rb +0 -1
  197. data/app/concepts/matestack/ui/core/slot/slot.rb +1 -2
  198. data/app/concepts/matestack/ui/core/small/small.haml +3 -3
  199. data/app/concepts/matestack/ui/core/small/small.rb +1 -1
  200. data/app/concepts/matestack/ui/core/span/span.haml +3 -3
  201. data/app/concepts/matestack/ui/core/span/span.rb +1 -1
  202. data/app/concepts/matestack/ui/core/strong/strong.haml +3 -3
  203. data/app/concepts/matestack/ui/core/strong/strong.rb +1 -1
  204. data/app/concepts/matestack/ui/core/sub/sub.haml +3 -3
  205. data/app/concepts/matestack/ui/core/sub/sub.rb +1 -1
  206. data/app/concepts/matestack/ui/core/summary/summary.haml +3 -3
  207. data/app/concepts/matestack/ui/core/summary/summary.rb +1 -1
  208. data/app/concepts/matestack/ui/core/sup/sup.haml +3 -3
  209. data/app/concepts/matestack/ui/core/sup/sup.rb +1 -1
  210. data/app/concepts/matestack/ui/core/table/table.haml +1 -1
  211. data/app/concepts/matestack/ui/core/table/table.rb +0 -1
  212. data/app/concepts/matestack/ui/core/tbody/tbody.haml +1 -1
  213. data/app/concepts/matestack/ui/core/tbody/tbody.rb +0 -1
  214. data/app/concepts/matestack/ui/core/td/td.haml +3 -3
  215. data/app/concepts/matestack/ui/core/td/td.rb +2 -1
  216. data/app/concepts/matestack/ui/core/template/template.haml +1 -1
  217. data/app/concepts/matestack/ui/core/textarea/textarea.haml +5 -0
  218. data/app/concepts/matestack/ui/core/textarea/textarea.rb +10 -0
  219. data/app/concepts/matestack/ui/core/tfoot/tfoot.haml +1 -1
  220. data/app/concepts/matestack/ui/core/tfoot/tfoot.rb +0 -1
  221. data/app/concepts/matestack/ui/core/th/th.haml +3 -3
  222. data/app/concepts/matestack/ui/core/th/th.rb +2 -1
  223. data/app/concepts/matestack/ui/core/thead/thead.haml +1 -1
  224. data/app/concepts/matestack/ui/core/thead/thead.rb +0 -1
  225. data/app/concepts/matestack/ui/core/time/time.haml +1 -1
  226. data/app/concepts/matestack/ui/core/time/time.rb +1 -7
  227. data/app/concepts/matestack/ui/core/toggle/toggle.haml +2 -0
  228. data/app/concepts/matestack/ui/core/toggle/toggle.js +71 -0
  229. data/app/concepts/matestack/ui/core/toggle/toggle.rb +13 -0
  230. data/app/concepts/matestack/ui/core/tr/tr.haml +1 -1
  231. data/app/concepts/matestack/ui/core/tr/tr.rb +0 -1
  232. data/app/concepts/matestack/ui/core/transition/transition.haml +3 -3
  233. data/app/concepts/matestack/ui/core/transition/transition.js +17 -1
  234. data/app/concepts/matestack/ui/core/transition/transition.rb +15 -8
  235. data/app/concepts/matestack/ui/core/u/u.haml +3 -3
  236. data/app/concepts/matestack/ui/core/u/u.rb +1 -1
  237. data/app/concepts/matestack/ui/core/ul/ul.haml +1 -1
  238. data/app/concepts/matestack/ui/core/ul/ul.rb +0 -1
  239. data/app/concepts/matestack/ui/core/unescaped/unescaped.rb +3 -1
  240. data/app/concepts/matestack/ui/core/var/var.haml +3 -3
  241. data/app/concepts/matestack/ui/core/var/var.rb +1 -0
  242. data/app/concepts/matestack/ui/core/video/video.haml +2 -2
  243. data/app/concepts/matestack/ui/core/video/video.rb +4 -14
  244. data/app/concepts/matestack/ui/core/view/view.haml +1 -0
  245. data/app/concepts/matestack/ui/core/view/view.rb +30 -0
  246. data/app/concepts/matestack/ui/core/wbr/wbr.haml +5 -1
  247. data/app/concepts/matestack/ui/core/wbr/wbr.rb +1 -0
  248. data/app/concepts/matestack/ui/core/youtube/youtube.haml +1 -1
  249. data/app/concepts/matestack/ui/core/youtube/youtube.rb +18 -16
  250. data/app/helpers/matestack/ui/core/application_helper.rb +94 -20
  251. data/app/lib/matestack/ui/component.rb +1 -0
  252. data/app/lib/matestack/ui/core/has_view_context.rb +4 -4
  253. data/app/lib/matestack/ui/core/html_attributes.rb +43 -0
  254. data/app/lib/matestack/ui/core/properties.rb +161 -0
  255. data/app/lib/matestack/ui/core/rendering/default_renderer_class_determiner.rb +33 -0
  256. data/app/lib/matestack/ui/core/rendering/main_renderer.rb +200 -0
  257. data/app/lib/matestack/ui/isolated_component.rb +1 -0
  258. data/app/lib/matestack/ui/vue_js_component.rb +1 -0
  259. data/lib/matestack/ui/core.rb +4 -2
  260. data/lib/matestack/ui/core/cell.rb +0 -2
  261. data/lib/matestack/ui/core/component/registry.rb +47 -0
  262. data/lib/matestack/ui/core/components.rb +269 -0
  263. data/lib/matestack/ui/core/dsl.rb +6 -0
  264. data/lib/matestack/ui/core/engine.rb +16 -0
  265. data/lib/matestack/ui/core/version.rb +1 -1
  266. data/vendor/assets/javascripts/dist/manifest.json +6 -10
  267. data/vendor/assets/javascripts/dist/matestack-ui-core.js +834 -261
  268. data/vendor/assets/javascripts/dist/matestack-ui-core.js.map +1 -1
  269. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js +1 -1
  270. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.br +0 -0
  271. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.gz +0 -0
  272. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map +1 -1
  273. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map.br +0 -0
  274. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map.gz +0 -0
  275. metadata +50 -65
  276. data/MIT-LICENSE +0 -20
  277. data/app/concepts/matestack/ui/core/absolute/absolute.haml +0 -3
  278. data/app/concepts/matestack/ui/core/absolute/absolute.rb +0 -17
  279. data/app/concepts/matestack/ui/core/collection/filter/input/input.haml +0 -2
  280. data/app/concepts/matestack/ui/core/component/response.haml +0 -2
  281. data/app/concepts/matestack/ui/core/component/response_dynamic.haml +0 -7
  282. data/app/concepts/matestack/ui/core/component/response_dynamic_without_rerender.haml +0 -3
  283. data/app/concepts/matestack/ui/core/component/static.haml +0 -1
  284. data/app/concepts/matestack/ui/core/form/inline/inline.haml +0 -6
  285. data/app/concepts/matestack/ui/core/form/inline/inline.rb +0 -9
  286. data/app/concepts/matestack/ui/core/form/input/input.haml +0 -38
  287. data/app/concepts/matestack/ui/core/html/html.haml +0 -3
  288. data/app/concepts/matestack/ui/core/html/html.js +0 -10
  289. data/app/concepts/matestack/ui/core/html/html.rb +0 -17
  290. data/app/concepts/matestack/ui/core/isolate/isolate.haml +0 -2
  291. data/app/concepts/matestack/ui/core/isolate/isolate.rb +0 -11
  292. data/app/concepts/matestack/ui/core/page/content.haml +0 -7
  293. data/app/concepts/matestack/ui/core/page/content.rb +0 -5
  294. data/app/concepts/matestack/ui/core/pg/pg.haml +0 -5
  295. data/app/concepts/matestack/ui/core/pg/pg.rb +0 -5
  296. data/app/lib/matestack/ui/core/app_node.rb +0 -53
  297. data/app/lib/matestack/ui/core/component_node.rb +0 -87
  298. data/app/lib/matestack/ui/core/page_node.rb +0 -100
  299. data/app/lib/matestack/ui/core/render.rb +0 -89
  300. 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