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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +8 -0
  3. data/README.md +28 -204
  4. data/Rakefile +32 -0
  5. data/app/concepts/matestack/ui/core/abbr/abbr.haml +2 -2
  6. data/app/concepts/matestack/ui/core/abbr/abbr.rb +3 -2
  7. data/app/concepts/matestack/ui/core/action/action.js +114 -11
  8. data/app/concepts/matestack/ui/core/action/action.rb +41 -13
  9. data/app/concepts/matestack/ui/core/{component/response_dynamic.haml → actionview/dynamic.haml} +2 -3
  10. data/app/concepts/matestack/ui/core/actionview/dynamic.rb +28 -0
  11. data/app/concepts/matestack/ui/core/{component → actionview}/static.haml +0 -0
  12. data/app/concepts/matestack/ui/core/actionview/static.rb +28 -0
  13. data/app/concepts/matestack/ui/core/address/address.haml +2 -2
  14. data/app/concepts/matestack/ui/core/address/address.rb +1 -1
  15. data/app/concepts/matestack/ui/core/app/app.haml +2 -3
  16. data/app/concepts/matestack/ui/core/app/app.js +18 -4
  17. data/app/concepts/matestack/ui/core/app/app.rb +34 -81
  18. data/app/concepts/matestack/ui/core/app/location.js +9 -0
  19. data/app/concepts/matestack/ui/core/app/store.js +35 -6
  20. data/app/concepts/matestack/ui/core/area/area.haml +1 -0
  21. data/app/concepts/matestack/ui/core/area/area.rb +20 -0
  22. data/app/concepts/matestack/ui/core/aside/aside.haml +3 -0
  23. data/app/concepts/matestack/ui/core/aside/aside.rb +5 -0
  24. data/app/concepts/matestack/ui/core/async/async.haml +6 -2
  25. data/app/concepts/matestack/ui/core/async/async.js +64 -8
  26. data/app/concepts/matestack/ui/core/async/async.rb +29 -4
  27. data/app/concepts/matestack/ui/core/async/children_wrapper.haml +2 -0
  28. data/app/concepts/matestack/ui/core/{pg/pg.haml → b/b.haml} +1 -1
  29. data/app/concepts/matestack/ui/core/b/b.rb +5 -0
  30. data/app/concepts/matestack/ui/core/bdi/bdi.haml +5 -0
  31. data/app/concepts/matestack/ui/core/bdi/bdi.rb +4 -0
  32. data/app/concepts/matestack/ui/core/bdo/bdo.haml +5 -0
  33. data/app/concepts/matestack/ui/core/bdo/bdo.rb +11 -0
  34. data/app/concepts/matestack/ui/core/cite/cite.haml +5 -0
  35. data/app/concepts/matestack/ui/core/cite/cite.rb +5 -0
  36. data/app/concepts/matestack/ui/core/code/code.haml +5 -0
  37. data/app/concepts/matestack/ui/core/code/code.rb +5 -0
  38. data/app/concepts/matestack/ui/core/collection/content/content.js +4 -4
  39. data/app/concepts/matestack/ui/core/collection/content/content.rb +2 -2
  40. data/app/concepts/matestack/ui/core/collection/content/page/link/link.rb +4 -2
  41. data/app/concepts/matestack/ui/core/collection/filter/filter.js +3 -3
  42. data/app/concepts/matestack/ui/core/collection/filter/filter.rb +4 -5
  43. data/app/concepts/matestack/ui/core/collection/filter/select/select.haml +10 -0
  44. data/app/concepts/matestack/ui/core/collection/filter/select/select.rb +29 -0
  45. data/app/concepts/matestack/ui/core/collection/helper.rb +14 -6
  46. data/app/concepts/matestack/ui/core/collection/order/order.js +4 -4
  47. data/app/concepts/matestack/ui/core/collection/order/order.rb +4 -5
  48. data/app/concepts/matestack/ui/core/collection/order/toggle/indicator/indicator.rb +6 -5
  49. data/app/concepts/matestack/ui/core/component/anonym-dynamic-component.js +1 -1
  50. data/app/concepts/matestack/ui/core/component/base.rb +424 -0
  51. data/app/concepts/matestack/ui/core/component/children.haml +2 -2
  52. data/app/concepts/matestack/ui/core/component/component.js +1 -55
  53. data/app/concepts/matestack/ui/core/component/dynamic.haml +1 -1
  54. data/app/concepts/matestack/ui/core/component/dynamic.rb +24 -239
  55. data/app/concepts/matestack/ui/core/component/rerender.rb +8 -0
  56. data/app/concepts/matestack/ui/core/component/static.rb +3 -12
  57. data/app/concepts/matestack/ui/core/data/data.haml +5 -0
  58. data/app/concepts/matestack/ui/core/data/data.rb +9 -0
  59. data/app/concepts/matestack/ui/core/datalist/datalist.haml +3 -0
  60. data/app/concepts/matestack/ui/core/datalist/datalist.rb +5 -0
  61. data/app/concepts/matestack/ui/core/dd/dd.haml +5 -0
  62. data/app/concepts/matestack/ui/core/dd/dd.rb +5 -0
  63. data/app/concepts/matestack/ui/core/del/del.haml +5 -0
  64. data/app/concepts/matestack/ui/core/del/del.rb +4 -0
  65. data/app/concepts/matestack/ui/core/dfn/dfn.haml +5 -0
  66. data/app/concepts/matestack/ui/core/dfn/dfn.rb +6 -0
  67. data/app/concepts/matestack/ui/core/dialog/dialog.haml +5 -0
  68. data/app/concepts/matestack/ui/core/dialog/dialog.rb +9 -0
  69. data/app/concepts/matestack/ui/core/dl/dl.haml +5 -0
  70. data/app/concepts/matestack/ui/core/dl/dl.rb +5 -0
  71. data/app/concepts/matestack/ui/core/dt/dt.haml +5 -0
  72. data/app/concepts/matestack/ui/core/dt/dt.rb +5 -0
  73. data/app/concepts/matestack/ui/core/em/em.haml +5 -0
  74. data/app/concepts/matestack/ui/core/em/em.rb +5 -0
  75. data/app/concepts/matestack/ui/core/fieldset/fieldset.haml +5 -0
  76. data/app/concepts/matestack/ui/core/fieldset/fieldset.rb +9 -0
  77. data/app/concepts/matestack/ui/core/figure/figure.haml +3 -0
  78. data/app/concepts/matestack/ui/core/figure/figure.rb +5 -0
  79. data/app/concepts/matestack/ui/core/form/checkbox/checkbox.rb +79 -0
  80. data/app/concepts/matestack/ui/core/form/form.js +266 -96
  81. data/app/concepts/matestack/ui/core/form/form.rb +29 -2
  82. data/app/concepts/matestack/ui/core/form/has_errors.rb +54 -0
  83. data/app/concepts/matestack/ui/core/form/has_input_html_attributes.rb +13 -0
  84. data/app/concepts/matestack/ui/core/form/input/input.rb +39 -52
  85. data/app/concepts/matestack/ui/core/form/radio/radio.rb +71 -0
  86. data/app/concepts/matestack/ui/core/form/select/select.haml +9 -76
  87. data/app/concepts/matestack/ui/core/form/select/select.rb +64 -49
  88. data/app/concepts/matestack/ui/core/form/submit/submit.rb +4 -1
  89. data/app/concepts/matestack/ui/core/form/textarea/textarea.rb +28 -0
  90. data/app/concepts/matestack/ui/core/form/utils.rb +47 -0
  91. data/app/concepts/matestack/ui/core/heading/heading.rb +2 -0
  92. data/app/concepts/matestack/ui/core/iframe/iframe.haml +5 -0
  93. data/app/concepts/matestack/ui/core/iframe/iframe.rb +14 -0
  94. data/app/concepts/matestack/ui/core/img/img.rb +1 -0
  95. data/app/concepts/matestack/ui/core/input/input.haml +1 -3
  96. data/app/concepts/matestack/ui/core/input/input.rb +8 -0
  97. data/app/concepts/matestack/ui/core/ins/ins.haml +5 -0
  98. data/app/concepts/matestack/ui/core/ins/ins.rb +10 -0
  99. data/app/concepts/matestack/ui/core/isolated/children_wrapper.haml +2 -0
  100. data/app/concepts/matestack/ui/core/isolated/isolated.haml +10 -0
  101. data/app/concepts/matestack/ui/core/isolated/isolated.js +108 -0
  102. data/app/concepts/matestack/ui/core/isolated/isolated.rb +59 -0
  103. data/app/concepts/matestack/ui/core/js/core.js +43 -19
  104. data/app/concepts/matestack/ui/core/kbd/kbd.haml +5 -0
  105. data/app/concepts/matestack/ui/core/kbd/kbd.rb +4 -0
  106. data/app/concepts/matestack/ui/core/label/label.rb +6 -1
  107. data/app/concepts/matestack/ui/core/legend/legend.haml +5 -0
  108. data/app/concepts/matestack/ui/core/legend/legend.rb +5 -0
  109. data/app/concepts/matestack/ui/core/link/link.rb +7 -6
  110. data/app/concepts/matestack/ui/core/{absolute/absolute.haml → map/map.haml} +1 -1
  111. data/app/concepts/matestack/ui/core/map/map.rb +11 -0
  112. data/app/concepts/matestack/ui/core/mark/mark.haml +5 -0
  113. data/app/concepts/matestack/ui/core/mark/mark.rb +4 -0
  114. data/app/concepts/matestack/ui/core/meter/meter.haml +4 -0
  115. data/app/concepts/matestack/ui/core/meter/meter.rb +14 -0
  116. data/app/concepts/matestack/ui/core/noscript/noscript.haml +5 -0
  117. data/app/concepts/matestack/ui/core/noscript/noscript.rb +5 -0
  118. data/app/concepts/matestack/ui/core/object/object.haml +1 -0
  119. data/app/concepts/matestack/ui/core/object/object.rb +15 -0
  120. data/app/concepts/matestack/ui/core/onclick/onclick.js +2 -3
  121. data/app/concepts/matestack/ui/core/onclick/onclick.rb +1 -0
  122. data/app/concepts/matestack/ui/core/optgroup/optgroup.haml +3 -0
  123. data/app/concepts/matestack/ui/core/optgroup/optgroup.rb +10 -0
  124. data/app/concepts/matestack/ui/core/option/option.haml +5 -0
  125. data/app/concepts/matestack/ui/core/option/option.rb +12 -0
  126. data/app/concepts/matestack/ui/core/output/output.haml +5 -0
  127. data/app/concepts/matestack/ui/core/output/output.rb +11 -0
  128. data/app/concepts/matestack/ui/core/page/{content.js → content/content.js} +8 -2
  129. data/app/concepts/matestack/ui/core/page/content/content.rb +29 -0
  130. data/app/concepts/matestack/ui/core/page/page.haml +3 -9
  131. data/app/concepts/matestack/ui/core/page/page.rb +15 -160
  132. data/app/concepts/matestack/ui/core/param/param.haml +1 -0
  133. data/app/concepts/matestack/ui/core/param/param.rb +10 -0
  134. data/app/concepts/matestack/ui/core/picture/picture.haml +3 -0
  135. data/app/concepts/matestack/ui/core/picture/picture.rb +4 -0
  136. data/app/concepts/matestack/ui/core/plain/plain.rb +1 -1
  137. data/app/concepts/matestack/ui/core/pre/pre.haml +5 -0
  138. data/app/concepts/matestack/ui/core/pre/pre.rb +5 -0
  139. data/app/concepts/matestack/ui/core/progress/progress.rb +1 -1
  140. data/app/concepts/matestack/ui/core/q/q.haml +5 -0
  141. data/app/concepts/matestack/ui/core/q/q.rb +11 -0
  142. data/app/concepts/matestack/ui/core/rp/rp.haml +5 -0
  143. data/app/concepts/matestack/ui/core/rp/rp.rb +5 -0
  144. data/app/concepts/matestack/ui/core/rt/rt.haml +5 -0
  145. data/app/concepts/matestack/ui/core/rt/rt.rb +5 -0
  146. data/app/concepts/matestack/ui/core/ruby/ruby.haml +5 -0
  147. data/app/concepts/matestack/ui/core/ruby/ruby.rb +5 -0
  148. data/app/concepts/matestack/ui/core/s/s.haml +5 -0
  149. data/app/concepts/matestack/ui/core/s/s.rb +6 -0
  150. data/app/concepts/matestack/ui/core/samp/samp.haml +5 -0
  151. data/app/concepts/matestack/ui/core/samp/samp.rb +4 -0
  152. data/app/concepts/matestack/ui/core/slot/slot.rb +2 -2
  153. data/app/concepts/matestack/ui/core/sup/sup.haml +5 -0
  154. data/app/concepts/matestack/ui/core/sup/sup.rb +5 -0
  155. data/app/concepts/matestack/ui/core/template/template.haml +3 -0
  156. data/app/concepts/matestack/ui/core/template/template.rb +4 -0
  157. data/app/concepts/matestack/ui/core/textarea/textarea.haml +2 -0
  158. data/app/concepts/matestack/ui/core/textarea/textarea.rb +10 -0
  159. data/app/concepts/matestack/ui/core/toggle/toggle.haml +2 -0
  160. data/app/concepts/matestack/ui/core/toggle/toggle.js +71 -0
  161. data/app/concepts/matestack/ui/core/toggle/toggle.rb +14 -0
  162. data/app/concepts/matestack/ui/core/transition/transition.js +18 -2
  163. data/app/concepts/matestack/ui/core/transition/transition.rb +2 -1
  164. data/app/concepts/matestack/ui/core/u/u.haml +5 -0
  165. data/app/concepts/matestack/ui/core/u/u.rb +6 -0
  166. data/app/concepts/matestack/ui/core/unescaped/unescaped.rb +7 -0
  167. data/app/concepts/matestack/ui/core/var/var.haml +5 -0
  168. data/app/concepts/matestack/ui/core/var/var.rb +4 -0
  169. data/app/concepts/matestack/ui/core/video/video.haml +3 -1
  170. data/app/concepts/matestack/ui/core/video/video.rb +17 -1
  171. data/app/concepts/matestack/ui/core/view/view.haml +1 -2
  172. data/app/concepts/matestack/ui/core/view/view.rb +27 -2
  173. data/app/concepts/matestack/ui/core/wbr/wbr.haml +1 -0
  174. data/app/concepts/matestack/ui/core/wbr/wbr.rb +4 -0
  175. data/app/concepts/matestack/ui/core/youtube/youtube.rb +1 -1
  176. data/app/helpers/matestack/ui/core/application_helper.rb +89 -17
  177. data/app/javascript/matestack-ui-core/index.js +22 -0
  178. data/app/javascript/matestack-ui-core/styles/index.scss +5 -0
  179. data/app/javascript/packs/matestack-ui-core.js +8 -0
  180. data/app/lib/matestack/ui/component.rb +1 -0
  181. data/app/lib/matestack/ui/core/has_view_context.rb +14 -0
  182. data/app/lib/matestack/ui/core/html_attributes.rb +43 -0
  183. data/app/lib/matestack/ui/core/properties.rb +88 -0
  184. data/app/lib/matestack/ui/core/rendering/default_renderer_class_determiner.rb +33 -0
  185. data/app/lib/matestack/ui/core/rendering/main_renderer.rb +199 -0
  186. data/app/lib/matestack/ui/dynamic_actionview_component.rb +1 -0
  187. data/app/lib/matestack/ui/isolated_component.rb +1 -0
  188. data/app/lib/matestack/ui/static_actionview_component.rb +1 -0
  189. data/app/lib/matestack/ui/vue_js_component.rb +1 -0
  190. data/config/routes.rb +0 -1
  191. data/lib/generators/matestack/app/USAGE +21 -0
  192. data/lib/generators/matestack/app/app_generator.rb +25 -0
  193. data/lib/generators/{matestack_app/templates/matestack_app_controller.erb → matestack/app/templates/app/controllers/%file_name%_controller.rb.tt} +0 -2
  194. data/lib/generators/matestack/app/templates/app/matestack/apps/%file_name%.rb.tt +28 -0
  195. data/lib/generators/matestack/component/USAGE +20 -0
  196. data/lib/generators/matestack/component/component_generator.rb +29 -0
  197. data/lib/generators/{matestack_component/templates/matestack_component.haml.erb → matestack/component/templates/app/matestack/components/%namespace%/%file_name%.haml.tt} +0 -0
  198. data/lib/generators/{matestack_component/templates/matestack_component.js.erb → matestack/component/templates/app/matestack/components/%namespace%/%file_name%.js.tt} +2 -2
  199. data/lib/generators/matestack/component/templates/app/matestack/components/%namespace%/%file_name%.rb.tt +11 -0
  200. data/lib/generators/{matestack_component/templates/matestack_component.scss.erb → matestack/component/templates/app/matestack/components/%namespace%/%file_name%.scss.tt} +0 -0
  201. data/lib/generators/matestack/core/component/USAGE +16 -0
  202. data/lib/generators/matestack/core/component/component_generator.rb +23 -0
  203. data/lib/generators/matestack/core/component/templates/app/concepts/matestack/ui/core/%file_name%/%file_name%.haml.tt +5 -0
  204. data/lib/generators/matestack/core/component/templates/app/concepts/matestack/ui/core/%file_name%/%file_name%.rb.tt +4 -0
  205. data/lib/generators/matestack/core/component/templates/docs/components/%file_name%.md.tt +45 -0
  206. data/lib/generators/matestack/core/component/templates/spec/usage/components/%file_name%_spec.rb +31 -0
  207. data/lib/generators/matestack/page/USAGE +28 -0
  208. data/lib/generators/matestack/page/page_generator.rb +54 -0
  209. data/lib/generators/matestack/page/templates/app/matestack/pages/%app_name%/%namespace%/%file_name%.rb.tt +29 -0
  210. data/lib/matestack/ui/core.rb +5 -2
  211. data/lib/matestack/ui/core/cell.rb +31 -0
  212. data/lib/matestack/ui/core/component/registry.rb +47 -0
  213. data/lib/matestack/ui/core/components.rb +267 -0
  214. data/lib/matestack/ui/core/dsl.rb +6 -0
  215. data/lib/matestack/ui/core/engine.rb +16 -0
  216. data/lib/matestack/ui/core/version.rb +1 -1
  217. data/vendor/assets/javascripts/dist/manifest.json +18 -0
  218. data/vendor/assets/javascripts/dist/manifest.json.br +0 -0
  219. data/vendor/assets/javascripts/dist/manifest.json.gz +0 -0
  220. data/vendor/assets/javascripts/dist/matestack-ui-core.css +3 -0
  221. data/vendor/assets/javascripts/dist/matestack-ui-core.css.map +1 -0
  222. data/vendor/assets/javascripts/dist/matestack-ui-core.js +17060 -0
  223. data/vendor/assets/javascripts/dist/matestack-ui-core.js.map +1 -0
  224. data/vendor/assets/javascripts/dist/matestack-ui-core.min.css +0 -0
  225. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js +3 -0
  226. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.LICENSE.txt +18 -0
  227. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.gz +0 -0
  228. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map +1 -0
  229. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map.gz +0 -0
  230. data/vendor/assets/javascripts/matestack-ui-core.js.erb +2 -0
  231. data/vendor/assets/stylesheets/dist +1 -0
  232. data/vendor/assets/stylesheets/matestack-ui-core.css.erb +2 -0
  233. metadata +188 -89
  234. data/MIT-LICENSE +0 -20
  235. data/app/concepts/matestack/ui/core/absolute/absolute.rb +0 -17
  236. data/app/concepts/matestack/ui/core/component/response.haml +0 -2
  237. data/app/concepts/matestack/ui/core/component/response_dynamic_without_rerender.haml +0 -3
  238. data/app/concepts/matestack/ui/core/form/inline/inline.haml +0 -6
  239. data/app/concepts/matestack/ui/core/form/inline/inline.rb +0 -9
  240. data/app/concepts/matestack/ui/core/form/input/input.haml +0 -27
  241. data/app/concepts/matestack/ui/core/html/html.haml +0 -3
  242. data/app/concepts/matestack/ui/core/html/html.js +0 -10
  243. data/app/concepts/matestack/ui/core/html/html.rb +0 -17
  244. data/app/concepts/matestack/ui/core/isolate/isolate.haml +0 -2
  245. data/app/concepts/matestack/ui/core/isolate/isolate.rb +0 -11
  246. data/app/concepts/matestack/ui/core/page/content.haml +0 -7
  247. data/app/concepts/matestack/ui/core/page/content.rb +0 -5
  248. data/app/concepts/matestack/ui/core/pg/pg.rb +0 -5
  249. data/app/concepts/matestack/ui/core/view/view.js +0 -42
  250. data/app/lib/matestack/ui/core/app_node.rb +0 -53
  251. data/app/lib/matestack/ui/core/component_node.rb +0 -73
  252. data/app/lib/matestack/ui/core/page_node.rb +0 -96
  253. data/app/lib/matestack/ui/core/to_cell.rb +0 -129
  254. data/lib/generators/matestack_app/USAGE +0 -21
  255. data/lib/generators/matestack_app/matestack_app_generator.rb +0 -26
  256. data/lib/generators/matestack_app/templates/matestack_app.erb +0 -26
  257. data/lib/generators/matestack_component/USAGE +0 -20
  258. data/lib/generators/matestack_component/matestack_component_generator.rb +0 -30
  259. data/lib/generators/matestack_component/templates/matestack_component.rb.erb +0 -13
  260. data/lib/generators/matestack_page/USAGE +0 -28
  261. data/lib/generators/matestack_page/matestack_page_generator.rb +0 -41
  262. data/lib/generators/matestack_page/templates/matestack_page.erb +0 -15
  263. data/vendor/assets/javascripts/manifest.json +0 -4
  264. data/vendor/assets/javascripts/matestack-ui-core.js +0 -15309
  265. data/vendor/assets/javascripts/matestack-ui-core.js.map +0 -1
@@ -0,0 +1,3 @@
1
+ %aside{@tag_attributes}
2
+ - if block_given?
3
+ = yield
@@ -0,0 +1,5 @@
1
+ module Matestack::Ui::Core::Aside
2
+ class Aside < Matestack::Ui::Core::Component::Static
3
+
4
+ end
5
+ end
@@ -1,2 +1,6 @@
1
- %div{@tag_attributes}
2
- = yield
1
+ %component{dynamic_tag_attributes}
2
+ %div{class: "matestack-async-component-container", "v-bind:class": "{ 'loading': loading === true }"}
3
+ %div{class: "matestack-async-component-wrapper", "v-if": "asyncTemplate == null", "v-bind:class": "{ 'loading': loading === true }"}
4
+ = render_content
5
+ %div{class: "matestack-async-component-wrapper", "v-if": "asyncTemplate != null", "v-bind:class": "{ 'loading': loading === true }"}
6
+ %v-runtime-template{":template":"asyncTemplate"}
@@ -1,13 +1,17 @@
1
1
  import Vue from 'vue/dist/vue.esm'
2
- import matestackEventHub from 'js/event-hub'
3
- import componentMixin from 'component/component'
2
+ import axios from 'axios'
3
+ import VRuntimeTemplate from "v-runtime-template"
4
+ import matestackEventHub from '../js/event-hub'
5
+ import componentMixin from '../component/component'
4
6
 
5
7
  const componentDef = {
6
8
  mixins: [componentMixin],
7
9
  data: function(){
8
10
  return {
11
+ asyncTemplate: null,
9
12
  showing: true,
10
- hide_after_timeout: null,
13
+ loading: false,
14
+ hideAfterTimeout: null,
11
15
  event: {
12
16
  data: {}
13
17
  }
@@ -27,7 +31,7 @@ const componentDef = {
27
31
  }
28
32
  }
29
33
  if(this.componentConfig["hide_after"] != undefined){
30
- self.hide_after_timeout = setTimeout(function () {
34
+ self.hideAfterTimeout = setTimeout(function () {
31
35
  self.hide()
32
36
  }, parseInt(this.componentConfig["hide_after"]));
33
37
  }
@@ -38,16 +42,53 @@ const componentDef = {
38
42
  },
39
43
  startDefer: function(){
40
44
  const self = this
45
+ self.loading = true;
41
46
  setTimeout(function () {
42
47
  self.rerender()
43
48
  }, parseInt(this.componentConfig["defer"]));
49
+ },
50
+ rerender: function(){
51
+ var self = this;
52
+ self.loading = true;
53
+ axios({
54
+ method: "get",
55
+ url: location.pathname + location.search,
56
+ headers: {
57
+ 'X-CSRF-Token': document.getElementsByName("csrf-token")[0].getAttribute('content')
58
+ },
59
+ params: {
60
+ "component_key": self.componentConfig["component_key"],
61
+ "component_class": self.componentConfig["parent_class"]
62
+ }
63
+ })
64
+ .then(function(response){
65
+ var tmp_dom_element = document.createElement('div');
66
+ tmp_dom_element.innerHTML = response['data'];
67
+ var template = tmp_dom_element.querySelector('#' + self.componentConfig["component_key"]).outerHTML;
68
+ self.loading = false;
69
+ self.asyncTemplate = template;
70
+ })
71
+ .catch(function(error){
72
+ console.log(error)
73
+ matestackEventHub.$emit('async_rerender_error', { id: self.componentConfig["component_key"] })
74
+ })
44
75
  }
45
76
  },
46
77
  created: function () {
47
78
  const self = this
48
- matestackEventHub.$on(this.componentConfig["rerender_on"], self.rerender)
49
- matestackEventHub.$on(this.componentConfig["show_on"], self.show)
50
- matestackEventHub.$on(this.componentConfig["hide_on"], self.hide)
79
+ if(this.componentConfig["show_on"] != undefined){
80
+ this.showing = false
81
+ var show_events = this.componentConfig["show_on"].split(",")
82
+ show_events.forEach(show_event => matestackEventHub.$on(show_event.trim(), self.show));
83
+ }
84
+ if(this.componentConfig["hide_on"] != undefined){
85
+ var hide_events = this.componentConfig["hide_on"].split(",")
86
+ hide_events.forEach(hide_event => matestackEventHub.$on(hide_event.trim(), self.hide));
87
+ }
88
+ if(this.componentConfig["rerender_on"] != undefined){
89
+ var rerender_events = this.componentConfig["rerender_on"].split(",")
90
+ rerender_events.forEach(rerender_event => matestackEventHub.$on(rerender_event.trim(), self.rerender));
91
+ }
51
92
  if(this.componentConfig["show_on"] != undefined){
52
93
  this.showing = false
53
94
  }
@@ -64,11 +105,26 @@ const componentDef = {
64
105
  },
65
106
  beforeDestroy: function() {
66
107
  const self = this
67
- clearTimeout(self.hide_after_timeout)
108
+ clearTimeout(self.hideAfterTimeout)
68
109
  matestackEventHub.$off(this.componentConfig["rerender_on"], self.rerender);
69
110
  matestackEventHub.$off(this.componentConfig["show_on"], self.show);
70
111
  matestackEventHub.$off(this.componentConfig["hide_on"], self.hide);
112
+ if(this.componentConfig["show_on"] != undefined){
113
+ var shown_events = this.componentConfig["show_on"].split(",")
114
+ shown_events.forEach(show_event => matestackEventHub.$off(show_event.trim(), self.show));
115
+ }
116
+ if(this.componentConfig["hide_on"] != undefined){
117
+ var hiden_events = this.componentConfig["hide_on"].split(",")
118
+ hiden_events.forEach(hide_event => matestackEventHub.$off(hide_event.trim(), self.hide));
119
+ }
120
+ if(this.componentConfig["rerender_on"] != undefined){
121
+ var rerender_events = this.componentConfig["rerender_on"].split(",")
122
+ rerender_events.forEach(rerender_event => matestackEventHub.$off(rerender_event.trim(), self.rerender));
123
+ }
71
124
  },
125
+ components: {
126
+ VRuntimeTemplate: VRuntimeTemplate
127
+ }
72
128
  }
73
129
 
74
130
  let component = Vue.component('matestack-ui-core-async', componentDef)
@@ -1,12 +1,37 @@
1
1
  module Matestack::Ui::Core::Async
2
- class Async < Matestack::Ui::Core::Component::Dynamic
2
+ class Async < Matestack::Ui::Core::Component::Rerender
3
+ vue_js_component_name "matestack-ui-core-async"
3
4
 
4
- def setup
5
- @rerender = true
5
+ optional :id # will be required in 1.0.0
6
+
7
+ def initialize(*args)
8
+ super
9
+ ActiveSupport::Deprecation.warn(
10
+ 'Calling async components without id is deprecated. Instead provide a unique id for async components.'
11
+ ) if id.blank?
12
+ @component_config[:component_key] = id || "async_#{Digest::SHA256.hexdigest(caller[3])}"
13
+ if @included_config.present? && @included_config[:isolated_parent_class].present?
14
+ @component_config[:parent_class] = @included_config[:isolated_parent_class]
15
+ end
6
16
  @tag_attributes.merge!({
7
- "v-if": "showing"
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{@tag_attributes.merge(class: "matestack-async-component-root")}
2
+ =yield
@@ -1,4 +1,4 @@
1
- %p{@tag_attributes}
1
+ %b{@tag_attributes}
2
2
  - if options[:text].nil? && block_given?
3
3
  = yield
4
4
  - else
@@ -0,0 +1,5 @@
1
+ module Matestack::Ui::Core::B
2
+ class B < Matestack::Ui::Core::Component::Static
3
+
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ %bdi{@tag_attributes}
2
+ - if options[:text].blank? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,4 @@
1
+ module Matestack::Ui::Core::Bdi
2
+ class Bdi < Matestack::Ui::Core::Component::Static
3
+ end
4
+ end
@@ -0,0 +1,5 @@
1
+ %bdo{@tag_attributes}
2
+ - if options[:text].blank? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,11 @@
1
+ module Matestack::Ui::Core::Bdo
2
+ class Bdo < Matestack::Ui::Core::Component::Static
3
+ requires :dir
4
+
5
+ def setup
6
+ @tag_attributes.merge!({
7
+ "dir": options[:dir]
8
+ })
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ %cite{@tag_attributes}
2
+ - if options[:text].nil? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,5 @@
1
+ module Matestack::Ui::Core::Cite
2
+ class Cite < Matestack::Ui::Core::Component::Static
3
+
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ %code{@tag_attributes}
2
+ - if options[:text].nil? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,5 @@
1
+ module Matestack::Ui::Core::Code
2
+ class Code < Matestack::Ui::Core::Component::Static
3
+
4
+ end
5
+ end
@@ -1,8 +1,8 @@
1
1
  import Vue from 'vue/dist/vue.esm'
2
- import matestackEventHub from 'js/event-hub'
3
- import queryParamsHelper from 'js/helpers/query-params-helper'
4
- import componentMixin from 'component/component'
5
- import asyncMixin from 'async/async'
2
+ import matestackEventHub from '../../js/event-hub'
3
+ import queryParamsHelper from '../../js/helpers/query-params-helper'
4
+ import componentMixin from '../../component/component'
5
+ import asyncMixin from '../../async/async'
6
6
 
7
7
  const componentDef = {
8
8
  mixins: [componentMixin, asyncMixin],
@@ -1,8 +1,8 @@
1
1
  module Matestack::Ui::Core::Collection::Content
2
- class Content < Matestack::Ui::Core::Component::Dynamic
2
+ class Content < Matestack::Ui::Core::Component::Rerender
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
 
@@ -1,5 +1,7 @@
1
- module Matestack::Ui::Core::Collection::Content::Page::Link
2
- class Link < Matestack::Ui::Core::Component::Static
1
+ module Matestack::Ui::Core::Collection::Content::Page
2
+ module Link
3
+ class Link::Link < Matestack::Ui::Core::Component::Static
3
4
 
5
+ end
4
6
  end
5
7
  end
@@ -1,7 +1,7 @@
1
1
  import Vue from 'vue/dist/vue.esm'
2
- import matestackEventHub from 'js/event-hub'
3
- import queryParamsHelper from 'js/helpers/query-params-helper'
4
- import componentMixin from 'component/component'
2
+ import matestackEventHub from '../../js/event-hub'
3
+ import queryParamsHelper from '../../js/helpers/query-params-helper'
4
+ import componentMixin from '../../component/component'
5
5
 
6
6
  const componentDef = {
7
7
  mixins: [componentMixin],
@@ -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 @tag_attributes do
11
+ yield_components
12
+ end
14
13
  end
15
14
 
16
15
  end
@@ -0,0 +1,10 @@
1
+ - if options[:type] == :dropdown
2
+
3
+ %select{@tag_attributes}
4
+ %option{disabled: true}= options[:placeholder]
5
+ - if @options[:options].is_a?(Hash)
6
+ - @options[:options].each do |key, value|
7
+ %option{value: key}=value
8
+ - if @options[:options].is_a?(Array)
9
+ - @options[:options].each do |option|
10
+ %option{value: option}=option
@@ -0,0 +1,29 @@
1
+ module Matestack::Ui::Core::Collection::Filter::Select
2
+ class Select < Matestack::Ui::Core::Component::Static
3
+
4
+ def setup
5
+ if options[:type].nil?
6
+ options[:type] = :dropdown #nothing else supported at the moment
7
+ end
8
+ @tag_attributes.merge!({
9
+ "v-model#{'.number' if options[:type] == :number}": input_key,
10
+ type: options[:type],
11
+ class: options[:class],
12
+ id: component_id,
13
+ "@keyup.enter": "submitFilter()",
14
+ "@change": "$forceUpdate()",
15
+ ref: "filter.#{attr_key}",
16
+ placeholder: options[:placeholder]
17
+ })
18
+ end
19
+
20
+ def input_key
21
+ 'filter["' + options[:key].to_s + '"]'
22
+ end
23
+
24
+ def attr_key
25
+ return options[:key].to_s
26
+ end
27
+
28
+ end
29
+ end
@@ -1,6 +1,6 @@
1
1
  module Matestack::Ui::Core::Collection
2
2
 
3
- CollectionConfig = Struct.new(:id, :init_offset, :init_limit, :filtered_count, :base_count, :data, :context) do
3
+ CollectionConfig = Struct.new(:id, :init_offset, :init_limit, :filtered_count, :base_count, :data, :params) do
4
4
 
5
5
  def paginated_data
6
6
  resulting_data = data
@@ -11,11 +11,11 @@ module Matestack::Ui::Core::Collection
11
11
  end
12
12
 
13
13
  def get_collection_offset
14
- (context[:params]["#{id}-offset".to_sym] ||= init_offset).to_i
14
+ (params["#{id}-offset".to_sym] ||= init_offset).to_i
15
15
  end
16
16
 
17
17
  def get_collection_limit
18
- (context[:params]["#{id}-limit".to_sym] ||= init_limit).to_i
18
+ (params["#{id}-limit".to_sym] ||= init_limit).to_i
19
19
  end
20
20
 
21
21
  def pages
@@ -63,7 +63,7 @@ module Matestack::Ui::Core::Collection
63
63
 
64
64
  def get_collection_filter collection_id, key=nil
65
65
  filter_hash = {}
66
- context[:params].each do |param_key, param_value|
66
+ controller_params.each do |param_key, param_value|
67
67
  if param_key.start_with?("#{collection_id}-filter-")
68
68
  param_key.gsub("#{collection_id}-filter-", "")
69
69
  filter_hash[param_key.gsub("#{collection_id}-filter-", "").to_sym] = param_value
@@ -78,7 +78,7 @@ module Matestack::Ui::Core::Collection
78
78
 
79
79
  def get_collection_order collection_id, key=nil
80
80
  order_hash = {}
81
- context[:params].each do |param_key, param_value|
81
+ controller_params.each do |param_key, param_value|
82
82
  if param_key.start_with?("#{collection_id}-order-")
83
83
  param_key.gsub("#{collection_id}-order-", "")
84
84
  order_hash[param_key.gsub("#{collection_id}-order-", "").to_sym] = param_value
@@ -101,7 +101,7 @@ module Matestack::Ui::Core::Collection
101
101
  filtered_count,
102
102
  base_count,
103
103
  data,
104
- context
104
+ controller_params,
105
105
  )
106
106
 
107
107
  @collections[id.to_sym] = collection_config
@@ -109,5 +109,13 @@ module Matestack::Ui::Core::Collection
109
109
  return collection_config
110
110
  end
111
111
 
112
+ # try to get params from either controller params, when called in a rails legacy view or
113
+ # from cells context when called in a matestack app/page/component
114
+ def controller_params
115
+ return context[:params] if defined? context
116
+ return params.to_unsafe_h if defined? params
117
+ raise 'collection component is missing access to params or context'
118
+ end
119
+
112
120
  end
113
121
  end
@@ -1,7 +1,7 @@
1
1
  import Vue from 'vue/dist/vue.esm'
2
- import matestackEventHub from 'js/event-hub'
3
- import queryParamsHelper from 'js/helpers/query-params-helper'
4
- import componentMixin from 'component/component'
2
+ import matestackEventHub from '../../js/event-hub'
3
+ import queryParamsHelper from '../../js/helpers/query-params-helper'
4
+ import componentMixin from '../../component/component'
5
5
 
6
6
  const componentDef = {
7
7
  mixins: [componentMixin],
@@ -16,7 +16,7 @@ const componentDef = {
16
16
  this.ordering[key] = "asc"
17
17
  } else if (this.ordering[key] == "asc") {
18
18
  this.ordering[key] = "desc"
19
- } else if (this.ordering[key] = "desc") {
19
+ } else if (this.ordering[key] == "desc") {
20
20
  this.ordering[key] = undefined
21
21
  }
22
22
  var url;