matestack-ui-core 0.7.6 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +8 -0
- data/README.md +695 -121
- data/app/concepts/matestack/ui/core/abbr/abbr.haml +3 -3
- data/app/concepts/matestack/ui/core/abbr/abbr.rb +1 -8
- data/app/concepts/matestack/ui/core/action/action.haml +1 -1
- data/app/concepts/matestack/ui/core/action/action.rb +23 -19
- data/app/concepts/matestack/ui/core/actionview/dynamic.haml +4 -4
- data/app/concepts/matestack/ui/core/address/address.haml +3 -3
- 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 +4 -1
- data/app/concepts/matestack/ui/core/app/app.rb +32 -56
- data/app/concepts/matestack/ui/core/app/store.js +27 -1
- data/app/concepts/matestack/ui/core/area/area.haml +1 -1
- data/app/concepts/matestack/ui/core/area/area.rb +2 -14
- data/app/concepts/matestack/ui/core/article/article.haml +3 -3
- data/app/concepts/matestack/ui/core/article/article.rb +1 -1
- data/app/concepts/matestack/ui/core/aside/aside.haml +1 -1
- data/app/concepts/matestack/ui/core/aside/aside.rb +0 -1
- data/app/concepts/matestack/ui/core/async/async.haml +6 -2
- data/app/concepts/matestack/ui/core/async/async.js +43 -31
- 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/b/b.haml +3 -3
- data/app/concepts/matestack/ui/core/b/b.rb +1 -1
- data/app/concepts/matestack/ui/core/bdi/bdi.haml +3 -3
- data/app/concepts/matestack/ui/core/bdi/bdi.rb +1 -0
- data/app/concepts/matestack/ui/core/bdo/bdo.haml +3 -3
- data/app/concepts/matestack/ui/core/bdo/bdo.rb +2 -7
- data/app/concepts/matestack/ui/core/blockquote/blockquote.haml +3 -3
- data/app/concepts/matestack/ui/core/blockquote/blockquote.rb +2 -7
- data/app/concepts/matestack/ui/core/br/br.haml +4 -4
- data/app/concepts/matestack/ui/core/br/br.rb +1 -1
- data/app/concepts/matestack/ui/core/button/button.haml +3 -3
- data/app/concepts/matestack/ui/core/button/button.rb +3 -7
- data/app/concepts/matestack/ui/core/cable/cable.haml +4 -0
- data/app/concepts/matestack/ui/core/cable/cable.js +100 -0
- data/app/concepts/matestack/ui/core/cable/cable.rb +28 -0
- data/app/concepts/matestack/ui/core/cable/children_wrapper.haml +2 -0
- data/app/concepts/matestack/ui/core/caption/caption.haml +3 -3
- data/app/concepts/matestack/ui/core/caption/caption.rb +1 -1
- data/app/concepts/matestack/ui/core/cite/cite.haml +3 -3
- data/app/concepts/matestack/ui/core/cite/cite.rb +1 -1
- data/app/concepts/matestack/ui/core/code/code.haml +3 -3
- data/app/concepts/matestack/ui/core/code/code.rb +1 -1
- data/app/concepts/matestack/ui/core/collection/content/content.js +2 -2
- data/app/concepts/matestack/ui/core/collection/content/content.rb +4 -6
- data/app/concepts/matestack/ui/core/collection/content/next/next.haml +1 -1
- data/app/concepts/matestack/ui/core/collection/content/page/link/link.haml +1 -1
- data/app/concepts/matestack/ui/core/collection/content/page/link/link.rb +5 -3
- data/app/concepts/matestack/ui/core/collection/content/previous/previous.haml +1 -1
- data/app/concepts/matestack/ui/core/collection/filter/filter.rb +4 -5
- data/app/concepts/matestack/ui/core/collection/filter/input/input.rb +11 -8
- data/app/concepts/matestack/ui/core/collection/filter/reset/reset.haml +1 -1
- data/app/concepts/matestack/ui/core/collection/filter/select/select.haml +10 -0
- data/app/concepts/matestack/ui/core/collection/filter/select/select.rb +30 -0
- data/app/concepts/matestack/ui/core/collection/filter/submit/submit.haml +1 -1
- data/app/concepts/matestack/ui/core/collection/helper.rb +14 -6
- data/app/concepts/matestack/ui/core/collection/order/order.js +1 -1
- data/app/concepts/matestack/ui/core/collection/order/order.rb +4 -5
- data/app/concepts/matestack/ui/core/collection/order/toggle/indicator/indicator.rb +9 -5
- data/app/concepts/matestack/ui/core/collection/order/toggle/toggle.haml +1 -1
- data/app/concepts/matestack/ui/core/collection/order/toggle/toggle.rb +0 -1
- data/app/concepts/matestack/ui/core/component/base.rb +430 -0
- data/app/concepts/matestack/ui/core/component/children.haml +2 -2
- data/app/concepts/matestack/ui/core/component/component.js +9 -46
- data/app/concepts/matestack/ui/core/component/dynamic.haml +1 -1
- data/app/concepts/matestack/ui/core/component/dynamic.rb +25 -247
- data/app/concepts/matestack/ui/core/component/static.rb +3 -12
- data/app/concepts/matestack/ui/core/data/data.haml +3 -3
- data/app/concepts/matestack/ui/core/data/data.rb +2 -5
- data/app/concepts/matestack/ui/core/datalist/datalist.haml +2 -2
- data/app/concepts/matestack/ui/core/datalist/datalist.rb +1 -2
- data/app/concepts/matestack/ui/core/dd/dd.haml +3 -3
- data/app/concepts/matestack/ui/core/dd/dd.rb +1 -1
- data/app/concepts/matestack/ui/core/del/del.haml +3 -3
- data/app/concepts/matestack/ui/core/del/del.rb +2 -0
- data/app/concepts/matestack/ui/core/details/details.haml +1 -1
- data/app/concepts/matestack/ui/core/details/details.rb +1 -1
- data/app/concepts/matestack/ui/core/dfn/dfn.haml +3 -3
- data/app/concepts/matestack/ui/core/dfn/dfn.rb +1 -1
- data/app/concepts/matestack/ui/core/dialog/dialog.haml +3 -3
- data/app/concepts/matestack/ui/core/dialog/dialog.rb +2 -5
- data/app/concepts/matestack/ui/core/div/div.haml +1 -1
- data/app/concepts/matestack/ui/core/div/div.rb +0 -1
- data/app/concepts/matestack/ui/core/dl/dl.haml +3 -3
- data/app/concepts/matestack/ui/core/dl/dl.rb +2 -2
- data/app/concepts/matestack/ui/core/dt/dt.haml +3 -3
- data/app/concepts/matestack/ui/core/dt/dt.rb +1 -1
- data/app/concepts/matestack/ui/core/em/em.haml +3 -3
- data/app/concepts/matestack/ui/core/em/em.rb +1 -1
- data/app/concepts/matestack/ui/core/fieldset/fieldset.haml +4 -4
- data/app/concepts/matestack/ui/core/fieldset/fieldset.rb +3 -6
- data/app/concepts/matestack/ui/core/figure/figure.haml +1 -1
- data/app/concepts/matestack/ui/core/figure/figure.rb +0 -1
- data/app/concepts/matestack/ui/core/footer/footer.haml +1 -1
- data/app/concepts/matestack/ui/core/footer/footer.rb +0 -1
- data/app/concepts/matestack/ui/core/form/checkbox/checkbox.rb +79 -0
- data/app/concepts/matestack/ui/core/form/form.haml +1 -1
- data/app/concepts/matestack/ui/core/form/form.js +25 -20
- data/app/concepts/matestack/ui/core/form/form.rb +35 -24
- 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 +32 -52
- data/app/concepts/matestack/ui/core/form/radio/radio.rb +71 -0
- data/app/concepts/matestack/ui/core/form/select/select.haml +9 -80
- data/app/concepts/matestack/ui/core/form/select/select.rb +41 -56
- data/app/concepts/matestack/ui/core/form/submit/submit.haml +1 -1
- data/app/concepts/matestack/ui/core/form/submit/submit.rb +5 -2
- 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/header/header.haml +1 -1
- data/app/concepts/matestack/ui/core/header/header.rb +0 -1
- data/app/concepts/matestack/ui/core/heading/heading.haml +4 -49
- data/app/concepts/matestack/ui/core/heading/heading.rb +1 -1
- data/app/concepts/matestack/ui/core/hr/hr.haml +1 -1
- data/app/concepts/matestack/ui/core/hr/hr.rb +0 -1
- data/app/concepts/matestack/ui/core/icon/icon.haml +3 -3
- data/app/concepts/matestack/ui/core/icon/icon.rb +1 -1
- data/app/concepts/matestack/ui/core/iframe/iframe.haml +3 -3
- data/app/concepts/matestack/ui/core/iframe/iframe.rb +3 -10
- data/app/concepts/matestack/ui/core/img/img.haml +1 -1
- data/app/concepts/matestack/ui/core/img/img.rb +8 -8
- data/app/concepts/matestack/ui/core/input/input.haml +1 -2
- data/app/concepts/matestack/ui/core/input/input.rb +4 -4
- data/app/concepts/matestack/ui/core/ins/ins.haml +3 -3
- data/app/concepts/matestack/ui/core/ins/ins.rb +2 -6
- 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 +6 -4
- data/app/concepts/matestack/ui/core/kbd/kbd.haml +3 -3
- data/app/concepts/matestack/ui/core/kbd/kbd.rb +1 -0
- data/app/concepts/matestack/ui/core/label/label.haml +3 -3
- data/app/concepts/matestack/ui/core/label/label.rb +2 -6
- data/app/concepts/matestack/ui/core/legend/legend.haml +3 -3
- data/app/concepts/matestack/ui/core/legend/legend.rb +1 -1
- data/app/concepts/matestack/ui/core/li/li.haml +3 -3
- data/app/concepts/matestack/ui/core/li/li.rb +2 -1
- data/app/concepts/matestack/ui/core/link/link.haml +3 -3
- data/app/concepts/matestack/ui/core/link/link.rb +10 -14
- data/app/concepts/matestack/ui/core/main/main.haml +1 -1
- data/app/concepts/matestack/ui/core/main/main.rb +0 -1
- data/app/concepts/matestack/ui/core/map/map.haml +1 -1
- data/app/concepts/matestack/ui/core/map/map.rb +1 -7
- data/app/concepts/matestack/ui/core/mark/mark.haml +3 -3
- data/app/concepts/matestack/ui/core/mark/mark.rb +1 -0
- data/app/concepts/matestack/ui/core/meter/meter.haml +1 -1
- data/app/concepts/matestack/ui/core/meter/meter.rb +1 -10
- data/app/concepts/matestack/ui/core/nav/nav.haml +1 -1
- data/app/concepts/matestack/ui/core/nav/nav.rb +0 -1
- data/app/concepts/matestack/ui/core/noscript/noscript.haml +3 -3
- data/app/concepts/matestack/ui/core/noscript/noscript.rb +1 -1
- data/app/concepts/matestack/ui/core/object/object.haml +1 -1
- data/app/concepts/matestack/ui/core/object/object.rb +1 -11
- data/app/concepts/matestack/ui/core/ol/ol.haml +1 -1
- data/app/concepts/matestack/ui/core/ol/ol.rb +1 -1
- data/app/concepts/matestack/ui/core/onclick/onclick.haml +1 -1
- data/app/concepts/matestack/ui/core/onclick/onclick.rb +1 -0
- data/app/concepts/matestack/ui/core/optgroup/optgroup.haml +1 -1
- data/app/concepts/matestack/ui/core/optgroup/optgroup.rb +1 -6
- data/app/concepts/matestack/ui/core/option/option.haml +3 -3
- data/app/concepts/matestack/ui/core/option/option.rb +2 -8
- data/app/concepts/matestack/ui/core/output/output.haml +3 -3
- data/app/concepts/matestack/ui/core/output/output.rb +2 -7
- data/app/concepts/matestack/ui/core/page/{content.js → content/content.js} +8 -2
- data/app/concepts/matestack/ui/core/page/content/content.rb +28 -0
- data/app/concepts/matestack/ui/core/page/page.haml +3 -9
- data/app/concepts/matestack/ui/core/page/page.rb +15 -179
- data/app/concepts/matestack/ui/core/paragraph/paragraph.haml +3 -3
- data/app/concepts/matestack/ui/core/paragraph/paragraph.rb +1 -1
- data/app/concepts/matestack/ui/core/param/param.haml +1 -1
- data/app/concepts/matestack/ui/core/param/param.rb +1 -6
- data/app/concepts/matestack/ui/core/partial/partial.rb +0 -1
- data/app/concepts/matestack/ui/core/picture/picture.haml +1 -1
- data/app/concepts/matestack/ui/core/pre/pre.haml +3 -3
- data/app/concepts/matestack/ui/core/pre/pre.rb +1 -1
- data/app/concepts/matestack/ui/core/progress/progress.haml +1 -1
- data/app/concepts/matestack/ui/core/progress/progress.rb +1 -10
- data/app/concepts/matestack/ui/core/q/q.haml +3 -3
- data/app/concepts/matestack/ui/core/q/q.rb +2 -7
- data/app/concepts/matestack/ui/core/rp/rp.haml +3 -3
- data/app/concepts/matestack/ui/core/rp/rp.rb +1 -1
- data/app/concepts/matestack/ui/core/rt/rt.haml +3 -3
- data/app/concepts/matestack/ui/core/rt/rt.rb +1 -1
- data/app/concepts/matestack/ui/core/ruby/ruby.haml +3 -3
- data/app/concepts/matestack/ui/core/ruby/ruby.rb +1 -1
- data/app/concepts/matestack/ui/core/s/s.haml +3 -3
- data/app/concepts/matestack/ui/core/s/s.rb +1 -1
- data/app/concepts/matestack/ui/core/samp/samp.haml +3 -3
- data/app/concepts/matestack/ui/core/samp/samp.rb +1 -0
- data/app/concepts/matestack/ui/core/section/section.haml +1 -1
- data/app/concepts/matestack/ui/core/section/section.rb +0 -1
- data/app/concepts/matestack/ui/core/slot/slot.rb +1 -2
- data/app/concepts/matestack/ui/core/small/small.haml +3 -3
- data/app/concepts/matestack/ui/core/small/small.rb +1 -1
- data/app/concepts/matestack/ui/core/span/span.haml +3 -3
- data/app/concepts/matestack/ui/core/span/span.rb +1 -1
- data/app/concepts/matestack/ui/core/strong/strong.haml +3 -3
- data/app/concepts/matestack/ui/core/strong/strong.rb +1 -1
- data/app/concepts/matestack/ui/core/sub/sub.haml +3 -3
- data/app/concepts/matestack/ui/core/sub/sub.rb +1 -1
- data/app/concepts/matestack/ui/core/summary/summary.haml +3 -3
- data/app/concepts/matestack/ui/core/summary/summary.rb +1 -1
- data/app/concepts/matestack/ui/core/sup/sup.haml +3 -3
- data/app/concepts/matestack/ui/core/sup/sup.rb +1 -1
- data/app/concepts/matestack/ui/core/table/table.haml +1 -1
- data/app/concepts/matestack/ui/core/table/table.rb +0 -1
- data/app/concepts/matestack/ui/core/tbody/tbody.haml +1 -1
- data/app/concepts/matestack/ui/core/tbody/tbody.rb +0 -1
- data/app/concepts/matestack/ui/core/td/td.haml +3 -3
- data/app/concepts/matestack/ui/core/td/td.rb +2 -1
- data/app/concepts/matestack/ui/core/template/template.haml +1 -1
- data/app/concepts/matestack/ui/core/textarea/textarea.haml +5 -0
- data/app/concepts/matestack/ui/core/textarea/textarea.rb +10 -0
- data/app/concepts/matestack/ui/core/tfoot/tfoot.haml +1 -1
- data/app/concepts/matestack/ui/core/tfoot/tfoot.rb +0 -1
- data/app/concepts/matestack/ui/core/th/th.haml +3 -3
- data/app/concepts/matestack/ui/core/th/th.rb +2 -1
- data/app/concepts/matestack/ui/core/thead/thead.haml +1 -1
- data/app/concepts/matestack/ui/core/thead/thead.rb +0 -1
- data/app/concepts/matestack/ui/core/time/time.haml +1 -1
- data/app/concepts/matestack/ui/core/time/time.rb +1 -7
- 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 +13 -0
- data/app/concepts/matestack/ui/core/tr/tr.haml +1 -1
- data/app/concepts/matestack/ui/core/tr/tr.rb +0 -1
- data/app/concepts/matestack/ui/core/transition/transition.haml +3 -3
- data/app/concepts/matestack/ui/core/transition/transition.js +1 -0
- data/app/concepts/matestack/ui/core/transition/transition.rb +14 -7
- data/app/concepts/matestack/ui/core/u/u.haml +3 -3
- data/app/concepts/matestack/ui/core/u/u.rb +1 -1
- data/app/concepts/matestack/ui/core/ul/ul.haml +1 -1
- data/app/concepts/matestack/ui/core/ul/ul.rb +0 -1
- data/app/concepts/matestack/ui/core/unescaped/unescaped.rb +3 -1
- data/app/concepts/matestack/ui/core/var/var.haml +3 -3
- data/app/concepts/matestack/ui/core/var/var.rb +1 -0
- data/app/concepts/matestack/ui/core/video/video.haml +2 -2
- data/app/concepts/matestack/ui/core/video/video.rb +4 -14
- data/app/concepts/matestack/ui/core/view/view.haml +1 -0
- data/app/concepts/matestack/ui/core/view/view.rb +30 -0
- data/app/concepts/matestack/ui/core/wbr/wbr.haml +5 -1
- data/app/concepts/matestack/ui/core/wbr/wbr.rb +1 -0
- data/app/concepts/matestack/ui/core/youtube/youtube.haml +1 -1
- data/app/concepts/matestack/ui/core/youtube/youtube.rb +18 -16
- data/app/helpers/matestack/ui/core/application_helper.rb +94 -21
- data/app/lib/matestack/ui/component.rb +1 -0
- data/app/lib/matestack/ui/core/has_view_context.rb +6 -4
- data/app/lib/matestack/ui/core/html_attributes.rb +43 -0
- data/app/lib/matestack/ui/core/properties.rb +161 -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 +203 -0
- data/app/lib/matestack/ui/isolated_component.rb +1 -0
- data/app/lib/matestack/ui/vue_js_component.rb +1 -0
- data/lib/matestack/ui/core.rb +4 -2
- data/lib/matestack/ui/core/cell.rb +0 -2
- data/lib/matestack/ui/core/component/registry.rb +47 -0
- data/lib/matestack/ui/core/components.rb +269 -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/matestack-ui-core.js +467 -142
- data/vendor/assets/javascripts/dist/matestack-ui-core.js.map +1 -1
- data/vendor/assets/javascripts/dist/matestack-ui-core.min.js +1 -1
- 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 -1
- 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
- metadata +50 -63
- data/MIT-LICENSE +0 -20
- data/app/concepts/matestack/ui/core/absolute/absolute.haml +0 -3
- data/app/concepts/matestack/ui/core/absolute/absolute.rb +0 -17
- data/app/concepts/matestack/ui/core/collection/filter/input/input.haml +0 -2
- data/app/concepts/matestack/ui/core/component/response.haml +0 -2
- data/app/concepts/matestack/ui/core/component/response_dynamic.haml +0 -7
- data/app/concepts/matestack/ui/core/component/response_dynamic_without_rerender.haml +0 -3
- data/app/concepts/matestack/ui/core/component/static.haml +0 -1
- 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 -46
- 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.haml +0 -5
- data/app/concepts/matestack/ui/core/pg/pg.rb +0 -5
- data/app/lib/matestack/ui/core/app_node.rb +0 -53
- data/app/lib/matestack/ui/core/component_node.rb +0 -87
- data/app/lib/matestack/ui/core/page_node.rb +0 -100
- data/app/lib/matestack/ui/core/render.rb +0 -89
- data/app/lib/matestack/ui/core/to_cell.rb +0 -129
@@ -1,17 +0,0 @@
|
|
1
|
-
require_dependency "cell/partial"
|
2
|
-
|
3
|
-
module Matestack::Ui::Core::Html
|
4
|
-
class Html < Matestack::Ui::Core::Component::Dynamic
|
5
|
-
|
6
|
-
include Cell::ViewModel::Partial
|
7
|
-
|
8
|
-
view_paths << "#{::Rails.root}/app/views"
|
9
|
-
|
10
|
-
def include_partial(&block)
|
11
|
-
render partial: "#{options[:path]}" do
|
12
|
-
capture(&block)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
module Matestack::Ui::Core::Isolate
|
2
|
-
class Isolate < Matestack::Ui::Core::Component::Static
|
3
|
-
|
4
|
-
def setup
|
5
|
-
@component_key = @component_key + "__" + @argument.to_s
|
6
|
-
@component_key = @component_key + "(" + @cached_params.to_json + ")" if @cached_params.present?
|
7
|
-
@component_config[:component_key] = @component_key
|
8
|
-
end
|
9
|
-
|
10
|
-
end
|
11
|
-
end
|
@@ -1,7 +0,0 @@
|
|
1
|
-
%div{"class": "matestack_page"}
|
2
|
-
%div{"v-if": "asyncPageTemplate == null"}
|
3
|
-
%div{"class": "matestack_page_content"}
|
4
|
-
- @children_cells.each do |key, cell|
|
5
|
-
= cell.call(:show)
|
6
|
-
%div{"v-if": "asyncPageTemplate != null"}
|
7
|
-
%v-runtime-template{":template":"asyncPageTemplate"}
|
@@ -1,53 +0,0 @@
|
|
1
|
-
module Matestack::Ui::Core
|
2
|
-
class AppNode
|
3
|
-
|
4
|
-
def self.build(app_instance, &block)
|
5
|
-
node = AppNode.new(app_instance)
|
6
|
-
node.instance_eval(&block)
|
7
|
-
node.hash
|
8
|
-
end
|
9
|
-
|
10
|
-
attr_reader :hash
|
11
|
-
|
12
|
-
def initialize(app_instance)
|
13
|
-
@hash = {}
|
14
|
-
@node_start_id = 0
|
15
|
-
@app_instance = app_instance
|
16
|
-
app_instance.instance_variables.each do |app_instance_var_key|
|
17
|
-
self.instance_variable_set(app_instance_var_key, app_instance.instance_variable_get(app_instance_var_key))
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def method_missing meth, *args, &block
|
22
|
-
begin
|
23
|
-
@app_instance.send(meth, *args, &block)
|
24
|
-
rescue
|
25
|
-
node_id = @node_start_id + 1
|
26
|
-
@node_start_id = node_id
|
27
|
-
current_node = "#{meth}_#{@node_start_id}"
|
28
|
-
@hash[current_node] = {}
|
29
|
-
@hash[current_node]["component_name"] = meth.to_s
|
30
|
-
@hash[current_node]["config"] = {}
|
31
|
-
@hash[current_node]["argument"] = nil
|
32
|
-
|
33
|
-
if meth == :page_content
|
34
|
-
@hash[current_node]["components"] = @app_instance.send(:page_nodes)
|
35
|
-
elsif meth == :partial
|
36
|
-
@hash[current_node]["components"] = @app_instance.send(args.first, *args.drop(1))
|
37
|
-
else
|
38
|
-
if args.first.is_a?(Hash)
|
39
|
-
@hash[current_node]["config"] = args.first
|
40
|
-
else
|
41
|
-
@hash[current_node]["argument"] = args.first
|
42
|
-
end
|
43
|
-
|
44
|
-
if block_given?
|
45
|
-
@hash[current_node]["components"] = AppNode.build(@app_instance, &block)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
53
|
-
end
|
@@ -1,87 +0,0 @@
|
|
1
|
-
module Matestack::Ui::Core
|
2
|
-
class ComponentNode
|
3
|
-
|
4
|
-
def self.build(component_instance, included_config, &block)
|
5
|
-
node = ComponentNode.new(component_instance, included_config)
|
6
|
-
node.instance_eval(&block)
|
7
|
-
node.hash
|
8
|
-
end
|
9
|
-
|
10
|
-
attr_reader :hash
|
11
|
-
|
12
|
-
def initialize(component_instance, included_config)
|
13
|
-
@hash = {}
|
14
|
-
@node_start_id = 0
|
15
|
-
@component_instance = component_instance
|
16
|
-
component_instance.instance_variables.each do |component_instance_var_key|
|
17
|
-
self.instance_variable_set(component_instance_var_key, component_instance.instance_variable_get(component_instance_var_key))
|
18
|
-
end
|
19
|
-
@included_config = included_config
|
20
|
-
end
|
21
|
-
|
22
|
-
def method_missing meth, *args, &block
|
23
|
-
begin
|
24
|
-
if (result = @component_instance.send(meth, *args, &block)).kind_of? ActiveSupport::SafeBuffer
|
25
|
-
plain result
|
26
|
-
else
|
27
|
-
result
|
28
|
-
end
|
29
|
-
rescue
|
30
|
-
node_id = @node_start_id + 1
|
31
|
-
@node_start_id = node_id
|
32
|
-
current_node = "#{meth}_#{@node_start_id}"
|
33
|
-
@hash[current_node] = {}
|
34
|
-
@hash[current_node]["component_name"] = meth.to_s
|
35
|
-
@hash[current_node]["config"] = {}
|
36
|
-
@hash[current_node]["argument"] = nil
|
37
|
-
@hash[current_node]["included_config"] = @included_config
|
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
|
-
|
53
|
-
if meth == :partial
|
54
|
-
@hash[current_node]["components"] = @component_instance.send(args.first, *args.drop(1))
|
55
|
-
elsif meth == :yield_components
|
56
|
-
@hash[current_node]["component_name"] = "partial"
|
57
|
-
@hash[current_node]["components"] = @component_instance.send(:get_children)
|
58
|
-
else
|
59
|
-
if args.first.is_a?(Hash)
|
60
|
-
@hash[current_node]["config"] = args.first unless meth == :slot
|
61
|
-
else
|
62
|
-
@hash[current_node]["argument"] = args.first
|
63
|
-
end
|
64
|
-
|
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
|
74
|
-
|
75
|
-
if block_given?
|
76
|
-
@hash[current_node]["components"] = ComponentNode.build(@component_instance, included, &block)
|
77
|
-
elsif meth == :slot
|
78
|
-
# @hash[current_node]["components"] = ComponentNode.build(@component_instance, included, &args.first)
|
79
|
-
@hash[current_node]["components"] = args.first
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
end
|
85
|
-
|
86
|
-
end
|
87
|
-
end
|
@@ -1,100 +0,0 @@
|
|
1
|
-
module Matestack::Ui::Core
|
2
|
-
class PageNode
|
3
|
-
|
4
|
-
def self.build(page_instance, included_config, url_params, &block)
|
5
|
-
node = PageNode.new(page_instance, included_config, url_params)
|
6
|
-
node.instance_eval(&block)
|
7
|
-
node.hash
|
8
|
-
end
|
9
|
-
|
10
|
-
attr_reader :hash
|
11
|
-
|
12
|
-
def initialize(page_instance, included_config, url_params)
|
13
|
-
@hash = {}
|
14
|
-
@node_start_id = 0
|
15
|
-
@included_config = included_config
|
16
|
-
@url_params = url_params
|
17
|
-
@page_instance = page_instance
|
18
|
-
page_instance.instance_variables.each do |page_instance_var_key|
|
19
|
-
self.instance_variable_set(page_instance_var_key, page_instance.instance_variable_get(page_instance_var_key))
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def method_missing meth, *args, &block
|
24
|
-
begin
|
25
|
-
if (result = @page_instance.send(meth, *args, &block)).kind_of? ActiveSupport::SafeBuffer
|
26
|
-
plain result
|
27
|
-
else
|
28
|
-
result
|
29
|
-
end
|
30
|
-
rescue
|
31
|
-
node_id = @node_start_id + 1
|
32
|
-
@node_start_id = node_id
|
33
|
-
current_node = "#{meth}_#{@node_start_id}"
|
34
|
-
@hash[current_node] = {}
|
35
|
-
@hash[current_node]["component_name"] = meth.to_s
|
36
|
-
@hash[current_node]["config"] = {}
|
37
|
-
@hash[current_node]["included_config"] = @included_config
|
38
|
-
@hash[current_node]["argument"] = nil
|
39
|
-
|
40
|
-
if args.second == :include
|
41
|
-
included = args.first
|
42
|
-
else
|
43
|
-
unless @included_config.nil?
|
44
|
-
included = @included_config
|
45
|
-
else
|
46
|
-
included = nil
|
47
|
-
end
|
48
|
-
end
|
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
|
-
|
71
|
-
if meth == :partial
|
72
|
-
partial_block = @page_instance.send(args.first, *args.drop(1))
|
73
|
-
@hash[current_node]["components"] = PageNode.build(
|
74
|
-
@page_instance, included, @url_params, &partial_block
|
75
|
-
)
|
76
|
-
else
|
77
|
-
if args.first.is_a?(Hash)
|
78
|
-
@hash[current_node]["config"] = args.first
|
79
|
-
else
|
80
|
-
@hash[current_node]["argument"] = args.first
|
81
|
-
end
|
82
|
-
|
83
|
-
if block_given?
|
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
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
end
|
98
|
-
|
99
|
-
end
|
100
|
-
end
|
@@ -1,89 +0,0 @@
|
|
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,129 +0,0 @@
|
|
1
|
-
module Matestack::Ui::Core::ToCell
|
2
|
-
|
3
|
-
def to_cell(key, component_name, config, argument, children, included_config, cached_params=nil)
|
4
|
-
# p cached_params
|
5
|
-
request_uri = context[:request].env["REQUEST_URI"]
|
6
|
-
query_string = context[:request].env["QUERY_STRING"]
|
7
|
-
|
8
|
-
config.merge!(component_key: key)
|
9
|
-
config.merge!(children: children)
|
10
|
-
config.merge!(origin_url: request_uri.gsub("?" + query_string, ""))
|
11
|
-
config.merge!(url_params: context[:params])
|
12
|
-
config.merge!(included_config: included_config)
|
13
|
-
config.merge!(cached_params: cached_params)
|
14
|
-
|
15
|
-
if component_name.start_with?("custom")
|
16
|
-
return resolve_custom_component(component_name, argument, config)
|
17
|
-
else
|
18
|
-
return resolve_core_component(component_name, argument, config)
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def resolve_custom_component(component_name, argument, config)
|
26
|
-
name = component_name.gsub("_", "/")
|
27
|
-
|
28
|
-
path = name.split("/")[1..-1]
|
29
|
-
path_camelized = path.map { |x| x.camelize }
|
30
|
-
|
31
|
-
if path_camelized.count == 1
|
32
|
-
class_name = "#{path_camelized[0]}"
|
33
|
-
rewritten_path = [path[0]]
|
34
|
-
else
|
35
|
-
class_name = path_camelized.join("::")
|
36
|
-
rewritten_path = path
|
37
|
-
end
|
38
|
-
|
39
|
-
custom_component_class_name = "Components::" + class_name
|
40
|
-
|
41
|
-
begin
|
42
|
-
begin
|
43
|
-
component_class = Object.const_get(custom_component_class_name, false)
|
44
|
-
rescue => e
|
45
|
-
raise "#{e.message.nil? ? '': 'Got Error: '+e.message}. \
|
46
|
-
Make sure to define your custom component class correctly \
|
47
|
-
in \"matestack/components/#{rewritten_path.join('/')}.rb\""
|
48
|
-
end
|
49
|
-
if component_class.is_a?(Class)
|
50
|
-
return cell(component_class, argument, config)
|
51
|
-
else
|
52
|
-
raise "Given component #{component_class} is not a class. \
|
53
|
-
You might forget to add the component name to your component call"
|
54
|
-
end
|
55
|
-
rescue => e
|
56
|
-
raise "#{component_name} > #{e.message}"
|
57
|
-
end
|
58
|
-
|
59
|
-
end
|
60
|
-
|
61
|
-
def resolve_core_component(component_name, argument, config)
|
62
|
-
name = component_name.gsub("_", "/")
|
63
|
-
|
64
|
-
unless name.include?("/")
|
65
|
-
name = "#{name}/#{name}"
|
66
|
-
end
|
67
|
-
|
68
|
-
path = name.split("/")
|
69
|
-
path_camelized = path.map { |x| x.camelize }
|
70
|
-
class_name = path_camelized.join("::")
|
71
|
-
|
72
|
-
core_component_class_name = "Matestack::Ui::Core::" + class_name
|
73
|
-
begin
|
74
|
-
begin
|
75
|
-
component_class = Object.const_get(core_component_class_name, false)
|
76
|
-
unless component_class.is_a?(Class)
|
77
|
-
core_component_class_name = core_component_class_name + "::#{name.split("/").last.camelize}"
|
78
|
-
component_class = Object.const_get(core_component_class_name, false)
|
79
|
-
end
|
80
|
-
rescue => e
|
81
|
-
begin
|
82
|
-
return resolve_namespaced_component(component_name, argument, config)
|
83
|
-
rescue => e
|
84
|
-
raise "#{e.message.nil? ? '': 'Got Error: '+e.message}. \
|
85
|
-
Component '#{component_name}' not found. Looking for Class '#{core_component_class_name}'. \
|
86
|
-
Make sure to prefix a custom component with 'custom_'"
|
87
|
-
end
|
88
|
-
end
|
89
|
-
return cell(component_class, argument, config)
|
90
|
-
rescue => e
|
91
|
-
raise "#{component_name} > #{e.message}"
|
92
|
-
end
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
|
-
def resolve_namespaced_component(component_name, argument, config)
|
97
|
-
name = component_name.gsub("_", "/")
|
98
|
-
|
99
|
-
path = name.split("/")[1..-1]
|
100
|
-
namespace = name.split("/")[0].camelize
|
101
|
-
path_camelized = path.map { |x| x.camelize }
|
102
|
-
|
103
|
-
if path_camelized.count == 1
|
104
|
-
class_name = "#{path_camelized[0]}::#{path_camelized[0]}"
|
105
|
-
rewritten_path = [path[0], path[0]]
|
106
|
-
else
|
107
|
-
class_name = path_camelized[0..-1].join("::")
|
108
|
-
rewritten_path = path[0..-1]
|
109
|
-
end
|
110
|
-
|
111
|
-
namespaced_class_name = "Matestack::Ui::" + namespace + "::" + class_name
|
112
|
-
|
113
|
-
begin
|
114
|
-
begin
|
115
|
-
component_class = Object.const_get(namespaced_class_name, false)
|
116
|
-
unless component_class.is_a?(Class)
|
117
|
-
namespaced_class_name = namespaced_class_name + "::#{name.split("/").last.camelize}"
|
118
|
-
component_class = Object.const_get(namespaced_class_name, false)
|
119
|
-
end
|
120
|
-
rescue => e
|
121
|
-
raise "#{e.message}"
|
122
|
-
end
|
123
|
-
return cell(component_class, argument, config)
|
124
|
-
rescue => e
|
125
|
-
raise "#{e.message}"
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
end
|