matestack-ui-core 0.7.2 → 0.7.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (196) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -4
  3. data/Rakefile +32 -0
  4. data/app/concepts/matestack/ui/core/action/action.js +114 -11
  5. data/app/concepts/matestack/ui/core/action/action.rb +24 -0
  6. data/app/concepts/matestack/ui/core/actionview/dynamic.haml +6 -0
  7. data/app/concepts/matestack/ui/core/actionview/dynamic.rb +28 -0
  8. data/app/concepts/matestack/ui/core/actionview/static.haml +1 -0
  9. data/app/concepts/matestack/ui/core/actionview/static.rb +28 -0
  10. data/app/concepts/matestack/ui/core/app/app.js +15 -4
  11. data/app/concepts/matestack/ui/core/app/app.rb +3 -26
  12. data/app/concepts/matestack/ui/core/app/location.js +9 -0
  13. data/app/concepts/matestack/ui/core/app/store.js +12 -5
  14. data/app/concepts/matestack/ui/core/area/area.haml +1 -0
  15. data/app/concepts/matestack/ui/core/area/area.rb +18 -0
  16. data/app/concepts/matestack/ui/core/aside/aside.haml +3 -0
  17. data/app/concepts/matestack/ui/core/aside/aside.rb +5 -0
  18. data/app/concepts/matestack/ui/core/async/async.js +27 -5
  19. data/app/concepts/matestack/ui/core/b/b.haml +5 -0
  20. data/app/concepts/matestack/ui/core/b/b.rb +5 -0
  21. data/app/concepts/matestack/ui/core/bdi/bdi.haml +5 -0
  22. data/app/concepts/matestack/ui/core/bdi/bdi.rb +4 -0
  23. data/app/concepts/matestack/ui/core/bdo/bdo.haml +5 -0
  24. data/app/concepts/matestack/ui/core/bdo/bdo.rb +11 -0
  25. data/app/concepts/matestack/ui/core/cite/cite.haml +5 -0
  26. data/app/concepts/matestack/ui/core/cite/cite.rb +5 -0
  27. data/app/concepts/matestack/ui/core/code/code.haml +5 -0
  28. data/app/concepts/matestack/ui/core/code/code.rb +5 -0
  29. data/app/concepts/matestack/ui/core/collection/content/content.js +4 -4
  30. data/app/concepts/matestack/ui/core/collection/filter/filter.js +3 -3
  31. data/app/concepts/matestack/ui/core/collection/order/order.js +3 -3
  32. data/app/concepts/matestack/ui/core/component/anonym-dynamic-component.js +1 -1
  33. data/app/concepts/matestack/ui/core/component/component.js +1 -1
  34. data/app/concepts/matestack/ui/core/component/dynamic.rb +35 -27
  35. data/app/concepts/matestack/ui/core/data/data.haml +5 -0
  36. data/app/concepts/matestack/ui/core/data/data.rb +9 -0
  37. data/app/concepts/matestack/ui/core/datalist/datalist.haml +3 -0
  38. data/app/concepts/matestack/ui/core/datalist/datalist.rb +5 -0
  39. data/app/concepts/matestack/ui/core/dd/dd.haml +5 -0
  40. data/app/concepts/matestack/ui/core/dd/dd.rb +5 -0
  41. data/app/concepts/matestack/ui/core/del/del.haml +5 -0
  42. data/app/concepts/matestack/ui/core/del/del.rb +4 -0
  43. data/app/concepts/matestack/ui/core/dfn/dfn.haml +5 -0
  44. data/app/concepts/matestack/ui/core/dfn/dfn.rb +6 -0
  45. data/app/concepts/matestack/ui/core/dialog/dialog.haml +5 -0
  46. data/app/concepts/matestack/ui/core/dialog/dialog.rb +9 -0
  47. data/app/concepts/matestack/ui/core/dl/dl.haml +5 -0
  48. data/app/concepts/matestack/ui/core/dl/dl.rb +5 -0
  49. data/app/concepts/matestack/ui/core/dt/dt.haml +5 -0
  50. data/app/concepts/matestack/ui/core/dt/dt.rb +5 -0
  51. data/app/concepts/matestack/ui/core/em/em.haml +5 -0
  52. data/app/concepts/matestack/ui/core/em/em.rb +5 -0
  53. data/app/concepts/matestack/ui/core/fieldset/fieldset.haml +5 -0
  54. data/app/concepts/matestack/ui/core/fieldset/fieldset.rb +9 -0
  55. data/app/concepts/matestack/ui/core/figure/figure.haml +3 -0
  56. data/app/concepts/matestack/ui/core/figure/figure.rb +5 -0
  57. data/app/concepts/matestack/ui/core/form/form.js +254 -89
  58. data/app/concepts/matestack/ui/core/form/form.rb +22 -0
  59. data/app/concepts/matestack/ui/core/form/input/input.haml +37 -18
  60. data/app/concepts/matestack/ui/core/form/input/input.rb +36 -29
  61. data/app/concepts/matestack/ui/core/form/select/select.haml +14 -10
  62. data/app/concepts/matestack/ui/core/form/select/select.rb +10 -0
  63. data/app/concepts/matestack/ui/core/html/html.js +1 -1
  64. data/app/concepts/matestack/ui/core/iframe/iframe.haml +5 -0
  65. data/app/concepts/matestack/ui/core/iframe/iframe.rb +14 -0
  66. data/app/concepts/matestack/ui/core/img/img.haml +1 -1
  67. data/app/concepts/matestack/ui/core/img/img.rb +10 -0
  68. data/app/concepts/matestack/ui/core/input/input.haml +2 -3
  69. data/app/concepts/matestack/ui/core/input/input.rb +4 -0
  70. data/app/concepts/matestack/ui/core/ins/ins.haml +5 -0
  71. data/app/concepts/matestack/ui/core/ins/ins.rb +10 -0
  72. data/app/concepts/matestack/ui/core/js/core.js +41 -18
  73. data/app/concepts/matestack/ui/core/kbd/kbd.haml +5 -0
  74. data/app/concepts/matestack/ui/core/kbd/kbd.rb +4 -0
  75. data/app/concepts/matestack/ui/core/label/label.rb +6 -1
  76. data/app/concepts/matestack/ui/core/legend/legend.haml +5 -0
  77. data/app/concepts/matestack/ui/core/legend/legend.rb +5 -0
  78. data/app/concepts/matestack/ui/core/link/link.rb +2 -1
  79. data/app/concepts/matestack/ui/core/map/map.haml +3 -0
  80. data/app/concepts/matestack/ui/core/map/map.rb +11 -0
  81. data/app/concepts/matestack/ui/core/mark/mark.haml +5 -0
  82. data/app/concepts/matestack/ui/core/mark/mark.rb +4 -0
  83. data/app/concepts/matestack/ui/core/meter/meter.haml +4 -0
  84. data/app/concepts/matestack/ui/core/meter/meter.rb +14 -0
  85. data/app/concepts/matestack/ui/core/noscript/noscript.haml +5 -0
  86. data/app/concepts/matestack/ui/core/noscript/noscript.rb +5 -0
  87. data/app/concepts/matestack/ui/core/object/object.haml +1 -0
  88. data/app/concepts/matestack/ui/core/object/object.rb +15 -0
  89. data/app/concepts/matestack/ui/core/onclick/onclick.js +2 -3
  90. data/app/concepts/matestack/ui/core/optgroup/optgroup.haml +3 -0
  91. data/app/concepts/matestack/ui/core/optgroup/optgroup.rb +10 -0
  92. data/app/concepts/matestack/ui/core/option/option.haml +5 -0
  93. data/app/concepts/matestack/ui/core/option/option.rb +12 -0
  94. data/app/concepts/matestack/ui/core/output/output.haml +5 -0
  95. data/app/concepts/matestack/ui/core/output/output.rb +11 -0
  96. data/app/concepts/matestack/ui/core/page/content.js +1 -1
  97. data/app/concepts/matestack/ui/core/page/page.rb +38 -19
  98. data/app/concepts/matestack/ui/core/param/param.haml +1 -0
  99. data/app/concepts/matestack/ui/core/param/param.rb +10 -0
  100. data/app/concepts/matestack/ui/core/picture/picture.haml +3 -0
  101. data/app/concepts/matestack/ui/core/picture/picture.rb +4 -0
  102. data/app/concepts/matestack/ui/core/plain/plain.rb +1 -1
  103. data/app/concepts/matestack/ui/core/pre/pre.haml +5 -0
  104. data/app/concepts/matestack/ui/core/pre/pre.rb +5 -0
  105. data/app/concepts/matestack/ui/core/q/q.haml +5 -0
  106. data/app/concepts/matestack/ui/core/q/q.rb +11 -0
  107. data/app/concepts/matestack/ui/core/rp/rp.haml +5 -0
  108. data/app/concepts/matestack/ui/core/rp/rp.rb +5 -0
  109. data/app/concepts/matestack/ui/core/rt/rt.haml +5 -0
  110. data/app/concepts/matestack/ui/core/rt/rt.rb +5 -0
  111. data/app/concepts/matestack/ui/core/ruby/ruby.haml +5 -0
  112. data/app/concepts/matestack/ui/core/ruby/ruby.rb +5 -0
  113. data/app/concepts/matestack/ui/core/s/s.haml +5 -0
  114. data/app/concepts/matestack/ui/core/s/s.rb +6 -0
  115. data/app/concepts/matestack/ui/core/samp/samp.haml +5 -0
  116. data/app/concepts/matestack/ui/core/samp/samp.rb +4 -0
  117. data/app/concepts/matestack/ui/core/sup/sup.haml +5 -0
  118. data/app/concepts/matestack/ui/core/sup/sup.rb +5 -0
  119. data/app/concepts/matestack/ui/core/template/template.haml +3 -0
  120. data/app/concepts/matestack/ui/core/template/template.rb +4 -0
  121. data/app/concepts/matestack/ui/core/transition/transition.js +17 -2
  122. data/app/concepts/matestack/ui/core/transition/transition.rb +1 -1
  123. data/app/concepts/matestack/ui/core/u/u.haml +5 -0
  124. data/app/concepts/matestack/ui/core/u/u.rb +6 -0
  125. data/app/concepts/matestack/ui/core/unescaped/unescaped.rb +7 -0
  126. data/app/concepts/matestack/ui/core/var/var.haml +5 -0
  127. data/app/concepts/matestack/ui/core/var/var.rb +4 -0
  128. data/app/concepts/matestack/ui/core/video/video.haml +3 -1
  129. data/app/concepts/matestack/ui/core/video/video.rb +17 -1
  130. data/app/concepts/matestack/ui/core/wbr/wbr.haml +1 -0
  131. data/app/concepts/matestack/ui/core/wbr/wbr.rb +4 -0
  132. data/app/helpers/matestack/ui/core/application_helper.rb +5 -2
  133. data/app/javascript/matestack-ui-core/index.js +22 -0
  134. data/app/javascript/matestack-ui-core/styles/index.scss +5 -0
  135. data/app/javascript/packs/matestack-ui-core.js +8 -0
  136. data/app/lib/matestack/ui/core/component_node.rb +25 -11
  137. data/app/lib/matestack/ui/core/has_view_context.rb +14 -0
  138. data/app/lib/matestack/ui/core/page_node.rb +5 -1
  139. data/app/lib/matestack/ui/core/render.rb +89 -0
  140. data/app/lib/matestack/ui/dynamic_actionview_component.rb +1 -0
  141. data/app/lib/matestack/ui/static_actionview_component.rb +1 -0
  142. data/config/routes.rb +0 -1
  143. data/lib/generators/matestack/app/USAGE +21 -0
  144. data/lib/generators/matestack/app/app_generator.rb +25 -0
  145. data/lib/generators/{matestack_app/templates/matestack_app_controller.erb → matestack/app/templates/app/controllers/%file_name%_controller.rb.tt} +0 -2
  146. data/lib/generators/matestack/app/templates/app/matestack/apps/%file_name%.rb.tt +28 -0
  147. data/lib/generators/matestack/component/USAGE +20 -0
  148. data/lib/generators/matestack/component/component_generator.rb +29 -0
  149. data/lib/generators/{matestack_component/templates/matestack_component.haml.erb → matestack/component/templates/app/matestack/components/%namespace%/%file_name%.haml.tt} +0 -0
  150. data/lib/generators/{matestack_component/templates/matestack_component.js.erb → matestack/component/templates/app/matestack/components/%namespace%/%file_name%.js.tt} +2 -2
  151. data/lib/generators/matestack/component/templates/app/matestack/components/%namespace%/%file_name%.rb.tt +11 -0
  152. data/lib/generators/{matestack_component/templates/matestack_component.scss.erb → matestack/component/templates/app/matestack/components/%namespace%/%file_name%.scss.tt} +0 -0
  153. data/lib/generators/matestack/core/component/USAGE +16 -0
  154. data/lib/generators/matestack/core/component/component_generator.rb +23 -0
  155. data/lib/generators/matestack/core/component/templates/app/concepts/matestack/ui/core/%file_name%/%file_name%.haml.tt +5 -0
  156. data/lib/generators/matestack/core/component/templates/app/concepts/matestack/ui/core/%file_name%/%file_name%.rb.tt +4 -0
  157. data/lib/generators/matestack/core/component/templates/docs/components/%file_name%.md.tt +45 -0
  158. data/lib/generators/matestack/core/component/templates/spec/usage/components/%file_name%_spec.rb +31 -0
  159. data/lib/generators/matestack/page/USAGE +28 -0
  160. data/lib/generators/matestack/page/page_generator.rb +54 -0
  161. data/lib/generators/matestack/page/templates/app/matestack/pages/%app_name%/%namespace%/%file_name%.rb.tt +29 -0
  162. data/lib/matestack/ui/core.rb +1 -0
  163. data/lib/matestack/ui/core/cell.rb +33 -0
  164. data/lib/matestack/ui/core/version.rb +1 -1
  165. data/vendor/assets/javascripts/dist/manifest.json +18 -0
  166. data/vendor/assets/javascripts/dist/manifest.json.br +0 -0
  167. data/vendor/assets/javascripts/dist/manifest.json.gz +0 -0
  168. data/vendor/assets/javascripts/dist/matestack-ui-core.css +3 -0
  169. data/vendor/assets/javascripts/dist/matestack-ui-core.css.map +1 -0
  170. data/vendor/assets/javascripts/dist/matestack-ui-core.js +16853 -0
  171. data/vendor/assets/javascripts/dist/matestack-ui-core.js.map +1 -0
  172. data/vendor/assets/javascripts/dist/matestack-ui-core.min.css +0 -0
  173. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js +3 -0
  174. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.LICENSE.txt +18 -0
  175. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.gz +0 -0
  176. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map +1 -0
  177. data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map.gz +0 -0
  178. data/vendor/assets/javascripts/matestack-ui-core.js.erb +2 -0
  179. data/vendor/assets/stylesheets/dist +1 -0
  180. data/vendor/assets/stylesheets/matestack-ui-core.css.erb +2 -0
  181. metadata +146 -30
  182. data/app/concepts/matestack/ui/core/view/view.haml +0 -2
  183. data/app/concepts/matestack/ui/core/view/view.js +0 -42
  184. data/app/concepts/matestack/ui/core/view/view.rb +0 -5
  185. data/lib/generators/matestack_app/USAGE +0 -21
  186. data/lib/generators/matestack_app/matestack_app_generator.rb +0 -26
  187. data/lib/generators/matestack_app/templates/matestack_app.erb +0 -26
  188. data/lib/generators/matestack_component/USAGE +0 -20
  189. data/lib/generators/matestack_component/matestack_component_generator.rb +0 -30
  190. data/lib/generators/matestack_component/templates/matestack_component.rb.erb +0 -13
  191. data/lib/generators/matestack_page/USAGE +0 -28
  192. data/lib/generators/matestack_page/matestack_page_generator.rb +0 -41
  193. data/lib/generators/matestack_page/templates/matestack_page.erb +0 -15
  194. data/vendor/assets/javascripts/manifest.json +0 -4
  195. data/vendor/assets/javascripts/matestack-ui-core.js +0 -15309
  196. data/vendor/assets/javascripts/matestack-ui-core.js.map +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: af1594c493057f5f1ef5e9548d9485d2fcac014a9c79519554ed53d61de90703
4
- data.tar.gz: 1441194ad2d3da09a0d4ebb60def765442042e77d069afe7a75abae9ab565464
3
+ metadata.gz: 1c4bb181fa03aec3eb151af547eec43d6f12f692c8cdfa0dfe70a6e963ede262
4
+ data.tar.gz: 24088d7379448e215604593de26c89d8a026bbef1054c7d3cb78e22f01803f22
5
5
  SHA512:
6
- metadata.gz: 70bf6d472b902d96adde03e06ca5ac062fed60f79220ac4de499f996c391198e64fbe8e72fb0a2a7d8c2b08c75de4cb328a9a81b23cf2c2bb92a137de4a92f70
7
- data.tar.gz: 141ce7ca2f0857b8c2f4ec3c740d0e89f23c009340b041a4145e8f04000744bacf2fa948c7ac99bb64294f4b5a4321de0713b27bd4feb3f851c8848350f1dc4e
6
+ metadata.gz: ee17b5c4423b505a5a6dacb837fe44987ce8fc26f1569314d7b7afbcdcb1c0feaadbf436ccf901583b94e9d1161f81ba99a6cab6237f48cd5854b685685fb1ca
7
+ data.tar.gz: 677a09c88813b82d2c2cbf32885f90845b0e3a24739c1fd3ebe0b371b8a2e2208df7a3b0cdb9d8b83368eb34480edc769250cc932dc5fb6c645a2de0896ce007
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
- [![CircleCI](https://circleci.com/gh/basemate/matestack-ui-core/tree/master.svg?style=shield)](https://circleci.com/gh/basemate/matestack-ui-core/tree/master)
1
+ ![](https://github.com/matestack/matestack-ui-core/workflows/specs/badge.svg)
2
2
  [![Gitter](https://badges.gitter.im/basemate/community.svg)](https://gitter.im/basemate/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
3
3
  [![Gem Version](https://badge.fury.io/rb/matestack-ui-core.svg)](https://badge.fury.io/rb/matestack-ui-core)
4
+ [![Docs](https://img.shields.io/badge/docs-matestack-blue.svg)](https://www.matestack.org/docs/install)
4
5
 
5
6
  ![matestack logo](./logo.png)
6
7
 
@@ -19,6 +20,17 @@ matestack can progressively replace the classic Rails-View-Layer. You are able t
19
20
  it alongside your classic views and incrementally turn your Rails-App into a
20
21
  dynamic Web-App.
21
22
 
23
+ ### Current State:
24
+
25
+ We love to see more and more people using and contributing to matestack-ui-core. Our current version is 0.7.4 and it's not perfect yet. We recommend you to start using matestack-ui-core in a side project and report issues as this helps us to push matestack-ui-core towards a production ready 1.0.0. At matestack, we already use matestack-ui-core in production as we know how to handle current issues and bypass them with deep insights of the core implementation. We plan to invest time and money (yes, we're hiring) on following improvements:
26
+
27
+ * debugging and error handling
28
+ * core refactoring, increased core maintainability and code quality
29
+ * better integration in existing rails apps
30
+ * improved documentation
31
+ * improved dynamic core components (especially form components)
32
+
33
+
22
34
  ### Installation:
23
35
 
24
36
  Click here to see how you can add Matestack UI to your existing Rails application: [Installation Guide](./docs/install)
@@ -30,7 +42,7 @@ Click here to see how you can add Matestack UI to your existing Rails applicatio
30
42
  class Pages::MyPage < Matestack::Ui::Page
31
43
 
32
44
  def prepare
33
- @technologies = ["Rails", "Vue.js", "Trailblazer", "Rspec", "Capybara"]
45
+ @technologies = ["Rails", "Vue.js", "Trailblazer", "RSpec", "Capybara"]
34
46
  end
35
47
 
36
48
  def response
@@ -205,7 +217,7 @@ ActionCable.server.broadcast("matestack_ui_core", {
205
217
 
206
218
  ### Documentation
207
219
 
208
- Documentation can be found [here](./docs)
220
+ Documentation can be found [here](https://www.matestack.org/docs/install)
209
221
 
210
222
  ### Changelog
211
223
 
@@ -213,7 +225,7 @@ Changelog can be found [here](./CHANGELOG.md)
213
225
 
214
226
  ### Roadmap
215
227
 
216
- We're currently finalizing the roadmap towards to a stable 1.0 release, supposed to happen towards the end of the year! For details make sure to check the [release management project](https://github.com/basemate/matestack-ui-core/projects/2) and get in touch via our [chat](https://gitter.im/basemate/community) for feedback!
228
+ In order to see what we planned to add and release the upcoming months, just have a look at our future [milestones](https://github.com/basemate/matestack-ui-core/milestones) and get in touch via our [chat](https://gitter.im/basemate/community) for feedback! The upcoming issues and feature requests will be added to one of these milestones regarding priority and implementation effort.
217
229
 
218
230
  ### Community
219
231
 
data/Rakefile CHANGED
@@ -32,3 +32,35 @@ require 'rake/testtask'
32
32
  # end
33
33
  #
34
34
  # task default: :test
35
+
36
+ task :webpack => 'webpack:build'
37
+
38
+ namespace :webpack do
39
+ task :build => ['build:development', 'build:production']
40
+
41
+ namespace :build do
42
+ task :development => 'yarn:install' do
43
+ Bundler.with_unbundled_env do
44
+ sh "cd builder && bin/webpack"
45
+ end
46
+ end
47
+ task :production => 'yarn:install' do
48
+ Bundler.with_unbundled_env do
49
+ sh "cd builder && bin/rake webpacker:compile"
50
+ end
51
+ end
52
+ end
53
+
54
+ task :watch => 'yarn:install' do
55
+ Bundler.with_unbundled_env do
56
+ sh "cd builder && bin/webpack --watch"
57
+ end
58
+ end
59
+
60
+ namespace :yarn do
61
+ task :install do
62
+ sh "yarn install && cd builder && yarn install"
63
+ end
64
+ end
65
+ end
66
+
@@ -2,9 +2,8 @@ import Vue from 'vue/dist/vue.esm'
2
2
  import Vuex from 'vuex'
3
3
  import axios from 'axios'
4
4
 
5
- import matestackEventHub from 'js/event-hub'
6
-
7
- import componentMixin from 'component/component'
5
+ import matestackEventHub from '../js/event-hub'
6
+ import componentMixin from '../component/component'
8
7
 
9
8
  const componentDef = {
10
9
  mixins: [componentMixin],
@@ -13,31 +12,135 @@ const componentDef = {
13
12
  },
14
13
  methods: {
15
14
  perform: function(){
15
+ const self = this
16
+ if (
17
+ (self.componentConfig["confirm"] == undefined) || confirm(self.componentConfig["confirm_text"])
18
+ )
19
+ {
20
+ if (self.componentConfig["emit"] != undefined) {
21
+ matestackEventHub.$emit(self.componentConfig["emit"]);
22
+ }
23
+ if (self.componentConfig["delay"] != undefined) {
24
+ setTimeout(function () {
25
+ self.sendRequest()
26
+ }, parseInt(self.componentConfig["delay"]));
27
+ } else {
28
+ this.sendRequest()
29
+ }
30
+ }
31
+ },
32
+ sendRequest: function(){
16
33
  const self = this
17
34
  axios({
18
- method: self.componentConfig["method"],
19
- url: self.componentConfig["action_path"],
20
- data: self.componentConfig["data"],
21
- headers: {
22
- 'X-CSRF-Token': document.getElementsByName("csrf-token")[0].getAttribute('content')
35
+ method: self.componentConfig["method"],
36
+ url: self.componentConfig["action_path"],
37
+ data: self.componentConfig["data"],
38
+ headers: {
39
+ 'X-CSRF-Token': document.getElementsByName("csrf-token")[0].getAttribute('content')
40
+ }
23
41
  }
24
- })
42
+ )
25
43
  .then(function(response){
26
44
  if (self.componentConfig["success"] != undefined && self.componentConfig["success"]["emit"] != undefined) {
27
45
  matestackEventHub.$emit(self.componentConfig["success"]["emit"], response.data);
28
46
  }
29
- if (self.componentConfig["success"] != undefined && self.componentConfig["success"]["transition"] != undefined && self.$store != undefined) {
47
+
48
+ // transition handling
49
+ if (self.componentConfig["success"] != undefined
50
+ && self.componentConfig["success"]["transition"] != undefined
51
+ && (
52
+ self.componentConfig["success"]["transition"]["follow_response"] == undefined
53
+ ||
54
+ self.componentConfig["success"]["transition"]["follow_response"] === false
55
+ )
56
+ && self.$store != undefined
57
+ ) {
30
58
  let path = self.componentConfig["success"]["transition"]["path"]
31
59
  self.$store.dispatch('navigateTo', {url: path, backwards: false})
60
+ return;
61
+ }
62
+ if (self.componentConfig["success"] != undefined
63
+ && self.componentConfig["success"]["transition"] != undefined
64
+ && self.componentConfig["success"]["transition"]["follow_response"] === true
65
+ && self.$store != undefined
66
+ ) {
67
+ let path = response.data["transition_to"] || response.request.responseURL
68
+ self.$store.dispatch('navigateTo', {url: path, backwards: false})
69
+ return;
70
+ }
71
+ // redirect handling
72
+ if (self.componentConfig["success"] != undefined
73
+ && self.componentConfig["success"]["redirect"] != undefined
74
+ && (
75
+ self.componentConfig["success"]["redirect"]["follow_response"] == undefined
76
+ ||
77
+ self.componentConfig["success"]["redirect"]["follow_response"] === false
78
+ )
79
+ && self.$store != undefined
80
+ ) {
81
+ let path = self.componentConfig["success"]["redirect"]["path"]
82
+ window.location.href = path
83
+ return;
84
+ }
85
+ if (self.componentConfig["success"] != undefined
86
+ && self.componentConfig["success"]["redirect"] != undefined
87
+ && self.componentConfig["success"]["redirect"]["follow_response"] === true
88
+ && self.$store != undefined
89
+ ) {
90
+ let path = response.data["redirect_to"] || response.request.responseURL
91
+ window.location.href = path
92
+ return;
32
93
  }
33
94
  })
34
95
  .catch(function(error){
35
96
  if (self.componentConfig["failure"] != undefined && self.componentConfig["failure"]["emit"] != undefined) {
36
97
  matestackEventHub.$emit(self.componentConfig["failure"]["emit"], error.response.data);
37
98
  }
38
- if (self.componentConfig["failure"] != undefined && self.componentConfig["failure"]["transition"] != undefined && self.$store != undefined) {
99
+ // transition handling
100
+ if (self.componentConfig["failure"] != undefined
101
+ && self.componentConfig["failure"]["transition"] != undefined
102
+ && (
103
+ self.componentConfig["failure"]["transition"]["follow_response"] == undefined
104
+ ||
105
+ self.componentConfig["failure"]["transition"]["follow_response"] === false
106
+ )
107
+ && self.$store != undefined
108
+ ) {
39
109
  let path = self.componentConfig["failure"]["transition"]["path"]
40
110
  self.$store.dispatch('navigateTo', {url: path, backwards: false})
111
+ return;
112
+ }
113
+ if (self.componentConfig["failure"] != undefined
114
+ && self.componentConfig["failure"]["transition"] != undefined
115
+ && self.componentConfig["failure"]["transition"]["follow_response"] === true
116
+ && self.$store != undefined
117
+ ) {
118
+ let path = error.response.data["transition_to"] || response.request.responseURL
119
+ self.$store.dispatch('navigateTo', {url: path, backwards: false})
120
+ return;
121
+ }
122
+ // redirect handling
123
+ if (self.componentConfig["failure"] != undefined
124
+ && self.componentConfig["failure"]["redirect"] != undefined
125
+ && (
126
+ self.componentConfig["failure"]["redirect"]["follow_response"] == undefined
127
+ ||
128
+ self.componentConfig["failure"]["redirect"]["follow_response"] === false
129
+ )
130
+ && self.$store != undefined
131
+ ) {
132
+ let path = self.componentConfig["failure"]["redirect"]["path"]
133
+ window.location.href = path
134
+ return;
135
+ }
136
+ if (self.componentConfig["failure"] != undefined
137
+ && self.componentConfig["failure"]["redirect"] != undefined
138
+ && self.componentConfig["failure"]["redirect"]["follow_response"] === true
139
+ && self.$store != undefined
140
+ ) {
141
+ let path = error.response.data["redirect_to"] || response.request.responseURL
142
+ window.location.href = path
143
+ return;
41
144
  }
42
145
  })
43
146
  }
@@ -9,16 +9,25 @@ module Matestack::Ui::Core::Action
9
9
  unless options[:success][:transition].nil?
10
10
  @component_config[:success][:transition][:path] = transition_path options[:success]
11
11
  end
12
+ unless options[:success][:redirect].nil?
13
+ @component_config[:success][:redirect][:path] = redirect_path options[:success]
14
+ end
12
15
  end
13
16
  @component_config[:failure] = options[:failure]
14
17
  unless options[:failure].nil?
15
18
  unless options[:failure][:transition].nil?
16
19
  @component_config[:failure][:transition][:path] = transition_path options[:failure]
17
20
  end
21
+ unless options[:failure][:redirect].nil?
22
+ @component_config[:failure][:redirect][:path] = redirect_path options[:failure]
23
+ end
18
24
  end
19
25
  if options[:notify].nil?
20
26
  @component_config[:notify] = true
21
27
  end
28
+ if @component_config[:confirm] = options[:confirm]
29
+ @component_config[:confirm_text] = options[:confirm].try(:[], :text) || "Are you sure?"
30
+ end
22
31
  end
23
32
 
24
33
  def action_path
@@ -48,5 +57,20 @@ module Matestack::Ui::Core::Action
48
57
  end
49
58
  end
50
59
 
60
+ def redirect_path callback_options
61
+ begin
62
+ if callback_options[:redirect][:path].is_a?(Symbol)
63
+ return ::Rails.application.routes.url_helpers.send(
64
+ callback_options[:redirect][:path],
65
+ callback_options[:redirect][:params]
66
+ )
67
+ else
68
+ return callback_options[:redirect][:path]
69
+ end
70
+ rescue
71
+ raise "Redirect path not found"
72
+ end
73
+ end
74
+
51
75
  end
52
76
  end
@@ -0,0 +1,6 @@
1
+ %component{dynamic_tag_attributes}
2
+ %div
3
+ %div{"v-if": "asyncTemplate == null"}
4
+ = render_content
5
+ %div{"v-if": "asyncTemplate != null"}
6
+ %v-runtime-template{":template":"asyncTemplate"}
@@ -0,0 +1,28 @@
1
+ module Matestack::Ui::Core::Actionview
2
+ class Dynamic < Matestack::Ui::Core::Component::Dynamic
3
+
4
+ include ActionView::Helpers::ActiveModelHelper
5
+ include ActionView::Helpers::ActiveModelInstanceTag
6
+ include ActionView::Helpers::AssetTagHelper
7
+ include ActionView::Helpers::AssetUrlHelper
8
+ include ActionView::Helpers::AtomFeedHelper
9
+ include ActionView::Helpers::CacheHelper
10
+ include ActionView::Helpers::CaptureHelper
11
+ include ActionView::Helpers::CspHelper
12
+ include ActionView::Helpers::CsrfHelper
13
+ include ActionView::Helpers::DateHelper
14
+ include ActionView::Helpers::DebugHelper
15
+ include ActionView::Helpers::FormHelper
16
+ include ActionView::Helpers::FormOptionsHelper
17
+ include ActionView::Helpers::FormTagHelper
18
+ include ActionView::Helpers::JavaScriptHelper
19
+ include ActionView::Helpers::NumberHelper
20
+ include ActionView::Helpers::OutputSafetyHelper
21
+ include ActionView::Helpers::SanitizeHelper
22
+ include ActionView::Helpers::TagHelper
23
+ include ActionView::Helpers::TextHelper
24
+ include ActionView::Helpers::TranslationHelper
25
+ include ActionView::Helpers::UrlHelper
26
+
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ module Matestack::Ui::Core::Actionview
2
+ class Static < Matestack::Ui::Core::Component::Static
3
+
4
+ include ActionView::Helpers::ActiveModelHelper
5
+ include ActionView::Helpers::ActiveModelInstanceTag
6
+ include ActionView::Helpers::AssetTagHelper
7
+ include ActionView::Helpers::AssetUrlHelper
8
+ include ActionView::Helpers::AtomFeedHelper
9
+ include ActionView::Helpers::CacheHelper
10
+ include ActionView::Helpers::CaptureHelper
11
+ include ActionView::Helpers::CspHelper
12
+ include ActionView::Helpers::CsrfHelper
13
+ include ActionView::Helpers::DateHelper
14
+ include ActionView::Helpers::DebugHelper
15
+ include ActionView::Helpers::FormHelper
16
+ include ActionView::Helpers::FormOptionsHelper
17
+ include ActionView::Helpers::FormTagHelper
18
+ include ActionView::Helpers::JavaScriptHelper
19
+ include ActionView::Helpers::NumberHelper
20
+ include ActionView::Helpers::OutputSafetyHelper
21
+ include ActionView::Helpers::SanitizeHelper
22
+ include ActionView::Helpers::TagHelper
23
+ include ActionView::Helpers::TextHelper
24
+ include ActionView::Helpers::TranslationHelper
25
+ include ActionView::Helpers::UrlHelper
26
+
27
+ end
28
+ end
@@ -1,7 +1,7 @@
1
1
  import Vue from 'vue/dist/vue.esm'
2
- import axios from 'axios'
3
2
  import VRuntimeTemplate from "v-runtime-template"
4
3
  import Vuex from 'vuex'
4
+ import isNavigatingToAnotherPage from "./location"
5
5
 
6
6
  const componentDef = {
7
7
  props: ['appConfig', 'params'],
@@ -10,18 +10,29 @@ const componentDef = {
10
10
  },
11
11
  computed: Vuex.mapState({
12
12
  asyncTemplate: state => state.pageTemplate,
13
+ currentPathName: state => state.currentPathName,
14
+ currentSearch: state => state.currentSearch,
15
+ currentOrigin: state => state.currentOrigin,
13
16
  }),
14
17
  mounted: function(){
15
18
  const self = this;
16
- window.onpopstate = function(event) {
17
- self.$store.dispatch("navigateTo", {url: document.location.pathname, backwards: true} );
18
- }
19
+ window.addEventListener("popstate", (event) => {
20
+ if (isNavigatingToAnotherPage({
21
+ origin: self.currentOrigin,
22
+ pathName: self.currentPathName,
23
+ search: self.currentSearch
24
+ }, document.location)){
25
+ self.$store.dispatch("navigateTo", { url: document.location.pathname + document.location.search, backwards: true } );
26
+ }
27
+ })
19
28
  },
20
29
  components: {
21
30
  VRuntimeTemplate: VRuntimeTemplate
22
31
  }
23
32
  }
24
33
 
34
+
35
+
25
36
  let component = Vue.component('matestack-ui-core-app', componentDef)
26
37
 
27
38
  export default componentDef
@@ -1,33 +1,10 @@
1
1
  module Matestack::Ui::Core::App
2
2
  class App < Trailblazer::Cell
3
- include ActionView::Helpers::ActiveModelHelper
4
- include ActionView::Helpers::ActiveModelInstanceTag
5
- include ActionView::Helpers::AssetTagHelper
6
- include ActionView::Helpers::AssetUrlHelper
7
- include ActionView::Helpers::AtomFeedHelper
8
- include ActionView::Helpers::CacheHelper
9
- include ActionView::Helpers::CaptureHelper
10
- include ActionView::Helpers::CspHelper
11
- include ActionView::Helpers::CsrfHelper
12
- include ActionView::Helpers::DateHelper
13
- include ActionView::Helpers::DebugHelper
14
- include ActionView::Helpers::FormHelper
15
- include ActionView::Helpers::FormOptionsHelper
16
- include ActionView::Helpers::FormTagHelper
17
- include ActionView::Helpers::JavaScriptHelper
18
- include ActionView::Helpers::NumberHelper
19
- include ActionView::Helpers::OutputSafetyHelper
20
- include ActionView::Helpers::RecordTagHelper
21
- # include ActionView::Helpers::RenderingHelper
22
- include ActionView::Helpers::SanitizeHelper
23
- include ActionView::Helpers::TagHelper
24
- include ActionView::Helpers::TextHelper
25
- include ActionView::Helpers::TranslationHelper
26
- include ActionView::Helpers::UrlHelper
27
- include ::Cell::Haml
3
+
4
+ include Matestack::Ui::Core::Cell
28
5
  include Matestack::Ui::Core::ApplicationHelper
29
6
  include Matestack::Ui::Core::ToCell
30
- # include ::Rails.application.routes.url_helpers
7
+ include Matestack::Ui::Core::HasViewContext
31
8
 
32
9
  view_paths << "#{Matestack::Ui::Core::Engine.root}/app/concepts"
33
10