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
@@ -1,20 +0,0 @@
1
- Copyright 2018 Jonas Jabari
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,17 +0,0 @@
1
- module Matestack::Ui::Core::Absolute
2
- class Absolute < Matestack::Ui::Core::Component::Static
3
-
4
- def setup
5
- style = "position: absolute;"
6
- style << " top: #{options[:top]}px;" if options[:top]
7
- style << " left: #{options[:left]}px;" if options[:left]
8
- style << " right: #{options[:right]}px;" if options[:right]
9
- style << " bottom: #{options[:bottom]}px;" if options[:bottom]
10
- style << " z-index: #{options[:z]};" if options[:z]
11
- @tag_attributes.merge!({
12
- style: style
13
- })
14
- end
15
-
16
- end
17
- end
@@ -1,2 +0,0 @@
1
- - @cells.each do |key, cell|
2
- = cell.call(:show)
@@ -1,3 +0,0 @@
1
- %component{dynamic_tag_attributes}
2
- - @cells.each do |key, cell|
3
- = cell.call(:show)
@@ -1,6 +0,0 @@
1
- %div{"v-if": "!showInlineForm", "@click": "launchInlineForm(\"#{options[:key]}\", \"#{options[:value]}\")"}
2
- = options[:value]
3
- %div{"v-if": "showInlineForm"}
4
- %input{"ref": "inlineinput", "v-model": input_key, "@blur": "perform", "@keyup.esc": "closeInlineForm", class: options[:class], id: component_id}
5
- - if block_given?
6
- = yield
@@ -1,9 +0,0 @@
1
- module Matestack::Ui::Core::Form::Inline
2
- class Inline < Matestack::Ui::Core::Component::Static
3
-
4
- def input_key
5
- 'data["' + options[:key].to_s + '"]'
6
- end
7
-
8
- end
9
- end
@@ -1,27 +0,0 @@
1
- - if options[:label]
2
- %label=options[:label]
3
-
4
- - if [:text, :number, :email, :date, :password].include?(options[:type])
5
- %input{@tag_attributes,
6
- "v-model#{'.number' if options[:type] == :number}": input_key,
7
- type: options[:type],
8
- "@change": "inputChanged(\"#{attr_key}\")",
9
- ref: "input.#{attr_key}",
10
- placeholder: options[:placeholder],
11
- "init-value": init_value}
12
- %span{class: "errors", "v-if": error_key }
13
- %span{class: "error", "v-for": "error in #{error_key}"}
14
- {{ error }}
15
-
16
- - if options[:type] == :textarea
17
- %textarea{@tag_attributes,
18
- "v-model": input_key,
19
- "@change": "inputChanged(\"#{attr_key}\")",
20
- ref: "input.#{attr_key}",
21
- placeholder: options[:placeholder],
22
- "init-value": init_value,
23
- rows: options[:rows],
24
- cols: options[:cols]}
25
- %span{class: "errors", "v-if": error_key }
26
- %span{class: "error", "v-for": "error in #{error_key}"}
27
- {{ error }}
@@ -1,3 +0,0 @@
1
- %div{"id": custom_id, "data-matestack-id": component_id}
2
- = include_partial do
3
- = yield
@@ -1,10 +0,0 @@
1
- import Vue from 'vue/dist/vue.esm'
2
- import componentMixin from 'component/component'
3
-
4
- const componentDef = {
5
- mixins: [componentMixin]
6
- }
7
-
8
- let component = Vue.component('matestack-ui-core-html', componentDef)
9
-
10
- export default component
@@ -1,17 +0,0 @@
1
- require_dependency "cell/partial"
2
-
3
- module Matestack::Ui::Core::Html
4
- class Html < Matestack::Ui::Core::Component::Dynamic
5
-
6
- include Cell::ViewModel::Partial
7
-
8
- view_paths << "#{::Rails.root}/app/views"
9
-
10
- def include_partial(&block)
11
- render partial: "#{options[:path]}" do
12
- capture(&block)
13
- end
14
- end
15
-
16
- end
17
- end
@@ -1,2 +0,0 @@
1
- - @children_cells.each do |key, cell|
2
- = cell.call(:show)
@@ -1,11 +0,0 @@
1
- module Matestack::Ui::Core::Isolate
2
- class Isolate < Matestack::Ui::Core::Component::Static
3
-
4
- def setup
5
- @component_key = @component_key + "__" + @argument.to_s
6
- @component_key = @component_key + "(" + @cached_params.to_json + ")" if @cached_params.present?
7
- @component_config[:component_key] = @component_key
8
- end
9
-
10
- end
11
- end
@@ -1,7 +0,0 @@
1
- %div{"class": "matestack_page"}
2
- %div{"v-if": "asyncPageTemplate == null"}
3
- %div{"class": "matestack_page_content"}
4
- - @children_cells.each do |key, cell|
5
- = cell.call(:show)
6
- %div{"v-if": "asyncPageTemplate != null"}
7
- %v-runtime-template{":template":"asyncPageTemplate"}
@@ -1,5 +0,0 @@
1
- module Matestack::Ui::Core::Page
2
- class Content < Matestack::Ui::Core::Component::Dynamic
3
-
4
- end
5
- end
@@ -1,5 +0,0 @@
1
- module Matestack::Ui::Core::Pg
2
- class Pg < Matestack::Ui::Core::Component::Static
3
-
4
- end
5
- end
@@ -1,42 +0,0 @@
1
- import Vue from 'vue/dist/vue.esm'
2
-
3
- import matestackEventHub from 'js/event-hub'
4
-
5
- import componentMixin from 'component/component'
6
-
7
- const componentDef = {
8
- mixins: [componentMixin],
9
- data: function(){
10
- return {
11
- showing: false
12
- }
13
- },
14
- methods: {
15
- show: function(){
16
- this.showing = true
17
- },
18
- hide: function(){
19
- this.showing = false
20
- }
21
- },
22
- created: function () {
23
- const self = this
24
- matestackEventHub.$on(this.componentConfig["show"], self.show)
25
- matestackEventHub.$on(this.componentConfig["hide"], self.hide)
26
- if(this.componentConfig["init"] == "show"){
27
- this.showing = true
28
- }
29
- if(this.componentConfig["init"] == "hide"){
30
- this.showing = false
31
- }
32
- },
33
- beforeDestroy: function() {
34
- const self = this
35
- matestackEventHub.$off(this.componentConfig["show"], self.show);
36
- matestackEventHub.$off(this.componentConfig["hide"], self.hide);
37
- },
38
- }
39
-
40
- let component = Vue.component('matestack-ui-core-view', componentDef)
41
-
42
- export default componentDef
@@ -1,53 +0,0 @@
1
- module Matestack::Ui::Core
2
- class AppNode
3
-
4
- def self.build(app_instance, &block)
5
- node = AppNode.new(app_instance)
6
- node.instance_eval(&block)
7
- node.hash
8
- end
9
-
10
- attr_reader :hash
11
-
12
- def initialize(app_instance)
13
- @hash = {}
14
- @node_start_id = 0
15
- @app_instance = app_instance
16
- app_instance.instance_variables.each do |app_instance_var_key|
17
- self.instance_variable_set(app_instance_var_key, app_instance.instance_variable_get(app_instance_var_key))
18
- end
19
- end
20
-
21
- def method_missing meth, *args, &block
22
- begin
23
- @app_instance.send(meth, *args, &block)
24
- rescue
25
- node_id = @node_start_id + 1
26
- @node_start_id = node_id
27
- current_node = "#{meth}_#{@node_start_id}"
28
- @hash[current_node] = {}
29
- @hash[current_node]["component_name"] = meth.to_s
30
- @hash[current_node]["config"] = {}
31
- @hash[current_node]["argument"] = nil
32
-
33
- if meth == :page_content
34
- @hash[current_node]["components"] = @app_instance.send(:page_nodes)
35
- elsif meth == :partial
36
- @hash[current_node]["components"] = @app_instance.send(args.first, *args.drop(1))
37
- else
38
- if args.first.is_a?(Hash)
39
- @hash[current_node]["config"] = args.first
40
- else
41
- @hash[current_node]["argument"] = args.first
42
- end
43
-
44
- if block_given?
45
- @hash[current_node]["components"] = AppNode.build(@app_instance, &block)
46
- end
47
- end
48
- end
49
-
50
- end
51
-
52
- end
53
- end
@@ -1,73 +0,0 @@
1
- module Matestack::Ui::Core
2
- class ComponentNode
3
-
4
- def self.build(component_instance, included_config, &block)
5
- node = ComponentNode.new(component_instance, included_config)
6
- node.instance_eval(&block)
7
- node.hash
8
- end
9
-
10
- attr_reader :hash
11
-
12
- def initialize(component_instance, included_config)
13
- @hash = {}
14
- @node_start_id = 0
15
- @component_instance = component_instance
16
- @included_config = included_config
17
- component_instance.instance_variables.each do |component_instance_var_key|
18
- self.instance_variable_set(component_instance_var_key, component_instance.instance_variable_get(component_instance_var_key))
19
- end
20
- end
21
-
22
- def method_missing meth, *args, &block
23
- begin
24
- @component_instance.send(meth, *args, &block)
25
- rescue
26
- node_id = @node_start_id + 1
27
- @node_start_id = node_id
28
- current_node = "#{meth}_#{@node_start_id}"
29
- @hash[current_node] = {}
30
- @hash[current_node]["component_name"] = meth.to_s
31
- @hash[current_node]["config"] = {}
32
- @hash[current_node]["argument"] = nil
33
- @hash[current_node]["included_config"] = @included_config
34
-
35
- if meth == :isolate
36
- raise("isolate > only works on page level currently. component support is comming soon!")
37
- end
38
-
39
- if meth == :partial
40
- @hash[current_node]["components"] = @component_instance.send(args.first, *args.drop(1))
41
- elsif meth == :yield_components
42
- @hash[current_node]["component_name"] = "partial"
43
- @hash[current_node]["components"] = @component_instance.send(:get_children)
44
- else
45
- if args.first.is_a?(Hash)
46
- @hash[current_node]["config"] = args.first unless meth == :slot
47
- else
48
- @hash[current_node]["argument"] = args.first
49
- end
50
-
51
- if args.second == :include
52
- included = args.first
53
- else
54
- unless @included_config.nil?
55
- included = @included_config
56
- else
57
- included = nil
58
- end
59
- end
60
-
61
- if block_given?
62
- @hash[current_node]["components"] = ComponentNode.build(@component_instance, included, &block)
63
- elsif meth == :slot
64
- # @hash[current_node]["components"] = ComponentNode.build(@component_instance, included, &args.first)
65
- @hash[current_node]["components"] = args.first
66
- end
67
- end
68
- end
69
-
70
- end
71
-
72
- end
73
- end
@@ -1,96 +0,0 @@
1
- module Matestack::Ui::Core
2
- class PageNode
3
-
4
- def self.build(page_instance, included_config, url_params, &block)
5
- node = PageNode.new(page_instance, included_config, url_params)
6
- node.instance_eval(&block)
7
- node.hash
8
- end
9
-
10
- attr_reader :hash
11
-
12
- def initialize(page_instance, included_config, url_params)
13
- @hash = {}
14
- @node_start_id = 0
15
- @included_config = included_config
16
- @url_params = url_params
17
- @page_instance = page_instance
18
- page_instance.instance_variables.each do |page_instance_var_key|
19
- self.instance_variable_set(page_instance_var_key, page_instance.instance_variable_get(page_instance_var_key))
20
- end
21
- end
22
-
23
- def method_missing meth, *args, &block
24
- begin
25
- @page_instance.send(meth, *args, &block)
26
- rescue
27
- node_id = @node_start_id + 1
28
- @node_start_id = node_id
29
- current_node = "#{meth}_#{@node_start_id}"
30
- @hash[current_node] = {}
31
- @hash[current_node]["component_name"] = meth.to_s
32
- @hash[current_node]["config"] = {}
33
- @hash[current_node]["included_config"] = @included_config
34
- @hash[current_node]["argument"] = nil
35
-
36
- if args.second == :include
37
- included = args.first
38
- else
39
- unless @included_config.nil?
40
- included = @included_config
41
- else
42
- included = nil
43
- end
44
- end
45
-
46
- if meth == :isolate
47
- if args.second.present?
48
- if args.second.is_a? Hash
49
- if args.second[:cached_params].nil?
50
- raise "isolate > you need to pass params within a hash called 'cached_params'"
51
- else
52
- isolated_block = @page_instance.send(args.first, args.second[:cached_params])
53
- end
54
- else
55
- raise "isolate > you need to pass params within a hash called 'cached_params'"
56
- end
57
- else
58
- isolated_block = @page_instance.send(args.first)
59
- end
60
- @hash[current_node]["components"] = PageNode.build(
61
- @page_instance, nil, @url_params, &isolated_block
62
- )
63
- @hash[current_node]["argument"] = args.first
64
- @hash[current_node]["cached_params"] = args.second[:cached_params] if args.second.present?
65
- end
66
-
67
- if meth == :partial
68
- partial_block = @page_instance.send(args.first, *args.drop(1))
69
- @hash[current_node]["components"] = PageNode.build(
70
- @page_instance, included, @url_params, &partial_block
71
- )
72
- else
73
- if args.first.is_a?(Hash)
74
- @hash[current_node]["config"] = args.first
75
- else
76
- @hash[current_node]["argument"] = args.first
77
- end
78
-
79
- if block_given?
80
- if args.first.is_a?(Hash) && args.first[:defer].present?
81
- if @url_params.present? && @url_params[:component_key].present?
82
- @hash[current_node]["components"] = PageNode.build(@page_instance, included, @url_params, &block)
83
- else
84
- return
85
- end
86
- else
87
- @hash[current_node]["components"] = PageNode.build(@page_instance, included, @url_params, &block)
88
- end
89
- end
90
- end
91
- end
92
-
93
- end
94
-
95
- end
96
- end
@@ -1,129 +0,0 @@
1
- module Matestack::Ui::Core::ToCell
2
-
3
- def to_cell(key, component_name, config, argument, children, included_config, cached_params=nil)
4
- # p cached_params
5
- request_uri = context[:request].env["REQUEST_URI"]
6
- query_string = context[:request].env["QUERY_STRING"]
7
-
8
- config.merge!(component_key: key)
9
- config.merge!(children: children)
10
- config.merge!(origin_url: request_uri.gsub("?" + query_string, ""))
11
- config.merge!(url_params: context[:params])
12
- config.merge!(included_config: included_config)
13
- config.merge!(cached_params: cached_params)
14
-
15
- if component_name.start_with?("custom")
16
- return resolve_custom_component(component_name, argument, config)
17
- else
18
- return resolve_core_component(component_name, argument, config)
19
- end
20
-
21
- end
22
-
23
- private
24
-
25
- def resolve_custom_component(component_name, argument, config)
26
- name = component_name.gsub("_", "/")
27
-
28
- path = name.split("/")[1..-1]
29
- path_camelized = path.map { |x| x.camelize }
30
-
31
- if path_camelized.count == 1
32
- class_name = "#{path_camelized[0]}"
33
- rewritten_path = [path[0]]
34
- else
35
- class_name = path_camelized.join("::")
36
- rewritten_path = path
37
- end
38
-
39
- custom_component_class_name = "Components::" + class_name
40
-
41
- begin
42
- begin
43
- component_class = Object.const_get(custom_component_class_name, false)
44
- rescue => e
45
- raise "#{e.message.nil? ? '': 'Got Error: '+e.message}. \
46
- Make sure to define your custom component class correctly \
47
- in \"matestack/components/#{rewritten_path.join('/')}.rb\""
48
- end
49
- if component_class.is_a?(Class)
50
- return cell(component_class, argument, config)
51
- else
52
- raise "Given component #{component_class} is not a class. \
53
- You might forget to add the component name to your component call"
54
- end
55
- rescue => e
56
- raise "#{component_name} > #{e.message}"
57
- end
58
-
59
- end
60
-
61
- def resolve_core_component(component_name, argument, config)
62
- name = component_name.gsub("_", "/")
63
-
64
- unless name.include?("/")
65
- name = "#{name}/#{name}"
66
- end
67
-
68
- path = name.split("/")
69
- path_camelized = path.map { |x| x.camelize }
70
- class_name = path_camelized.join("::")
71
-
72
- core_component_class_name = "Matestack::Ui::Core::" + class_name
73
- begin
74
- begin
75
- component_class = Object.const_get(core_component_class_name, false)
76
- unless component_class.is_a?(Class)
77
- core_component_class_name = core_component_class_name + "::#{name.split("/").last.camelize}"
78
- component_class = Object.const_get(core_component_class_name, false)
79
- end
80
- rescue => e
81
- begin
82
- return resolve_namespaced_component(component_name, argument, config)
83
- rescue => e
84
- raise "#{e.message.nil? ? '': 'Got Error: '+e.message}. \
85
- Component '#{component_name}' not found. Looking for Class '#{core_component_class_name}'. \
86
- Make sure to prefix a custom component with 'custom_'"
87
- end
88
- end
89
- return cell(component_class, argument, config)
90
- rescue => e
91
- raise "#{component_name} > #{e.message}"
92
- end
93
-
94
- end
95
-
96
- def resolve_namespaced_component(component_name, argument, config)
97
- name = component_name.gsub("_", "/")
98
-
99
- path = name.split("/")[1..-1]
100
- namespace = name.split("/")[0].camelize
101
- path_camelized = path.map { |x| x.camelize }
102
-
103
- if path_camelized.count == 1
104
- class_name = "#{path_camelized[0]}::#{path_camelized[0]}"
105
- rewritten_path = [path[0], path[0]]
106
- else
107
- class_name = path_camelized[0..-1].join("::")
108
- rewritten_path = path[0..-1]
109
- end
110
-
111
- namespaced_class_name = "Matestack::Ui::" + namespace + "::" + class_name
112
-
113
- begin
114
- begin
115
- component_class = Object.const_get(namespaced_class_name, false)
116
- unless component_class.is_a?(Class)
117
- namespaced_class_name = namespaced_class_name + "::#{name.split("/").last.camelize}"
118
- component_class = Object.const_get(namespaced_class_name, false)
119
- end
120
- rescue => e
121
- raise "#{e.message}"
122
- end
123
- return cell(component_class, argument, config)
124
- rescue => e
125
- raise "#{e.message}"
126
- end
127
- end
128
-
129
- end