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.
- checksums.yaml +4 -4
- data/LICENSE +8 -0
- data/README.md +28 -204
- data/Rakefile +32 -0
- data/app/concepts/matestack/ui/core/abbr/abbr.haml +2 -2
- data/app/concepts/matestack/ui/core/abbr/abbr.rb +3 -2
- data/app/concepts/matestack/ui/core/action/action.js +114 -11
- data/app/concepts/matestack/ui/core/action/action.rb +41 -13
- data/app/concepts/matestack/ui/core/{component/response_dynamic.haml → actionview/dynamic.haml} +2 -3
- data/app/concepts/matestack/ui/core/actionview/dynamic.rb +28 -0
- data/app/concepts/matestack/ui/core/{component → actionview}/static.haml +0 -0
- data/app/concepts/matestack/ui/core/actionview/static.rb +28 -0
- data/app/concepts/matestack/ui/core/address/address.haml +2 -2
- data/app/concepts/matestack/ui/core/address/address.rb +1 -1
- data/app/concepts/matestack/ui/core/app/app.haml +2 -3
- data/app/concepts/matestack/ui/core/app/app.js +18 -4
- data/app/concepts/matestack/ui/core/app/app.rb +34 -81
- data/app/concepts/matestack/ui/core/app/location.js +9 -0
- data/app/concepts/matestack/ui/core/app/store.js +35 -6
- data/app/concepts/matestack/ui/core/area/area.haml +1 -0
- data/app/concepts/matestack/ui/core/area/area.rb +20 -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 +6 -2
- data/app/concepts/matestack/ui/core/async/async.js +64 -8
- data/app/concepts/matestack/ui/core/async/async.rb +29 -4
- data/app/concepts/matestack/ui/core/async/children_wrapper.haml +2 -0
- data/app/concepts/matestack/ui/core/{pg/pg.haml → b/b.haml} +1 -1
- 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/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 +4 -4
- data/app/concepts/matestack/ui/core/collection/content/content.rb +2 -2
- data/app/concepts/matestack/ui/core/collection/content/page/link/link.rb +4 -2
- data/app/concepts/matestack/ui/core/collection/filter/filter.js +3 -3
- data/app/concepts/matestack/ui/core/collection/filter/filter.rb +4 -5
- data/app/concepts/matestack/ui/core/collection/filter/select/select.haml +10 -0
- data/app/concepts/matestack/ui/core/collection/filter/select/select.rb +29 -0
- data/app/concepts/matestack/ui/core/collection/helper.rb +14 -6
- data/app/concepts/matestack/ui/core/collection/order/order.js +4 -4
- data/app/concepts/matestack/ui/core/collection/order/order.rb +4 -5
- data/app/concepts/matestack/ui/core/collection/order/toggle/indicator/indicator.rb +6 -5
- data/app/concepts/matestack/ui/core/component/anonym-dynamic-component.js +1 -1
- data/app/concepts/matestack/ui/core/component/base.rb +424 -0
- data/app/concepts/matestack/ui/core/component/children.haml +2 -2
- data/app/concepts/matestack/ui/core/component/component.js +1 -55
- data/app/concepts/matestack/ui/core/component/dynamic.haml +1 -1
- data/app/concepts/matestack/ui/core/component/dynamic.rb +24 -239
- data/app/concepts/matestack/ui/core/component/rerender.rb +8 -0
- data/app/concepts/matestack/ui/core/component/static.rb +3 -12
- 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/datalist/datalist.haml +3 -0
- data/app/concepts/matestack/ui/core/datalist/datalist.rb +5 -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/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/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/checkbox/checkbox.rb +79 -0
- data/app/concepts/matestack/ui/core/form/form.js +266 -96
- data/app/concepts/matestack/ui/core/form/form.rb +29 -2
- data/app/concepts/matestack/ui/core/form/has_errors.rb +54 -0
- data/app/concepts/matestack/ui/core/form/has_input_html_attributes.rb +13 -0
- data/app/concepts/matestack/ui/core/form/input/input.rb +39 -52
- data/app/concepts/matestack/ui/core/form/radio/radio.rb +71 -0
- data/app/concepts/matestack/ui/core/form/select/select.haml +9 -76
- data/app/concepts/matestack/ui/core/form/select/select.rb +64 -49
- data/app/concepts/matestack/ui/core/form/submit/submit.rb +4 -1
- data/app/concepts/matestack/ui/core/form/textarea/textarea.rb +28 -0
- data/app/concepts/matestack/ui/core/form/utils.rb +47 -0
- data/app/concepts/matestack/ui/core/heading/heading.rb +2 -0
- 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.rb +1 -0
- data/app/concepts/matestack/ui/core/input/input.haml +1 -3
- data/app/concepts/matestack/ui/core/input/input.rb +8 -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/isolated/children_wrapper.haml +2 -0
- data/app/concepts/matestack/ui/core/isolated/isolated.haml +10 -0
- data/app/concepts/matestack/ui/core/isolated/isolated.js +108 -0
- data/app/concepts/matestack/ui/core/isolated/isolated.rb +59 -0
- data/app/concepts/matestack/ui/core/js/core.js +43 -19
- 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.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/link/link.rb +7 -6
- data/app/concepts/matestack/ui/core/{absolute/absolute.haml → map/map.haml} +1 -1
- 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.js +2 -3
- data/app/concepts/matestack/ui/core/onclick/onclick.rb +1 -0
- 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 → content/content.js} +8 -2
- data/app/concepts/matestack/ui/core/page/content/content.rb +29 -0
- data/app/concepts/matestack/ui/core/page/page.haml +3 -9
- data/app/concepts/matestack/ui/core/page/page.rb +15 -160
- 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/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 -1
- 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/progress/progress.rb +1 -1
- 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/slot/slot.rb +2 -2
- 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/template/template.haml +3 -0
- data/app/concepts/matestack/ui/core/template/template.rb +4 -0
- data/app/concepts/matestack/ui/core/textarea/textarea.haml +2 -0
- data/app/concepts/matestack/ui/core/textarea/textarea.rb +10 -0
- data/app/concepts/matestack/ui/core/toggle/toggle.haml +2 -0
- data/app/concepts/matestack/ui/core/toggle/toggle.js +71 -0
- data/app/concepts/matestack/ui/core/toggle/toggle.rb +14 -0
- data/app/concepts/matestack/ui/core/transition/transition.js +18 -2
- data/app/concepts/matestack/ui/core/transition/transition.rb +2 -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 -1
- data/app/concepts/matestack/ui/core/video/video.rb +17 -1
- data/app/concepts/matestack/ui/core/view/view.haml +1 -2
- data/app/concepts/matestack/ui/core/view/view.rb +27 -2
- 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.rb +1 -1
- data/app/helpers/matestack/ui/core/application_helper.rb +89 -17
- 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/component.rb +1 -0
- data/app/lib/matestack/ui/core/has_view_context.rb +14 -0
- data/app/lib/matestack/ui/core/html_attributes.rb +43 -0
- data/app/lib/matestack/ui/core/properties.rb +88 -0
- data/app/lib/matestack/ui/core/rendering/default_renderer_class_determiner.rb +33 -0
- data/app/lib/matestack/ui/core/rendering/main_renderer.rb +199 -0
- data/app/lib/matestack/ui/dynamic_actionview_component.rb +1 -0
- data/app/lib/matestack/ui/isolated_component.rb +1 -0
- data/app/lib/matestack/ui/static_actionview_component.rb +1 -0
- data/app/lib/matestack/ui/vue_js_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/matestack_app_controller.erb → matestack/app/templates/app/controllers/%file_name%_controller.rb.tt} +0 -2
- 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/matestack_component.haml.erb → matestack/component/templates/app/matestack/components/%namespace%/%file_name%.haml.tt} +0 -0
- data/lib/generators/{matestack_component/templates/matestack_component.js.erb → matestack/component/templates/app/matestack/components/%namespace%/%file_name%.js.tt} +2 -2
- data/lib/generators/matestack/component/templates/app/matestack/components/%namespace%/%file_name%.rb.tt +11 -0
- data/lib/generators/{matestack_component/templates/matestack_component.scss.erb → matestack/component/templates/app/matestack/components/%namespace%/%file_name%.scss.tt} +0 -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 +5 -2
- data/lib/matestack/ui/core/cell.rb +31 -0
- data/lib/matestack/ui/core/component/registry.rb +47 -0
- data/lib/matestack/ui/core/components.rb +267 -0
- data/lib/matestack/ui/core/dsl.rb +6 -0
- data/lib/matestack/ui/core/engine.rb +16 -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 +17060 -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.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.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 +188 -89
- data/MIT-LICENSE +0 -20
- data/app/concepts/matestack/ui/core/absolute/absolute.rb +0 -17
- data/app/concepts/matestack/ui/core/component/response.haml +0 -2
- data/app/concepts/matestack/ui/core/component/response_dynamic_without_rerender.haml +0 -3
- data/app/concepts/matestack/ui/core/form/inline/inline.haml +0 -6
- data/app/concepts/matestack/ui/core/form/inline/inline.rb +0 -9
- data/app/concepts/matestack/ui/core/form/input/input.haml +0 -27
- data/app/concepts/matestack/ui/core/html/html.haml +0 -3
- data/app/concepts/matestack/ui/core/html/html.js +0 -10
- data/app/concepts/matestack/ui/core/html/html.rb +0 -17
- data/app/concepts/matestack/ui/core/isolate/isolate.haml +0 -2
- data/app/concepts/matestack/ui/core/isolate/isolate.rb +0 -11
- data/app/concepts/matestack/ui/core/page/content.haml +0 -7
- data/app/concepts/matestack/ui/core/page/content.rb +0 -5
- data/app/concepts/matestack/ui/core/pg/pg.rb +0 -5
- data/app/concepts/matestack/ui/core/view/view.js +0 -42
- data/app/lib/matestack/ui/core/app_node.rb +0 -53
- data/app/lib/matestack/ui/core/component_node.rb +0 -73
- data/app/lib/matestack/ui/core/page_node.rb +0 -96
- data/app/lib/matestack/ui/core/to_cell.rb +0 -129
- data/lib/generators/matestack_app/USAGE +0 -21
- data/lib/generators/matestack_app/matestack_app_generator.rb +0 -26
- data/lib/generators/matestack_app/templates/matestack_app.erb +0 -26
- data/lib/generators/matestack_component/USAGE +0 -20
- data/lib/generators/matestack_component/matestack_component_generator.rb +0 -30
- data/lib/generators/matestack_component/templates/matestack_component.rb.erb +0 -13
- data/lib/generators/matestack_page/USAGE +0 -28
- data/lib/generators/matestack_page/matestack_page_generator.rb +0 -41
- data/lib/generators/matestack_page/templates/matestack_page.erb +0 -15
- data/vendor/assets/javascripts/manifest.json +0 -4
- data/vendor/assets/javascripts/matestack-ui-core.js +0 -15309
- data/vendor/assets/javascripts/matestack-ui-core.js.map +0 -1
@@ -1,32 +1,45 @@
|
|
1
1
|
module Matestack::Ui::Core::Action
|
2
2
|
class Action < Matestack::Ui::Core::Component::Dynamic
|
3
|
+
vue_js_component_name 'matestack-ui-core-action'
|
4
|
+
|
5
|
+
optional :path, :success, :failure, :notify, :confirm,
|
6
|
+
method: { as: :action_method }, params: { as: :action_params }
|
3
7
|
|
4
8
|
def setup
|
5
9
|
@component_config[:action_path] = action_path
|
6
|
-
@component_config[:method] =
|
7
|
-
@component_config[:success] =
|
8
|
-
unless
|
9
|
-
unless
|
10
|
-
@component_config[:success][:transition][:path] = transition_path
|
10
|
+
@component_config[:method] = action_method
|
11
|
+
@component_config[:success] = success
|
12
|
+
unless success.nil?
|
13
|
+
unless success[:transition].nil?
|
14
|
+
@component_config[:success][:transition][:path] = transition_path success
|
15
|
+
end
|
16
|
+
unless success[:redirect].nil?
|
17
|
+
@component_config[:success][:redirect][:path] = redirect_path success
|
11
18
|
end
|
12
19
|
end
|
13
|
-
@component_config[:failure] =
|
14
|
-
unless
|
15
|
-
unless
|
16
|
-
@component_config[:failure][:transition][:path] = transition_path
|
20
|
+
@component_config[:failure] = failure
|
21
|
+
unless failure.nil?
|
22
|
+
unless failure[:transition].nil?
|
23
|
+
@component_config[:failure][:transition][:path] = transition_path failure
|
24
|
+
end
|
25
|
+
unless failure[:redirect].nil?
|
26
|
+
@component_config[:failure][:redirect][:path] = redirect_path failure
|
17
27
|
end
|
18
28
|
end
|
19
|
-
if
|
29
|
+
if notify.nil?
|
20
30
|
@component_config[:notify] = true
|
21
31
|
end
|
32
|
+
if @component_config[:confirm] = confirm
|
33
|
+
@component_config[:confirm_text] = confirm.try(:[], :text) || "Are you sure?"
|
34
|
+
end
|
22
35
|
end
|
23
36
|
|
24
37
|
def action_path
|
25
38
|
begin
|
26
|
-
if
|
27
|
-
return ::Rails.application.routes.url_helpers.send(
|
39
|
+
if path.is_a?(Symbol)
|
40
|
+
return ::Rails.application.routes.url_helpers.send(path, action_params)
|
28
41
|
else
|
29
|
-
return
|
42
|
+
return path
|
30
43
|
end
|
31
44
|
rescue
|
32
45
|
raise "Action path not found"
|
@@ -48,5 +61,20 @@ module Matestack::Ui::Core::Action
|
|
48
61
|
end
|
49
62
|
end
|
50
63
|
|
64
|
+
def redirect_path callback_options
|
65
|
+
begin
|
66
|
+
if callback_options[:redirect][:path].is_a?(Symbol)
|
67
|
+
return ::Rails.application.routes.url_helpers.send(
|
68
|
+
callback_options[:redirect][:path],
|
69
|
+
callback_options[:redirect][:params]
|
70
|
+
)
|
71
|
+
else
|
72
|
+
return callback_options[:redirect][:path]
|
73
|
+
end
|
74
|
+
rescue
|
75
|
+
raise "Redirect path not found"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
51
79
|
end
|
52
80
|
end
|
data/app/concepts/matestack/ui/core/{component/response_dynamic.haml → actionview/dynamic.haml}
RENAMED
@@ -1,7 +1,6 @@
|
|
1
1
|
%component{dynamic_tag_attributes}
|
2
|
-
%div
|
2
|
+
%div
|
3
3
|
%div{"v-if": "asyncTemplate == null"}
|
4
|
-
|
5
|
-
= cell.call(:show)
|
4
|
+
= render_content
|
6
5
|
%div{"v-if": "asyncTemplate != null"}
|
7
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
|
File without changes
|
@@ -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,8 @@
|
|
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
|
+
import matestackEventHub from '../js/event-hub'
|
5
6
|
|
6
7
|
const componentDef = {
|
7
8
|
props: ['appConfig', 'params'],
|
@@ -10,18 +11,31 @@ const componentDef = {
|
|
10
11
|
},
|
11
12
|
computed: Vuex.mapState({
|
12
13
|
asyncTemplate: state => state.pageTemplate,
|
14
|
+
currentPathName: state => state.currentPathName,
|
15
|
+
currentSearch: state => state.currentSearch,
|
16
|
+
currentOrigin: state => state.currentOrigin,
|
13
17
|
}),
|
14
18
|
mounted: function(){
|
15
19
|
const self = this;
|
16
|
-
window.
|
17
|
-
|
18
|
-
|
20
|
+
window.addEventListener("popstate", (event) => {
|
21
|
+
if (isNavigatingToAnotherPage({
|
22
|
+
origin: self.currentOrigin,
|
23
|
+
pathName: self.currentPathName,
|
24
|
+
search: self.currentSearch
|
25
|
+
}, document.location)){
|
26
|
+
matestackEventHub.$emit("page_loading_triggered", document.location.pathname + document.location.search);
|
27
|
+
this.$store.commit('setPageLoading', true);
|
28
|
+
self.$store.dispatch("navigateTo", { url: document.location.pathname + document.location.search, backwards: true } );
|
29
|
+
}
|
30
|
+
})
|
19
31
|
},
|
20
32
|
components: {
|
21
33
|
VRuntimeTemplate: VRuntimeTemplate
|
22
34
|
}
|
23
35
|
}
|
24
36
|
|
37
|
+
|
38
|
+
|
25
39
|
let component = Vue.component('matestack-ui-core-app', componentDef)
|
26
40
|
|
27
41
|
export default componentDef
|
@@ -1,98 +1,51 @@
|
|
1
1
|
module Matestack::Ui::Core::App
|
2
|
-
|
3
|
-
|
4
|
-
include
|
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
|
2
|
+
# TODO: Similar to page, App doesn't need everything base offers atm
|
3
|
+
class App < Matestack::Ui::Core::Component::Base
|
4
|
+
include Matestack::Ui::Core::Cell
|
28
5
|
include Matestack::Ui::Core::ApplicationHelper
|
29
|
-
include Matestack::Ui::Core::ToCell
|
30
|
-
|
6
|
+
# include Matestack::Ui::Core::ToCell
|
7
|
+
include Matestack::Ui::Core::HasViewContext
|
31
8
|
|
32
|
-
|
9
|
+
def initialize(page_class, controller_instance, context)
|
10
|
+
super(nil, context: context)
|
33
11
|
|
34
|
-
|
35
|
-
|
36
|
-
def self.prefixes
|
37
|
-
_prefixes = super
|
38
|
-
modified_prefixes = _prefixes.map do |prefix|
|
39
|
-
prefix_parts = prefix.split("/")
|
40
|
-
|
41
|
-
if prefix_parts.last.include?(self.name.split("::")[-1].downcase)
|
42
|
-
prefix_parts[0..-2].join("/")
|
43
|
-
else
|
44
|
-
prefix
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
return modified_prefixes
|
50
|
-
end
|
51
|
-
|
52
|
-
def self.views_dir
|
53
|
-
return ""
|
12
|
+
@page_class = page_class
|
13
|
+
@controller_instance = controller_instance
|
54
14
|
end
|
55
15
|
|
56
|
-
def
|
57
|
-
|
58
|
-
@nodes = {}
|
59
|
-
@cells = {}
|
60
|
-
@page_block = nil
|
61
|
-
@page_id = ""
|
62
|
-
setup
|
16
|
+
def show
|
17
|
+
render :app
|
63
18
|
end
|
64
19
|
|
65
|
-
|
66
|
-
|
20
|
+
# Default "response" for just rendering the page without a more
|
21
|
+
# sophisticated app being supplied
|
22
|
+
def response
|
23
|
+
page_content
|
67
24
|
end
|
68
25
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
prepare
|
77
|
-
response
|
78
|
-
render(view: :app, &block)
|
79
|
-
end
|
80
|
-
|
81
|
-
def page_nodes
|
82
|
-
@page_nodes
|
83
|
-
end
|
84
|
-
|
85
|
-
def components(&block)
|
86
|
-
@nodes = Matestack::Ui::Core::AppNode.build(self, &block)
|
87
|
-
|
88
|
-
@nodes.each do |key, node|
|
89
|
-
@cells[key] = to_cell(key, node["component_name"], node["config"], node["argument"], node["components"], nil, node["cached_params"])
|
26
|
+
# new alternative method name to be used in app defentions
|
27
|
+
# slots may contain a loading state element will be rendered during form start to finish of a transition
|
28
|
+
def yield_page slots: {}
|
29
|
+
page_content_wrapper slots: slots do
|
30
|
+
add_child @page_class,
|
31
|
+
controller_instance: @controller_instance,
|
32
|
+
context: context
|
90
33
|
end
|
91
34
|
end
|
92
35
|
|
93
|
-
def
|
94
|
-
|
36
|
+
def page_content slots: {}
|
37
|
+
yield_page slots: slots
|
95
38
|
end
|
96
39
|
|
40
|
+
|
41
|
+
# def page_content loading_state_element_slot: nil
|
42
|
+
# # TODO: Content probably needs/would benefit from a better name - like "DynamicWrapper" ?
|
43
|
+
# context[:loading_state_element_slot] = loading_state_element_slot
|
44
|
+
# add_child Matestack::Ui::Core::Page::Content, context: context do
|
45
|
+
# add_child @page_class,
|
46
|
+
# controller_instance: @controller_instance,
|
47
|
+
# context: context
|
48
|
+
# end
|
49
|
+
# end
|
97
50
|
end
|
98
51
|
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
const isNavigatingToAnotherPage = function(currentLocation, targetLocation) {
|
2
|
+
|
3
|
+
// omits hash by design
|
4
|
+
return currentLocation.pathName !== targetLocation.pathname ||
|
5
|
+
currentLocation.origin !== targetLocation.origin ||
|
6
|
+
currentLocation.search !== targetLocation.search
|
7
|
+
}
|
8
|
+
|
9
|
+
export default isNavigatingToAnotherPage
|
@@ -1,25 +1,52 @@
|
|
1
1
|
import Vue from 'vue/dist/vue.esm'
|
2
2
|
import Vuex from 'vuex'
|
3
3
|
import axios from 'axios'
|
4
|
-
import matestackEventHub from 'js/event-hub'
|
4
|
+
import matestackEventHub from '../js/event-hub'
|
5
5
|
|
6
6
|
Vue.use(Vuex)
|
7
7
|
|
8
8
|
const store = new Vuex.Store({
|
9
9
|
state: {
|
10
10
|
pageTemplate: null,
|
11
|
-
|
11
|
+
pageLoading: false,
|
12
|
+
currentPathName: document.location.pathname,
|
13
|
+
currentSearch: document.location.search,
|
14
|
+
currentOrigin: document.location.origin
|
12
15
|
},
|
13
16
|
mutations: {
|
14
17
|
setPageTemplate (state, serverResponse){
|
15
18
|
state.pageTemplate = serverResponse
|
16
19
|
},
|
17
|
-
|
18
|
-
state.
|
20
|
+
setPageLoading (state, boolean){
|
21
|
+
state.pageLoading = boolean
|
22
|
+
},
|
23
|
+
setCurrentLocation (state, current){
|
24
|
+
state.currentPathName = current.path
|
25
|
+
state.currentSearch = current.search
|
26
|
+
state.currentOrigin = current.origin
|
27
|
+
},
|
28
|
+
resetPageTemplate (state) {
|
29
|
+
state.pageTemplate = null;
|
30
|
+
},
|
31
|
+
pageScrollTop (state) {
|
32
|
+
//https://stackoverflow.com/a/35940276/13886137
|
33
|
+
const getScrollParent = function(node) {
|
34
|
+
if (node == null) {
|
35
|
+
return null
|
36
|
+
}
|
37
|
+
if (node.scrollHeight > node.clientHeight) {
|
38
|
+
return node
|
39
|
+
} else {
|
40
|
+
return getScrollParent(node.parentNode)
|
41
|
+
}
|
42
|
+
}
|
43
|
+
getScrollParent(document.getElementsByClassName("matestack-page-root")[0]).scrollTop = 0
|
19
44
|
}
|
20
45
|
},
|
21
46
|
actions: {
|
22
47
|
navigateTo ({ commit, state }, { url, backwards }) {
|
48
|
+
const self = this
|
49
|
+
commit('setPageLoading', true)
|
23
50
|
matestackEventHub.$emit("page_loading", url);
|
24
51
|
if (typeof matestackUiCoreTransitionStart !== 'undefined') {
|
25
52
|
matestackUiCoreTransitionStart(url);
|
@@ -44,9 +71,11 @@ const store = new Vuex.Store({
|
|
44
71
|
window.history.pushState({matestackApp: true, url: url}, null, url);
|
45
72
|
}
|
46
73
|
setTimeout(function () {
|
47
|
-
resolve(response["data"])
|
74
|
+
resolve(response["data"]);
|
48
75
|
commit('setPageTemplate', response["data"])
|
49
|
-
commit('
|
76
|
+
commit('setCurrentLocation', { path: url.split("?")[0], search: document.location.search, origin: document.location.origin })
|
77
|
+
commit('setPageLoading', false)
|
78
|
+
commit('pageScrollTop')
|
50
79
|
matestackEventHub.$emit("page_loaded", url);
|
51
80
|
if (typeof matestackUiCoreTransitionSuccess !== 'undefined') {
|
52
81
|
matestackUiCoreTransitionSuccess(url);
|
@@ -0,0 +1 @@
|
|
1
|
+
%area{@tag_attributes}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Matestack::Ui::Core::Area
|
2
|
+
class Area < Matestack::Ui::Core::Component::Static
|
3
|
+
optional :alt, :coords, :download, :href, :hreflang, :media, :rel, :shape, :target, :type
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@tag_attributes.merge!({
|
7
|
+
alt: alt,
|
8
|
+
coords: coords.join(','),
|
9
|
+
download: download,
|
10
|
+
href: href,
|
11
|
+
hreflang: hreflang,
|
12
|
+
media: media,
|
13
|
+
rel: rel,
|
14
|
+
shape: shape,
|
15
|
+
target: target,
|
16
|
+
type: type
|
17
|
+
})
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|