matestack-ui-core 0.7.0 → 0.7.4
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.
- checksums.yaml +4 -4
- data/README.md +16 -12
- data/Rakefile +32 -0
- data/app/concepts/matestack/ui/core/abbr/abbr.haml +5 -0
- data/app/concepts/matestack/ui/core/abbr/abbr.rb +12 -0
- data/app/concepts/matestack/ui/core/action/action.js +51 -29
- data/app/concepts/matestack/ui/core/action/action.rb +3 -0
- data/app/concepts/matestack/ui/core/actionview/dynamic.haml +6 -0
- data/app/concepts/matestack/ui/core/actionview/dynamic.rb +28 -0
- data/app/concepts/matestack/ui/core/actionview/static.haml +1 -0
- data/app/concepts/matestack/ui/core/actionview/static.rb +28 -0
- data/app/concepts/matestack/ui/core/address/address.haml +5 -0
- data/app/concepts/matestack/ui/core/address/address.rb +5 -0
- data/app/concepts/matestack/ui/core/app/app.js +7 -4
- data/app/concepts/matestack/ui/core/app/app.rb +3 -28
- data/app/concepts/matestack/ui/core/app/location.js +10 -0
- data/app/concepts/matestack/ui/core/app/store.js +1 -2
- data/app/concepts/matestack/ui/core/area/area.haml +1 -0
- data/app/concepts/matestack/ui/core/area/area.rb +18 -0
- data/app/concepts/matestack/ui/core/article/article.haml +5 -0
- data/app/concepts/matestack/ui/core/article/article.rb +5 -0
- data/app/concepts/matestack/ui/core/aside/aside.haml +3 -0
- data/app/concepts/matestack/ui/core/aside/aside.rb +5 -0
- data/app/concepts/matestack/ui/core/async/async.haml +1 -1
- data/app/concepts/matestack/ui/core/async/async.js +24 -5
- data/app/concepts/matestack/ui/core/async/async.rb +8 -6
- data/app/concepts/matestack/ui/core/b/b.haml +5 -0
- data/app/concepts/matestack/ui/core/b/b.rb +5 -0
- data/app/concepts/matestack/ui/core/bdi/bdi.haml +5 -0
- data/app/concepts/matestack/ui/core/bdi/bdi.rb +4 -0
- data/app/concepts/matestack/ui/core/bdo/bdo.haml +5 -0
- data/app/concepts/matestack/ui/core/bdo/bdo.rb +11 -0
- data/app/concepts/matestack/ui/core/blockquote/blockquote.haml +5 -0
- data/app/concepts/matestack/ui/core/blockquote/blockquote.rb +11 -0
- data/app/concepts/matestack/ui/core/button/button.haml +4 -6
- data/app/concepts/matestack/ui/core/button/button.rb +6 -0
- data/app/concepts/matestack/ui/core/caption/caption.haml +5 -0
- data/app/concepts/matestack/ui/core/caption/caption.rb +5 -0
- data/app/concepts/matestack/ui/core/cite/cite.haml +5 -0
- data/app/concepts/matestack/ui/core/cite/cite.rb +5 -0
- data/app/concepts/matestack/ui/core/code/code.haml +5 -0
- data/app/concepts/matestack/ui/core/code/code.rb +5 -0
- data/app/concepts/matestack/ui/core/collection/content/content.js +98 -0
- data/app/concepts/matestack/ui/core/collection/content/content.rb +18 -0
- data/app/concepts/matestack/ui/core/collection/content/next/next.haml +3 -0
- data/app/concepts/matestack/ui/core/collection/content/next/next.rb +5 -0
- data/app/concepts/matestack/ui/core/collection/content/page/link/link.haml +3 -0
- data/app/concepts/matestack/ui/core/collection/content/page/link/link.rb +5 -0
- data/app/concepts/matestack/ui/core/collection/content/previous/previous.haml +3 -0
- data/app/concepts/matestack/ui/core/collection/content/previous/previous.rb +5 -0
- data/app/concepts/matestack/ui/core/collection/filter/filter.js +48 -0
- data/app/concepts/matestack/ui/core/collection/filter/filter.rb +17 -0
- data/app/concepts/matestack/ui/core/collection/filter/input/input.haml +2 -0
- data/app/concepts/matestack/ui/core/collection/filter/input/input.rb +25 -0
- data/app/concepts/matestack/ui/core/collection/filter/reset/reset.haml +3 -0
- data/app/concepts/matestack/ui/core/collection/filter/reset/reset.rb +5 -0
- data/app/concepts/matestack/ui/core/collection/filter/submit/submit.haml +3 -0
- data/app/concepts/matestack/ui/core/collection/filter/submit/submit.rb +5 -0
- data/app/concepts/matestack/ui/core/collection/helper.rb +113 -0
- data/app/concepts/matestack/ui/core/collection/order/order.js +56 -0
- data/app/concepts/matestack/ui/core/collection/order/order.rb +17 -0
- data/app/concepts/matestack/ui/core/collection/order/toggle/indicator/indicator.rb +13 -0
- data/app/concepts/matestack/ui/core/collection/order/toggle/toggle.haml +3 -0
- data/app/concepts/matestack/ui/core/collection/order/toggle/toggle.rb +5 -0
- data/app/concepts/matestack/ui/core/component/anonym-dynamic-component.js +1 -1
- data/app/concepts/matestack/ui/core/component/component.js +3 -4
- data/app/concepts/matestack/ui/core/component/dynamic.rb +38 -33
- data/app/concepts/matestack/ui/core/data/data.haml +5 -0
- data/app/concepts/matestack/ui/core/data/data.rb +9 -0
- data/app/concepts/matestack/ui/core/dd/dd.haml +5 -0
- data/app/concepts/matestack/ui/core/dd/dd.rb +5 -0
- data/app/concepts/matestack/ui/core/del/del.haml +5 -0
- data/app/concepts/matestack/ui/core/del/del.rb +4 -0
- data/app/concepts/matestack/ui/core/details/details.haml +3 -0
- data/app/concepts/matestack/ui/core/details/details.rb +5 -0
- data/app/concepts/matestack/ui/core/dfn/dfn.haml +5 -0
- data/app/concepts/matestack/ui/core/dfn/dfn.rb +6 -0
- data/app/concepts/matestack/ui/core/dialog/dialog.haml +5 -0
- data/app/concepts/matestack/ui/core/dialog/dialog.rb +9 -0
- data/app/concepts/matestack/ui/core/div/div.rb +0 -1
- data/app/concepts/matestack/ui/core/dl/dl.haml +5 -0
- data/app/concepts/matestack/ui/core/dl/dl.rb +5 -0
- data/app/concepts/matestack/ui/core/dt/dt.haml +5 -0
- data/app/concepts/matestack/ui/core/dt/dt.rb +5 -0
- data/app/concepts/matestack/ui/core/em/em.haml +5 -0
- data/app/concepts/matestack/ui/core/em/em.rb +5 -0
- data/app/concepts/matestack/ui/core/fieldset/fieldset.haml +5 -0
- data/app/concepts/matestack/ui/core/fieldset/fieldset.rb +9 -0
- data/app/concepts/matestack/ui/core/figure/figure.haml +3 -0
- data/app/concepts/matestack/ui/core/figure/figure.rb +5 -0
- data/app/concepts/matestack/ui/core/form/form.js +42 -6
- data/app/concepts/matestack/ui/core/form/input/input.haml +4 -6
- data/app/concepts/matestack/ui/core/form/select/select.haml +10 -6
- data/app/concepts/matestack/ui/core/html/html.js +1 -1
- data/app/concepts/matestack/ui/core/icon/icon.haml +2 -3
- data/app/concepts/matestack/ui/core/iframe/iframe.haml +5 -0
- data/app/concepts/matestack/ui/core/iframe/iframe.rb +14 -0
- data/app/concepts/matestack/ui/core/img/img.haml +1 -1
- data/app/concepts/matestack/ui/core/img/img.rb +10 -0
- data/app/concepts/matestack/ui/core/ins/ins.haml +5 -0
- data/app/concepts/matestack/ui/core/ins/ins.rb +10 -0
- data/app/concepts/matestack/ui/core/isolate/isolate.haml +2 -0
- data/app/concepts/matestack/ui/core/isolate/isolate.rb +11 -0
- data/app/concepts/matestack/ui/core/js/core.js +15 -12
- data/app/concepts/matestack/ui/core/js/helpers/query-params-helper.js +56 -0
- data/app/concepts/matestack/ui/core/kbd/kbd.haml +5 -0
- data/app/concepts/matestack/ui/core/kbd/kbd.rb +4 -0
- data/app/concepts/matestack/ui/core/label/label.haml +4 -6
- data/app/concepts/matestack/ui/core/label/label.rb +6 -1
- data/app/concepts/matestack/ui/core/legend/legend.haml +5 -0
- data/app/concepts/matestack/ui/core/legend/legend.rb +5 -0
- data/app/concepts/matestack/ui/core/li/li.haml +2 -3
- data/app/concepts/matestack/ui/core/link/link.haml +5 -6
- data/app/concepts/matestack/ui/core/link/link.rb +5 -2
- data/app/concepts/matestack/ui/core/map/map.haml +3 -0
- data/app/concepts/matestack/ui/core/map/map.rb +11 -0
- data/app/concepts/matestack/ui/core/mark/mark.haml +5 -0
- data/app/concepts/matestack/ui/core/mark/mark.rb +4 -0
- data/app/concepts/matestack/ui/core/meter/meter.haml +4 -0
- data/app/concepts/matestack/ui/core/meter/meter.rb +14 -0
- data/app/concepts/matestack/ui/core/noscript/noscript.haml +5 -0
- data/app/concepts/matestack/ui/core/noscript/noscript.rb +5 -0
- data/app/concepts/matestack/ui/core/object/object.haml +1 -0
- data/app/concepts/matestack/ui/core/object/object.rb +15 -0
- data/app/concepts/matestack/ui/core/onclick/onclick.haml +1 -1
- data/app/concepts/matestack/ui/core/onclick/onclick.js +2 -3
- data/app/concepts/matestack/ui/core/onclick/onclick.rb +1 -2
- data/app/concepts/matestack/ui/core/optgroup/optgroup.haml +3 -0
- data/app/concepts/matestack/ui/core/optgroup/optgroup.rb +10 -0
- data/app/concepts/matestack/ui/core/option/option.haml +5 -0
- data/app/concepts/matestack/ui/core/option/option.rb +12 -0
- data/app/concepts/matestack/ui/core/output/output.haml +5 -0
- data/app/concepts/matestack/ui/core/output/output.rb +11 -0
- data/app/concepts/matestack/ui/core/page/content.js +1 -1
- data/app/concepts/matestack/ui/core/page/page.rb +63 -23
- data/app/concepts/matestack/ui/core/paragraph/paragraph.haml +4 -7
- data/app/concepts/matestack/ui/core/param/param.haml +1 -0
- data/app/concepts/matestack/ui/core/param/param.rb +10 -0
- data/app/concepts/matestack/ui/core/pg/pg.haml +4 -7
- data/app/concepts/matestack/ui/core/picture/picture.haml +3 -0
- data/app/concepts/matestack/ui/core/picture/picture.rb +4 -0
- data/app/concepts/matestack/ui/core/plain/plain.rb +1 -2
- data/app/concepts/matestack/ui/core/pre/pre.haml +5 -0
- data/app/concepts/matestack/ui/core/pre/pre.rb +5 -0
- data/app/concepts/matestack/ui/core/q/q.haml +5 -0
- data/app/concepts/matestack/ui/core/q/q.rb +11 -0
- data/app/concepts/matestack/ui/core/rp/rp.haml +5 -0
- data/app/concepts/matestack/ui/core/rp/rp.rb +5 -0
- data/app/concepts/matestack/ui/core/rt/rt.haml +5 -0
- data/app/concepts/matestack/ui/core/rt/rt.rb +5 -0
- data/app/concepts/matestack/ui/core/ruby/ruby.haml +5 -0
- data/app/concepts/matestack/ui/core/ruby/ruby.rb +5 -0
- data/app/concepts/matestack/ui/core/s/s.haml +5 -0
- data/app/concepts/matestack/ui/core/s/s.rb +6 -0
- data/app/concepts/matestack/ui/core/samp/samp.haml +5 -0
- data/app/concepts/matestack/ui/core/samp/samp.rb +4 -0
- data/app/concepts/matestack/ui/core/small/small.haml +5 -0
- data/app/concepts/matestack/ui/core/small/small.rb +5 -0
- data/app/concepts/matestack/ui/core/span/span.haml +3 -1
- data/app/concepts/matestack/ui/core/strong/strong.haml +5 -0
- data/app/concepts/matestack/ui/core/strong/strong.rb +5 -0
- data/app/concepts/matestack/ui/core/sub/sub.haml +5 -0
- data/app/concepts/matestack/ui/core/sub/sub.rb +5 -0
- data/app/concepts/matestack/ui/core/summary/summary.haml +5 -0
- data/app/concepts/matestack/ui/core/summary/summary.rb +5 -0
- data/app/concepts/matestack/ui/core/sup/sup.haml +5 -0
- data/app/concepts/matestack/ui/core/sup/sup.rb +5 -0
- data/app/concepts/matestack/ui/core/tbody/tbody.haml +3 -0
- data/app/concepts/matestack/ui/core/tbody/tbody.rb +5 -0
- data/app/concepts/matestack/ui/core/td/td.haml +4 -7
- data/app/concepts/matestack/ui/core/template/template.haml +3 -0
- data/app/concepts/matestack/ui/core/template/template.rb +4 -0
- data/app/concepts/matestack/ui/core/tfoot/tfoot.haml +3 -0
- data/app/concepts/matestack/ui/core/tfoot/tfoot.rb +5 -0
- data/app/concepts/matestack/ui/core/th/th.haml +4 -7
- data/app/concepts/matestack/ui/core/thead/thead.haml +3 -0
- data/app/concepts/matestack/ui/core/thead/thead.rb +5 -0
- data/app/concepts/matestack/ui/core/transition/transition.haml +4 -6
- data/app/concepts/matestack/ui/core/transition/transition.js +1 -1
- data/app/concepts/matestack/ui/core/u/u.haml +5 -0
- data/app/concepts/matestack/ui/core/u/u.rb +6 -0
- data/app/concepts/matestack/ui/core/unescaped/unescaped.rb +7 -0
- data/app/concepts/matestack/ui/core/var/var.haml +5 -0
- data/app/concepts/matestack/ui/core/var/var.rb +4 -0
- data/app/concepts/matestack/ui/core/video/video.haml +3 -0
- data/app/concepts/matestack/ui/core/video/video.rb +23 -0
- data/app/concepts/matestack/ui/core/wbr/wbr.haml +1 -0
- data/app/concepts/matestack/ui/core/wbr/wbr.rb +4 -0
- data/app/concepts/matestack/ui/core/youtube/youtube.haml +1 -0
- data/app/concepts/matestack/ui/core/youtube/youtube.rb +26 -0
- data/app/helpers/matestack/ui/core/application_helper.rb +3 -1
- data/app/javascript/matestack-ui-core/index.js +22 -0
- data/app/javascript/matestack-ui-core/styles/index.scss +5 -0
- data/app/javascript/packs/matestack-ui-core.js +8 -0
- data/app/lib/matestack/ui/core/component_node.rb +30 -12
- data/app/lib/matestack/ui/core/has_view_context.rb +10 -0
- data/app/lib/matestack/ui/core/page_node.rb +40 -6
- data/app/lib/matestack/ui/core/render.rb +89 -0
- data/app/lib/matestack/ui/core/to_cell.rb +3 -1
- data/app/lib/matestack/ui/dynamic_actionview_component.rb +1 -0
- data/app/lib/matestack/ui/static_actionview_component.rb +1 -0
- data/config/routes.rb +0 -1
- data/lib/generators/matestack/app/USAGE +21 -0
- data/lib/generators/matestack/app/app_generator.rb +25 -0
- data/lib/generators/matestack/app/templates/app/controllers/%file_name%_controller.rb.tt +5 -0
- data/lib/generators/matestack/app/templates/app/matestack/apps/%file_name%.rb.tt +28 -0
- data/lib/generators/matestack/component/USAGE +20 -0
- data/lib/generators/matestack/component/component_generator.rb +29 -0
- data/lib/generators/matestack/component/templates/app/matestack/components/%namespace%/%file_name%.haml.tt +5 -0
- data/lib/generators/matestack/component/templates/app/matestack/components/%namespace%/%file_name%.js.tt +17 -0
- data/lib/generators/matestack/component/templates/app/matestack/components/%namespace%/%file_name%.rb.tt +11 -0
- data/lib/generators/matestack/component/templates/app/matestack/components/%namespace%/%file_name%.scss.tt +1 -0
- data/lib/generators/matestack/core/component/USAGE +16 -0
- data/lib/generators/matestack/core/component/component_generator.rb +23 -0
- data/lib/generators/matestack/core/component/templates/app/concepts/matestack/ui/core/%file_name%/%file_name%.haml.tt +5 -0
- data/lib/generators/matestack/core/component/templates/app/concepts/matestack/ui/core/%file_name%/%file_name%.rb.tt +4 -0
- data/lib/generators/matestack/core/component/templates/docs/components/%file_name%.md.tt +45 -0
- data/lib/generators/matestack/core/component/templates/spec/usage/components/%file_name%_spec.rb +31 -0
- data/lib/generators/matestack/page/USAGE +28 -0
- data/lib/generators/matestack/page/page_generator.rb +54 -0
- data/lib/generators/matestack/page/templates/app/matestack/pages/%app_name%/%namespace%/%file_name%.rb.tt +29 -0
- data/lib/matestack/ui/core.rb +1 -0
- data/lib/matestack/ui/core/cell.rb +33 -0
- data/lib/matestack/ui/core/version.rb +1 -1
- data/vendor/assets/javascripts/dist/manifest.json +18 -0
- data/vendor/assets/javascripts/dist/manifest.json.br +0 -0
- data/vendor/assets/javascripts/dist/manifest.json.gz +0 -0
- data/vendor/assets/javascripts/dist/matestack-ui-core.css +3 -0
- data/vendor/assets/javascripts/dist/matestack-ui-core.css.map +1 -0
- data/vendor/assets/javascripts/dist/matestack-ui-core.js +16523 -0
- data/vendor/assets/javascripts/dist/matestack-ui-core.js.map +1 -0
- data/vendor/assets/javascripts/dist/matestack-ui-core.min.css +0 -0
- data/vendor/assets/javascripts/dist/matestack-ui-core.min.js +3 -0
- data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.LICENSE.txt +18 -0
- data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.br +0 -0
- data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.gz +0 -0
- data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map +1 -0
- data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map.br +0 -0
- data/vendor/assets/javascripts/dist/matestack-ui-core.min.js.map.gz +0 -0
- data/vendor/assets/javascripts/matestack-ui-core.js.erb +2 -0
- data/vendor/assets/stylesheets/dist +1 -0
- data/vendor/assets/stylesheets/matestack-ui-core.css.erb +2 -0
- metadata +203 -19
- data/app/concepts/matestack/ui/core/view/view.haml +0 -2
- data/app/concepts/matestack/ui/core/view/view.js +0 -42
- data/app/concepts/matestack/ui/core/view/view.rb +0 -7
- data/vendor/assets/javascripts/manifest.json +0 -4
- data/vendor/assets/javascripts/matestack-ui-core.js +0 -15055
- data/vendor/assets/javascripts/matestack-ui-core.js.map +0 -1
@@ -0,0 +1,8 @@
|
|
1
|
+
// // Add polyfills for the asset pipeline
|
2
|
+
// // https://github.com/matestack/matestack-ui-core/issues/238#issuecomment-583905838
|
3
|
+
//
|
4
|
+
// import 'core-js/stable'
|
5
|
+
// import 'regenerator-runtime/runtime'
|
6
|
+
|
7
|
+
import '../matestack-ui-core/index'
|
8
|
+
export default MatestackUiCore
|
@@ -13,15 +13,19 @@ module Matestack::Ui::Core
|
|
13
13
|
@hash = {}
|
14
14
|
@node_start_id = 0
|
15
15
|
@component_instance = component_instance
|
16
|
-
@included_config = included_config
|
17
16
|
component_instance.instance_variables.each do |component_instance_var_key|
|
18
17
|
self.instance_variable_set(component_instance_var_key, component_instance.instance_variable_get(component_instance_var_key))
|
19
18
|
end
|
19
|
+
@included_config = included_config
|
20
20
|
end
|
21
21
|
|
22
22
|
def method_missing meth, *args, &block
|
23
23
|
begin
|
24
|
-
@component_instance.send(meth, *args, &block)
|
24
|
+
if (result = @component_instance.send(meth, *args, &block)).kind_of? ActiveSupport::SafeBuffer
|
25
|
+
plain result
|
26
|
+
else
|
27
|
+
result
|
28
|
+
end
|
25
29
|
rescue
|
26
30
|
node_id = @node_start_id + 1
|
27
31
|
@node_start_id = node_id
|
@@ -32,6 +36,20 @@ module Matestack::Ui::Core
|
|
32
36
|
@hash[current_node]["argument"] = nil
|
33
37
|
@hash[current_node]["included_config"] = @included_config
|
34
38
|
|
39
|
+
if args.second == :include
|
40
|
+
included = args.first
|
41
|
+
else
|
42
|
+
unless @included_config.nil?
|
43
|
+
included = @included_config
|
44
|
+
else
|
45
|
+
included = nil
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
if meth == :isolate
|
50
|
+
raise("isolate > only works on page level currently. component support is comming soon!")
|
51
|
+
end
|
52
|
+
|
35
53
|
if meth == :partial
|
36
54
|
@hash[current_node]["components"] = @component_instance.send(args.first, *args.drop(1))
|
37
55
|
elsif meth == :yield_components
|
@@ -39,20 +57,20 @@ module Matestack::Ui::Core
|
|
39
57
|
@hash[current_node]["components"] = @component_instance.send(:get_children)
|
40
58
|
else
|
41
59
|
if args.first.is_a?(Hash)
|
42
|
-
@hash[current_node]["config"] = args.first
|
60
|
+
@hash[current_node]["config"] = args.first unless meth == :slot
|
43
61
|
else
|
44
62
|
@hash[current_node]["argument"] = args.first
|
45
63
|
end
|
46
64
|
|
47
|
-
if args.second == :include
|
48
|
-
|
49
|
-
else
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
end
|
65
|
+
# if args.second == :include
|
66
|
+
# included = args.first
|
67
|
+
# else
|
68
|
+
# unless @included_config.nil?
|
69
|
+
# included = @included_config
|
70
|
+
# else
|
71
|
+
# included = nil
|
72
|
+
# end
|
73
|
+
# end
|
56
74
|
|
57
75
|
if block_given?
|
58
76
|
@hash[current_node]["components"] = ComponentNode.build(@component_instance, included, &block)
|
@@ -1,18 +1,19 @@
|
|
1
1
|
module Matestack::Ui::Core
|
2
2
|
class PageNode
|
3
3
|
|
4
|
-
def self.build(page_instance, included_config, &block)
|
5
|
-
node = PageNode.new(page_instance, included_config)
|
4
|
+
def self.build(page_instance, included_config, url_params, &block)
|
5
|
+
node = PageNode.new(page_instance, included_config, url_params)
|
6
6
|
node.instance_eval(&block)
|
7
7
|
node.hash
|
8
8
|
end
|
9
9
|
|
10
10
|
attr_reader :hash
|
11
11
|
|
12
|
-
def initialize(page_instance, included_config)
|
12
|
+
def initialize(page_instance, included_config, url_params)
|
13
13
|
@hash = {}
|
14
14
|
@node_start_id = 0
|
15
15
|
@included_config = included_config
|
16
|
+
@url_params = url_params
|
16
17
|
@page_instance = page_instance
|
17
18
|
page_instance.instance_variables.each do |page_instance_var_key|
|
18
19
|
self.instance_variable_set(page_instance_var_key, page_instance.instance_variable_get(page_instance_var_key))
|
@@ -21,7 +22,11 @@ module Matestack::Ui::Core
|
|
21
22
|
|
22
23
|
def method_missing meth, *args, &block
|
23
24
|
begin
|
24
|
-
@page_instance.send(meth, *args, &block)
|
25
|
+
if (result = @page_instance.send(meth, *args, &block)).kind_of? ActiveSupport::SafeBuffer
|
26
|
+
plain result
|
27
|
+
else
|
28
|
+
result
|
29
|
+
end
|
25
30
|
rescue
|
26
31
|
node_id = @node_start_id + 1
|
27
32
|
@node_start_id = node_id
|
@@ -42,10 +47,31 @@ module Matestack::Ui::Core
|
|
42
47
|
end
|
43
48
|
end
|
44
49
|
|
50
|
+
if meth == :isolate
|
51
|
+
if args.second.present?
|
52
|
+
if args.second.is_a? Hash
|
53
|
+
if args.second[:cached_params].nil?
|
54
|
+
raise "isolate > you need to pass params within a hash called 'cached_params'"
|
55
|
+
else
|
56
|
+
isolated_block = @page_instance.send(args.first, args.second[:cached_params])
|
57
|
+
end
|
58
|
+
else
|
59
|
+
raise "isolate > you need to pass params within a hash called 'cached_params'"
|
60
|
+
end
|
61
|
+
else
|
62
|
+
isolated_block = @page_instance.send(args.first)
|
63
|
+
end
|
64
|
+
@hash[current_node]["components"] = PageNode.build(
|
65
|
+
@page_instance, nil, @url_params, &isolated_block
|
66
|
+
)
|
67
|
+
@hash[current_node]["argument"] = args.first
|
68
|
+
@hash[current_node]["cached_params"] = args.second[:cached_params] if args.second.present?
|
69
|
+
end
|
70
|
+
|
45
71
|
if meth == :partial
|
46
72
|
partial_block = @page_instance.send(args.first, *args.drop(1))
|
47
73
|
@hash[current_node]["components"] = PageNode.build(
|
48
|
-
@page_instance, included, &partial_block
|
74
|
+
@page_instance, included, @url_params, &partial_block
|
49
75
|
)
|
50
76
|
else
|
51
77
|
if args.first.is_a?(Hash)
|
@@ -55,7 +81,15 @@ module Matestack::Ui::Core
|
|
55
81
|
end
|
56
82
|
|
57
83
|
if block_given?
|
58
|
-
|
84
|
+
if args.first.is_a?(Hash) && args.first[:defer].present?
|
85
|
+
if @url_params.present? && @url_params[:component_key].present?
|
86
|
+
@hash[current_node]["components"] = PageNode.build(@page_instance, included, @url_params, &block)
|
87
|
+
else
|
88
|
+
return
|
89
|
+
end
|
90
|
+
else
|
91
|
+
@hash[current_node]["components"] = PageNode.build(@page_instance, included, @url_params, &block)
|
92
|
+
end
|
59
93
|
end
|
60
94
|
end
|
61
95
|
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
module Matestack::Ui::Core::Render
|
2
|
+
|
3
|
+
# Matestack allows you to use `render` to render matestack pages.
|
4
|
+
#
|
5
|
+
# render Pages::Member::Bookings::Index
|
6
|
+
# render matestack: Pages::Member::Bookings::Index
|
7
|
+
# render matestack: 'member/bookings/index'
|
8
|
+
#
|
9
|
+
def render(*args)
|
10
|
+
if (matestack_class = args.first).is_a?(Class) && (matestack_class < Matestack::Ui::Page)
|
11
|
+
responder_for matestack_class
|
12
|
+
elsif (options = args.first).kind_of?(Hash) && (matestack_arg = options[:matestack]).present?
|
13
|
+
if (matestack_path = matestack_arg).kind_of? String
|
14
|
+
matestack_path = "pages/#{matestack_path}" unless matestack_path.start_with?("pages/") or matestack_path.start_with?("components/")
|
15
|
+
matestack_class = matestack_path.split("/").collect { |str| str.camelcase }.join("::").constantize
|
16
|
+
elsif matestack_arg.is_a?(Class) && (matestack_arg < Matestack::Ui::Page)
|
17
|
+
matestack_class = matestack_arg
|
18
|
+
end
|
19
|
+
responder_for matestack_class
|
20
|
+
else
|
21
|
+
super
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Matestack allows implicit rendering. The matestack page class name is inferred from the
|
26
|
+
# controller path and action name.
|
27
|
+
#
|
28
|
+
# class Clients::BookingsController < ApplicationController
|
29
|
+
# def index
|
30
|
+
# @bookings = Booking.all
|
31
|
+
# # looks for Pages::Clients::Bookings::Index
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# def show
|
35
|
+
# @booking = Booking.find params[:id]
|
36
|
+
# # looks for Pages::Clients::Bookings::Show
|
37
|
+
# end
|
38
|
+
# end
|
39
|
+
#
|
40
|
+
# In this example, `clients/bookings#index` will render `Pages::Clients::Bookings::Index`,
|
41
|
+
# `clients/bookings#show` will render `Pages::Clients::Bookings::Show`.
|
42
|
+
#
|
43
|
+
# Custom action names translate also into page names.
|
44
|
+
#
|
45
|
+
# class Clients::BookingsController < ApplicationController
|
46
|
+
# def step1
|
47
|
+
# # looks for Pages::Clients::Bookings::Step1
|
48
|
+
# end
|
49
|
+
# end
|
50
|
+
#
|
51
|
+
# In this example, the `clients/bookings#step1` action will render
|
52
|
+
# `Pages::Clients::Bookings::Step1`.
|
53
|
+
#
|
54
|
+
def default_render(*args)
|
55
|
+
if matestack_page_class = default_render_matestack_page_class
|
56
|
+
render matestack: matestack_page_class
|
57
|
+
else
|
58
|
+
super
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def possible_default_render_matestack_page_paths
|
63
|
+
paths = []
|
64
|
+
paths << "pages/#{controller_path}/#{action_name}"
|
65
|
+
paths << "pages/#{controller_path}" if action_name == "index"
|
66
|
+
paths << "pages/#{controller_path.singularize}" if action_name == "show"
|
67
|
+
paths << "#{controller_path}/#{action_name}_page"
|
68
|
+
paths << "#{controller_path}_page" if action_name == "index"
|
69
|
+
paths << "#{controller_path.singularize}_page" if action_name == "show"
|
70
|
+
paths
|
71
|
+
end
|
72
|
+
|
73
|
+
def possible_default_render_matestack_page_class_names
|
74
|
+
possible_default_render_matestack_page_paths.collect { |page_path|
|
75
|
+
page_path.split("/").collect { |str| str.camelcase }.join("::")
|
76
|
+
}
|
77
|
+
end
|
78
|
+
|
79
|
+
def default_render_matestack_page_class
|
80
|
+
possible_default_render_matestack_page_class_names.each do |class_name|
|
81
|
+
begin
|
82
|
+
return matestack_class = class_name.constantize
|
83
|
+
rescue NameError
|
84
|
+
end
|
85
|
+
end
|
86
|
+
return nil
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Matestack::Ui::Core::ToCell
|
2
2
|
|
3
|
-
def to_cell(key, component_name, config, argument, children, included_config)
|
3
|
+
def to_cell(key, component_name, config, argument, children, included_config, cached_params=nil)
|
4
|
+
# p cached_params
|
4
5
|
request_uri = context[:request].env["REQUEST_URI"]
|
5
6
|
query_string = context[:request].env["QUERY_STRING"]
|
6
7
|
|
@@ -9,6 +10,7 @@ module Matestack::Ui::Core::ToCell
|
|
9
10
|
config.merge!(origin_url: request_uri.gsub("?" + query_string, ""))
|
10
11
|
config.merge!(url_params: context[:params])
|
11
12
|
config.merge!(included_config: included_config)
|
13
|
+
config.merge!(cached_params: cached_params)
|
12
14
|
|
13
15
|
if component_name.start_with?("custom")
|
14
16
|
return resolve_custom_component(component_name, argument, config)
|
@@ -0,0 +1 @@
|
|
1
|
+
Matestack::Ui::DynamicActionviewComponent = Matestack::Ui::Core::Actionview::Dynamic
|
@@ -0,0 +1 @@
|
|
1
|
+
Matestack::Ui::StaticActionviewComponent = Matestack::Ui::Core::Actionview::Static
|
data/config/routes.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
Description:
|
2
|
+
Stubs out a new matestack app. Pass the app name under_scored.
|
3
|
+
|
4
|
+
If you want so, pass the option '--all_inclusive' to also create
|
5
|
+
a corresponding matestack example_page, a controller, its action
|
6
|
+
and the route in 'config/routes.rb'.
|
7
|
+
|
8
|
+
Example 1:
|
9
|
+
`rails generate matestack:app example_app`
|
10
|
+
|
11
|
+
This will create:
|
12
|
+
app/matestack/apps/example_app.rb
|
13
|
+
|
14
|
+
Example 2:
|
15
|
+
`rails generate matestack:app example_app --all_inclusive`
|
16
|
+
|
17
|
+
This will create:
|
18
|
+
app/matestack/apps/example_app.rb
|
19
|
+
app/matestack/pages/example_app/example_page.rb
|
20
|
+
app/controllers/example_app_controller.rb
|
21
|
+
route get 'example_app/example_page', to: 'example_app#example_page'
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Matestack
|
4
|
+
module Generators
|
5
|
+
class AppGenerator < Rails::Generators::NamedBase
|
6
|
+
source_root File.expand_path('templates', __dir__)
|
7
|
+
|
8
|
+
class_option :all_inclusive, type: :boolean, default: false
|
9
|
+
|
10
|
+
def create_app
|
11
|
+
template 'app/matestack/apps/%file_name%.rb.tt'
|
12
|
+
|
13
|
+
if options[:all_inclusive] == true
|
14
|
+
template 'app/controllers/%file_name%_controller.rb'
|
15
|
+
|
16
|
+
route %{get '#{file_name}/example_page', to: '#{file_name}\#example_page'}
|
17
|
+
|
18
|
+
generate "matestack:page example_page --app_name #{file_name} --called_by_app_generator=true"
|
19
|
+
|
20
|
+
puts "You can visit your new matestack apps' example page under http://localhost:3000/#{file_name}/example_page"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class Apps::<%= class_name %> < Matestack::Ui::App
|
2
|
+
# OPTIONAL: Prepare data that gets used on every page of this app
|
3
|
+
# def prepare
|
4
|
+
# API calls and db queries go here
|
5
|
+
# end
|
6
|
+
|
7
|
+
# MANDATORY: This is where your matestack pages get yielded
|
8
|
+
def response
|
9
|
+
components {
|
10
|
+
heading text: 'Welcome to your <%= class_name %> app'
|
11
|
+
page_content
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
# OPTIONAL: Use partials to render stuff like layout components
|
16
|
+
# def partial_example
|
17
|
+
# partial {
|
18
|
+
# # your components go here
|
19
|
+
# }
|
20
|
+
# end
|
21
|
+
|
22
|
+
# OPTIONAL: Slots come after partials
|
23
|
+
# def slot_example
|
24
|
+
# slot {
|
25
|
+
# # your components go here
|
26
|
+
# }
|
27
|
+
# end
|
28
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Description:
|
2
|
+
Stubs out a new matestack component. Pass the component name, under_scored.
|
3
|
+
|
4
|
+
To create a dynamic component, specify it using the --dynamic option.
|
5
|
+
|
6
|
+
To place this component within a namespace, specify the namespace name under_scored and it
|
7
|
+
will get generated into 'app/matestack/components/namespace/*'.
|
8
|
+
|
9
|
+
Example 1:
|
10
|
+
`rails generate matestack:component NAME`
|
11
|
+
|
12
|
+
This will create:
|
13
|
+
app/matestack/components/NAME.rb
|
14
|
+
|
15
|
+
Example 2:
|
16
|
+
`rails generate matestack:component NAME --dynamic --namespace sample_namespace`
|
17
|
+
|
18
|
+
This will create:
|
19
|
+
app/matestack/components/sample_namespace/NAME.rb
|
20
|
+
app/matestack/components/sample_namespace/NAME.js
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Matestack
|
2
|
+
module Generators
|
3
|
+
class ComponentGenerator < Rails::Generators::NamedBase
|
4
|
+
source_root File.expand_path('templates', __dir__)
|
5
|
+
|
6
|
+
class_option :dynamic, type: :boolean, default: false
|
7
|
+
class_option :scss, type: :boolean, default: false
|
8
|
+
class_option :haml, type: :boolean, default: false
|
9
|
+
class_option :namespace, type: :string
|
10
|
+
|
11
|
+
def namespace
|
12
|
+
options[:namespace]
|
13
|
+
end
|
14
|
+
|
15
|
+
def dynamic
|
16
|
+
options[:dynamic]
|
17
|
+
end
|
18
|
+
|
19
|
+
def create_component
|
20
|
+
# Future: Check for matestack-compatible namespacing!
|
21
|
+
|
22
|
+
template 'app/matestack/components/%namespace%/%file_name%.rb.tt'
|
23
|
+
template 'app/matestack/components/%namespace%/%file_name%.js.tt' if options[:dynamic]
|
24
|
+
template 'app/matestack/components/%namespace%/%file_name%.scss.tt' if options[:scss]
|
25
|
+
template 'app/matestack/components/%namespace%/%file_name%.haml.tt' if options[:haml]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
// Require your custom component in your application.js before usage
|
2
|
+
// Place it below "//= require matestack-ui-core" using the following line:
|
3
|
+
//= require <% unless namespace.nil? %><%= namespace %>/<% end %><%= file_name %>
|
4
|
+
|
5
|
+
MatestackUiCore.Vue.component('custom<% unless namespace.nil? %>-<%= namespace %><% end %>-<%= file_name %>', {
|
6
|
+
mixins: [MatestackUiCore.componentMixin],
|
7
|
+
data: function() {
|
8
|
+
return {
|
9
|
+
foo: 'bar'
|
10
|
+
};
|
11
|
+
},
|
12
|
+
methods: {},
|
13
|
+
mounted: function(){
|
14
|
+
// this is your completeness check and should be deleted before deployment
|
15
|
+
console.log('Custom Dynamic Component <%= class_name %> mounted!')
|
16
|
+
}
|
17
|
+
});
|