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,12 +1,37 @@
1
1
  module Matestack::Ui::Core::Async
2
2
  class Async < Matestack::Ui::Core::Component::Dynamic
3
+ vue_js_component_name "matestack-ui-core-async"
3
4
 
4
- def setup
5
- @rerender = true
6
- @tag_attributes.merge!({
7
- "v-if": "showing"
5
+ requires :id # required since 1.1.0
6
+
7
+ def initialize(*args)
8
+ super
9
+ component_config[:component_key] = id
10
+ if included_config.present? && included_config[:isolated_parent_class].present?
11
+ component_config[:parent_class] = included_config[:isolated_parent_class]
12
+ end
13
+ end
14
+
15
+ def children_wrapper_attributes
16
+ html_attributes.merge({
17
+ "v-if": "showing",
18
+ id: component_config[:component_key]
8
19
  })
9
20
  end
10
21
 
22
+ def show
23
+ render :async
24
+ end
25
+
26
+ def render_content
27
+ render :children_wrapper do
28
+ render :children
29
+ end
30
+ end
31
+
32
+ def get_component_key
33
+ component_config[:component_key]
34
+ end
35
+
11
36
  end
12
37
  end
@@ -0,0 +1,2 @@
1
+ %div{ children_wrapper_attributes.merge(class: "matestack-async-component-root") }
2
+ =yield
@@ -1,5 +1,5 @@
1
- %b{@tag_attributes}
2
- - if options[:text].nil? && block_given?
1
+ %b{ 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::B
2
2
  class B < Matestack::Ui::Core::Component::Static
3
-
3
+ optional :text
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
- %bdi{@tag_attributes}
2
- - if options[:text].blank? && block_given?
1
+ %bdi{ html_attributes }
2
+ - if text.blank? && block_given?
3
3
  = yield
4
4
  - else
5
- = options[:text]
5
+ = text
@@ -1,4 +1,5 @@
1
1
  module Matestack::Ui::Core::Bdi
2
2
  class Bdi < Matestack::Ui::Core::Component::Static
3
+ optional :text
3
4
  end
4
5
  end
@@ -1,5 +1,5 @@
1
- %bdo{@tag_attributes}
2
- - if options[:text].blank? && block_given?
1
+ %bdo{ html_attributes }
2
+ - if text.blank? && block_given?
3
3
  = yield
4
4
  - else
5
- = options[:text]
5
+ = text
@@ -1,11 +1,6 @@
1
1
  module Matestack::Ui::Core::Bdo
2
2
  class Bdo < Matestack::Ui::Core::Component::Static
3
- REQUIRED_KEYS = [:dir]
4
-
5
- def setup
6
- @tag_attributes.merge!({
7
- "dir": options[:dir]
8
- })
9
- end
3
+ html_attributes :dir
4
+ optional :text
10
5
  end
11
6
  end
@@ -1,5 +1,5 @@
1
- %blockquote{@tag_attributes}
2
- - if options[:text].nil? && block_given?
1
+ %blockquote{ html_attributes }
2
+ - if text.nil? && block_given?
3
3
  = yield
4
4
  - else
5
- = options[:text]
5
+ = text
@@ -1,11 +1,6 @@
1
1
  module Matestack::Ui::Core::Blockquote
2
2
  class Blockquote < Matestack::Ui::Core::Component::Static
3
-
4
- def setup
5
- @tag_attributes.merge!({
6
- "cite": options[:cite]
7
- })
8
- end
9
-
3
+ html_attributes :cite
4
+ optional :text
10
5
  end
11
6
  end
@@ -1,5 +1,5 @@
1
- - unless options[:times].nil?
2
- - options[:times].times do
3
- %br{@tag_attributes}
1
+ - unless times.nil?
2
+ - times.times do
3
+ %br{ html_attributes }
4
4
  - else
5
- %br{@tag_attributes}
5
+ %br{ html_attributes }
@@ -1,5 +1,5 @@
1
1
  module Matestack::Ui::Core::Br
2
2
  class Br < Matestack::Ui::Core::Component::Static
3
-
3
+ optional :times
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
- %button{@tag_attributes}
2
- - if options[:text].nil? && block_given?
1
+ %button{ html_attributes }
2
+ - if text.nil? && block_given?
3
3
  = yield
4
4
  - else
5
- = options[:text]
5
+ = text
@@ -1,11 +1,7 @@
1
1
  module Matestack::Ui::Core::Button
2
2
  class Button < Matestack::Ui::Core::Component::Static
3
-
4
- def setup
5
- @tag_attributes.merge!({
6
- "disabled": options[:disabled] ||= nil
7
- })
8
- end
9
-
3
+ html_attributes :autofocus, :disabled, :form, :formaction, :formenctype, :formmethod,
4
+ :formnovalidate, :formtarget, :name, :type, :value
5
+ optional :text
10
6
  end
11
7
  end
@@ -0,0 +1,4 @@
1
+ %component{dynamic_tag_attributes.merge('initial-template': "#{render_content}")}
2
+ %div{class: "matestack-cable-component-container", "v-bind:class": "{ 'loading': loading === true }"}
3
+ %div{class: "matestack-cable-component-wrapper", "v-if": "cableTemplate != null", "v-bind:class": "{ 'loading': loading === true }"}
4
+ %v-runtime-template{":template":"cableTemplate"}
@@ -0,0 +1,100 @@
1
+ import Vue from 'vue/dist/vue.esm'
2
+ import VRuntimeTemplate from "v-runtime-template"
3
+ import matestackEventHub from '../js/event-hub'
4
+ import componentMixin from '../component/component'
5
+
6
+ const componentDef = {
7
+ mixins: [componentMixin],
8
+ props: {
9
+ initialTemplate: String,
10
+ },
11
+ data: function(){
12
+ return {
13
+ cableTemplate: null,
14
+ cableTemplateDomElement: null,
15
+ loading: false,
16
+ event: {
17
+ data: {}
18
+ }
19
+ }
20
+ },
21
+ methods: {
22
+ append: function(payload){
23
+ var html = this.formatPayload(payload)
24
+ this.cableTemplateDomElement.insertAdjacentHTML(
25
+ 'beforeend',
26
+ html.join('')
27
+ )
28
+ this.updateCableTemplate()
29
+ },
30
+ prepend: function(payload){
31
+ var html = this.formatPayload(payload)
32
+ this.cableTemplateDomElement.insertAdjacentHTML(
33
+ 'afterbegin',
34
+ html.join('')
35
+ )
36
+ this.updateCableTemplate()
37
+ },
38
+ delete: function(payload){
39
+ var ids = this.formatPayload(payload)
40
+ ids.forEach(id =>
41
+ this.cableTemplateDomElement.querySelector('#' + id).remove()
42
+ )
43
+ this.updateCableTemplate()
44
+ },
45
+ update: function(payload){
46
+ const self = this
47
+ var html = this.formatPayload(payload)
48
+ html.forEach(function(elem){
49
+ var dom_elem = document.createElement('div')
50
+ dom_elem.innerHTML = elem
51
+ var id = dom_elem.firstChild.id
52
+ var old_elem = self.cableTemplateDomElement.querySelector('#' + id)
53
+ old_elem.parentNode.replaceChild(dom_elem.firstChild, old_elem)
54
+ })
55
+ this.updateCableTemplate()
56
+ },
57
+ replace: function(payload){
58
+ var html = this.formatPayload(payload)
59
+ this.cableTemplateDomElement.innerHTML = html.join('')
60
+ this.updateCableTemplate()
61
+ },
62
+ updateCableTemplate: function(){
63
+ this.cableTemplate = this.cableTemplateDomElement.outerHTML
64
+ },
65
+ formatPayload: function(payload){
66
+ if(!Array.isArray(payload.data)){
67
+ return [payload.data]
68
+ }
69
+ return payload.data
70
+ },
71
+ },
72
+ mounted: function() {
73
+ const self = this
74
+ var dom_elem = document.createElement('div')
75
+ dom_elem.innerHTML = this.initialTemplate
76
+ this.cableTemplateDomElement = dom_elem.querySelector("#" + this.componentConfig["id"])
77
+ this.cableTemplate = this.cableTemplateDomElement.outerHTML
78
+ this.registerEvents(this.componentConfig['append_on'], self.append)
79
+ this.registerEvents(this.componentConfig['prepend_on'], self.prepend)
80
+ this.registerEvents(this.componentConfig['delete_on'], self.delete)
81
+ this.registerEvents(this.componentConfig['update_on'], self.update)
82
+ this.registerEvents(this.componentConfig['replace_on'], self.replace)
83
+ },
84
+ beforeDestroy: function() {
85
+ const self = this
86
+ this.cableTemplate = null
87
+ this.removeEvents(this.componentConfig['append_on'], self.append)
88
+ this.removeEvents(this.componentConfig['prepend_on'], self.prepend)
89
+ this.removeEvents(this.componentConfig['delete_on'], self.delete)
90
+ this.removeEvents(this.componentConfig['update_on'], self.update)
91
+ this.removeEvents(this.componentConfig['replace_on'], self.replace)
92
+ },
93
+ components: {
94
+ VRuntimeTemplate: VRuntimeTemplate
95
+ }
96
+ }
97
+
98
+ let component = Vue.component('matestack-ui-core-cable', componentDef)
99
+
100
+ export default componentDef
@@ -0,0 +1,28 @@
1
+ module Matestack::Ui::Core::Cable
2
+ class Cable < Matestack::Ui::Core::Component::Dynamic
3
+ vue_js_component_name 'matestack-ui-core-cable'
4
+
5
+ requires :id
6
+
7
+ def setup
8
+ component_config[:component_key] = id
9
+ end
10
+
11
+ def show
12
+ render :cable
13
+ end
14
+
15
+ def render_content
16
+ render :children_wrapper do
17
+ render :children
18
+ end
19
+ end
20
+
21
+ def children_wrapper_attributes
22
+ html_attributes.merge({
23
+ id: component_config[:component_key]
24
+ })
25
+ end
26
+
27
+ end
28
+ end
@@ -0,0 +1,2 @@
1
+ %div{ children_wrapper_attributes.merge(class: "matestack-cable-component-root") }
2
+ =yield
@@ -1,5 +1,5 @@
1
- %caption{@tag_attributes}
2
- - if options[:text].nil? && block_given?
1
+ %caption{ 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::Caption
2
2
  class Caption < Matestack::Ui::Core::Component::Static
3
-
3
+ optional :text
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
- %cite{@tag_attributes}
2
- - if options[:text].nil? && block_given?
1
+ %cite{ 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::Cite
2
2
  class Cite < Matestack::Ui::Core::Component::Static
3
-
3
+ optional :text
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
- %code{@tag_attributes}
2
- - if options[:text].nil? && block_given?
1
+ %code{ 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::Code
2
2
  class Code < Matestack::Ui::Core::Component::Static
3
-
3
+ optional :text
4
4
  end
5
5
  end
@@ -2,10 +2,10 @@ import Vue from 'vue/dist/vue.esm'
2
2
  import matestackEventHub from '../../js/event-hub'
3
3
  import queryParamsHelper from '../../js/helpers/query-params-helper'
4
4
  import componentMixin from '../../component/component'
5
- import asyncMixin from '../../async/async'
5
+ // import asyncMixin from '../../async/async'
6
6
 
7
7
  const componentDef = {
8
- mixins: [componentMixin, asyncMixin],
8
+ mixins: [componentMixin],
9
9
  data: function(){
10
10
  return {
11
11
  currentLimit: null,
@@ -1,17 +1,15 @@
1
1
  module Matestack::Ui::Core::Collection::Content
2
2
  class Content < Matestack::Ui::Core::Component::Dynamic
3
+ vue_js_component_name 'matestack-ui-core-collection-content'
3
4
 
4
5
  def setup
5
- @rerender = true
6
6
  @component_config = @component_config.except(:data, :paginated_data)
7
7
  end
8
8
 
9
9
  def response
10
- components {
11
- div @tag_attributes do
12
- yield_components
13
- end
14
- }
10
+ div @tag_attributes do
11
+ yield_components
12
+ end
15
13
  end
16
14
 
17
15
  end
@@ -1,3 +1,3 @@
1
- %a{@tag_attributes, "@click": "next()"}
1
+ %a{ html_attributes , "@click": "next()" }
2
2
  - if block_given?
3
3
  = yield
@@ -1,3 +1,3 @@
1
- %a{@tag_attributes, "@click": "goToPage(#{@options[:page]})"}
1
+ %a{ html_attributes, "@click": "goToPage(#{page})" }
2
2
  - if block_given?
3
3
  = yield
@@ -1,5 +1,7 @@
1
- module Matestack::Ui::Core::Collection::Content::Page::Link
2
- class Link < Matestack::Ui::Core::Component::Static
3
-
1
+ module Matestack::Ui::Core::Collection::Content::Page
2
+ module Link
3
+ class Link::Link < Matestack::Ui::Core::Component::Static
4
+ requires :page
5
+ end
4
6
  end
5
7
  end
@@ -1,3 +1,3 @@
1
- %a{@tag_attributes, "@click": "previous()"}
1
+ %a{ html_attributes, "@click": "previous()" }
2
2
  - if block_given?
3
3
  = yield
@@ -1,16 +1,15 @@
1
1
  module Matestack::Ui::Core::Collection::Filter
2
2
  class Filter < Matestack::Ui::Core::Component::Dynamic
3
+ vue_js_component_name 'matestack-ui-core-collection-filter'
3
4
 
4
5
  def setup
5
6
  @component_config = @component_config.except(:data, :paginated_data)
6
7
  end
7
8
 
8
9
  def response
9
- components {
10
- div @tag_attributes do
11
- yield_components
12
- end
13
- }
10
+ div html_attributes do
11
+ yield_components
12
+ end
14
13
  end
15
14
 
16
15
  end