matestack-ui-core 0.7.1 → 0.7.5
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 -4
- 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 +14 -3
- data/app/concepts/matestack/ui/core/app/app.rb +3 -28
- data/app/concepts/matestack/ui/core/app/location.js +9 -0
- data/app/concepts/matestack/ui/core/app/store.js +12 -6
- 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 +5 -4
- 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.rb +3 -1
- data/app/concepts/matestack/ui/core/button/button.haml +4 -6
- data/app/concepts/matestack/ui/core/caption/caption.haml +2 -3
- 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 -6
- data/app/concepts/matestack/ui/core/collection/content/content.rb +1 -1
- data/app/concepts/matestack/ui/core/collection/filter/filter.js +3 -5
- data/app/concepts/matestack/ui/core/collection/filter/filter.rb +1 -1
- data/app/concepts/matestack/ui/core/collection/filter/input/input.haml +1 -7
- data/app/concepts/matestack/ui/core/collection/filter/input/input.rb +12 -0
- data/app/concepts/matestack/ui/core/collection/helper.rb +0 -1
- data/app/concepts/matestack/ui/core/collection/order/order.js +3 -5
- data/app/concepts/matestack/ui/core/collection/order/order.rb +1 -1
- data/app/concepts/matestack/ui/core/collection/order/toggle/indicator/indicator.rb +3 -1
- data/app/concepts/matestack/ui/core/collection/order/toggle/toggle.rb +0 -1
- data/app/concepts/matestack/ui/core/component/anonym-dynamic-component.js +1 -1
- data/app/concepts/matestack/ui/core/component/component.js +1 -2
- 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/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/details/details.rb +1 -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 +30 -21
- data/app/concepts/matestack/ui/core/form/input/input.rb +36 -29
- 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/input/input.haml +2 -3
- data/app/concepts/matestack/ui/core/input/input.rb +4 -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 +41 -18
- 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.rb +2 -1
- 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 +61 -22
- 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/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 +2 -3
- data/app/concepts/matestack/ui/core/summary/summary.rb +1 -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 -1
- data/app/concepts/matestack/ui/core/video/video.rb +17 -1
- 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 +14 -0
- data/app/lib/matestack/ui/core/page_node.rb +26 -1
- 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/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 +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 +22 -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 +16605 -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 +168 -32
- 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/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 -15392
- data/vendor/assets/javascripts/matestack-ui-core.js.map +0 -1
@@ -0,0 +1,14 @@
|
|
1
|
+
module Matestack::Ui::Core::Iframe
|
2
|
+
class Iframe < Matestack::Ui::Core::Component::Static
|
3
|
+
|
4
|
+
def setup
|
5
|
+
@tag_attributes.merge!({
|
6
|
+
src: options[:src],
|
7
|
+
height: options[:height],
|
8
|
+
width: options[:width],
|
9
|
+
srcdoc: options[:srcdoc]
|
10
|
+
})
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
%img{@tag_attributes}
|
@@ -1,5 +1,15 @@
|
|
1
1
|
module Matestack::Ui::Core::Img
|
2
2
|
class Img < Matestack::Ui::Core::Component::Static
|
3
3
|
|
4
|
+
def setup
|
5
|
+
@tag_attributes.merge!({
|
6
|
+
src: ActionController::Base.helpers.asset_path(options[:path]),
|
7
|
+
height: options[:height],
|
8
|
+
width: options[:width],
|
9
|
+
usemap: options[:usemap],
|
10
|
+
alt: options[:alt]
|
11
|
+
})
|
12
|
+
end
|
13
|
+
|
4
14
|
end
|
5
15
|
end
|
@@ -1,3 +1,2 @@
|
|
1
|
-
%input{@tag_attributes
|
2
|
-
|
3
|
-
= yield
|
1
|
+
%input{ @tag_attributes,
|
2
|
+
type: type }
|
@@ -0,0 +1,11 @@
|
|
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,30 +1,53 @@
|
|
1
1
|
import Vue from 'vue/dist/vue.esm'
|
2
|
+
import { turbolinksAdapterMixin } from 'vue-turbolinks';
|
2
3
|
|
3
|
-
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import
|
7
|
-
import
|
8
|
-
import
|
9
|
-
import
|
10
|
-
import
|
11
|
-
import
|
12
|
-
import
|
13
|
-
import
|
14
|
-
import onclick from 'onclick/onclick'
|
15
|
-
import collectionContent from 'collection/content/content'
|
16
|
-
import collectionFilter from 'collection/filter/filter'
|
17
|
-
import collectionOrder from 'collection/order/order'
|
4
|
+
// Import from app/concepts/matestack/ui/core:
|
5
|
+
import app from '../app/app'
|
6
|
+
import async from '../async/async'
|
7
|
+
import pageContent from '../page/content'
|
8
|
+
import store from '../app/store'
|
9
|
+
import component from '../component/component'
|
10
|
+
import anonymDynamicComponent from '../component/anonym-dynamic-component'
|
11
|
+
import html from '../html/html'
|
12
|
+
import transition from '../transition/transition'
|
13
|
+
import action from '../action/action'
|
14
|
+
import form from '../form/form'
|
15
|
+
import onclick from '../onclick/onclick'
|
16
|
+
import collectionContent from '../collection/content/content'
|
17
|
+
import collectionFilter from '../collection/filter/filter'
|
18
|
+
import collectionOrder from '../collection/order/order'
|
18
19
|
|
19
20
|
let matestackUiApp = undefined
|
20
21
|
|
22
|
+
// this event fires first and always
|
21
23
|
document.addEventListener('DOMContentLoaded', () => {
|
22
|
-
|
23
|
-
|
24
|
+
// somehow we need to inject the turbolinks mixin even
|
25
|
+
// if the turbolinks:load event will recreate the vue instance
|
26
|
+
// skipping the injection here caused errors when submitting forms or action
|
27
|
+
// if they were present on the first page, which was loaded and activated turbolinks
|
28
|
+
// the mixin does not impact the app when turbolinks is disabled
|
29
|
+
matestackUiApp = new Vue({
|
24
30
|
el: "#matestack_ui",
|
31
|
+
mixins: [turbolinksAdapterMixin],
|
25
32
|
store: store
|
26
|
-
|
33
|
+
})
|
34
|
+
})
|
27
35
|
|
36
|
+
// this event fires after DOMContentLoaded and only if turbolinks are enabled
|
37
|
+
document.addEventListener('turbolinks:load', () => {
|
38
|
+
// we need to empty the currently stored pageTemplate state variable
|
39
|
+
// otherwise the matestack page will jump back to the latest pageTemplate
|
40
|
+
// fetched during the last matestack transition as the turbolinks powered
|
41
|
+
// page transition does not write the matestack store pageTemplate state variable
|
42
|
+
store.commit('resetPageTemplate')
|
43
|
+
// we need to destroy the vue app instance
|
44
|
+
matestackUiApp.$destroy();
|
45
|
+
// and recreate it right afterwards in order to work when used with turbolinks
|
46
|
+
matestackUiApp = new Vue({
|
47
|
+
el: "#matestack_ui",
|
48
|
+
mixins: [turbolinksAdapterMixin],
|
49
|
+
store: store
|
50
|
+
})
|
28
51
|
})
|
29
52
|
|
30
53
|
export default Vue
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Matestack::Ui::Core::Meter
|
2
|
+
class Meter < Matestack::Ui::Core::Component::Static
|
3
|
+
def setup
|
4
|
+
@tag_attributes.merge!({
|
5
|
+
value: options[:value],
|
6
|
+
min: options[:min],
|
7
|
+
max: options[:max],
|
8
|
+
low: options[:low],
|
9
|
+
high: options[:high],
|
10
|
+
optimum: options[:optimum]
|
11
|
+
})
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
%object{@tag_attributes}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Matestack::Ui::Core::Object
|
2
|
+
class Object < Matestack::Ui::Core::Component::Static
|
3
|
+
def setup
|
4
|
+
@tag_attributes.merge!({
|
5
|
+
width: options[:width],
|
6
|
+
height: options[:height],
|
7
|
+
data: options[:data],
|
8
|
+
form: options[:form],
|
9
|
+
name: options[:name],
|
10
|
+
type: options[:type],
|
11
|
+
usemap: options[:usemap]
|
12
|
+
})
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -1,2 +1,2 @@
|
|
1
|
-
%div{"@click": "perform"}
|
1
|
+
%div{@tag_attributes, "@click": "perform"}
|
2
2
|
= yield
|
@@ -1,8 +1,7 @@
|
|
1
1
|
import Vue from 'vue/dist/vue.esm'
|
2
2
|
|
3
|
-
import matestackEventHub from 'js/event-hub'
|
4
|
-
|
5
|
-
import componentMixin from 'component/component'
|
3
|
+
import matestackEventHub from '../js/event-hub'
|
4
|
+
import componentMixin from '../component/component'
|
6
5
|
|
7
6
|
const componentDef = {
|
8
7
|
mixins: [componentMixin],
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Matestack::Ui::Core::Option
|
2
|
+
class Option < Matestack::Ui::Core::Component::Static
|
3
|
+
def setup
|
4
|
+
@tag_attributes.merge!(
|
5
|
+
disabled: options[:disabled] ||= nil,
|
6
|
+
selected: options[:selected] ||= nil,
|
7
|
+
label: options[:label],
|
8
|
+
value: options[:value]
|
9
|
+
)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -2,9 +2,10 @@ module Matestack::Ui::Core::Page
|
|
2
2
|
class Page < Trailblazer::Cell
|
3
3
|
|
4
4
|
include ActionView::Helpers::TranslationHelper
|
5
|
-
include ::Cell
|
5
|
+
include Matestack::Ui::Core::Cell
|
6
6
|
include Matestack::Ui::Core::ApplicationHelper
|
7
7
|
include Matestack::Ui::Core::ToCell
|
8
|
+
include Matestack::Ui::Core::HasViewContext
|
8
9
|
|
9
10
|
view_paths << "#{Matestack::Ui::Core::Engine.root}/app/concepts"
|
10
11
|
|
@@ -53,7 +54,7 @@ module Matestack::Ui::Core::Page
|
|
53
54
|
|
54
55
|
def nodes_to_cell
|
55
56
|
@nodes.each do |key, node|
|
56
|
-
@cells[key] = to_cell(key, node["component_name"], node["config"], node["argument"], node["components"], node["included_config"])
|
57
|
+
@cells[key] = to_cell(key, node["component_name"], node["config"], node["argument"], node["components"], node["included_config"], node["cached_params"])
|
57
58
|
end
|
58
59
|
end
|
59
60
|
|
@@ -65,9 +66,15 @@ module Matestack::Ui::Core::Page
|
|
65
66
|
Matestack::Ui::Core::PageNode.build(self, nil, context[:params], &block)
|
66
67
|
end
|
67
68
|
|
69
|
+
def isolate(&block)
|
70
|
+
return block
|
71
|
+
end
|
72
|
+
|
68
73
|
|
69
74
|
def show(component_key=nil, only_page=false)
|
70
75
|
prepare
|
76
|
+
return resolve_isolated_component(component_key) if !component_key.nil? && component_key.include?("isolate")
|
77
|
+
|
71
78
|
response
|
72
79
|
|
73
80
|
render_mode = nil
|
@@ -85,34 +92,68 @@ module Matestack::Ui::Core::Page
|
|
85
92
|
concept(@app_class).call(:show, @page_id, @nodes)
|
86
93
|
when :render_component
|
87
94
|
begin
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
if page_content_keys.any?
|
92
|
-
keys_array = keys_array.drop(keys_array.find_index(page_content_keys[0])+2)
|
93
|
-
end
|
94
|
-
node = @nodes.dig(*keys_array)
|
95
|
-
cell = to_cell(component_key, node["component_name"], node["config"], node["argument"], node["components"], node["included_config"])
|
96
|
-
return cell.render_content
|
97
|
-
else
|
98
|
-
node = @nodes[component_key]
|
99
|
-
cell = to_cell(component_key, node["component_name"], node["config"], node["argument"], node["components"], node["included_config"])
|
100
|
-
return cell.render_content
|
101
|
-
end
|
102
|
-
rescue
|
103
|
-
raise "Component '#{component_key}' could not be resolved. Notice: Rerendering currently works only on page-level. \
|
104
|
-
You are therefore currently not able to use 'async' within a component for example!"
|
95
|
+
render_child_component component_key
|
96
|
+
rescue => e
|
97
|
+
raise "Component '#{component_key}' could not be resolved, because of #{e},\n#{e.backtrace.join("\n")}"
|
105
98
|
end
|
106
99
|
end
|
107
100
|
end
|
108
101
|
|
109
|
-
|
110
102
|
def page_id
|
111
103
|
@custom_page_id ||= @page_id
|
112
104
|
end
|
113
105
|
|
106
|
+
def render_child_component component_key
|
107
|
+
if component_key.include?("__")
|
108
|
+
keys_array = component_key.gsub("__", "__components__").split("__").map {|k| k.to_s}
|
109
|
+
page_content_keys = keys_array.select{|key| key.match(/^page_content_/)}
|
110
|
+
if page_content_keys.any?
|
111
|
+
keys_array = keys_array.drop(keys_array.find_index(page_content_keys[0])+2)
|
112
|
+
end
|
113
|
+
if @nodes.dig(*keys_array) == nil
|
114
|
+
rest = []
|
115
|
+
while @nodes.dig(*keys_array) == nil
|
116
|
+
rest << keys_array.pop
|
117
|
+
end
|
118
|
+
node = @nodes.dig(*keys_array)
|
119
|
+
cell = to_cell(component_key, node["component_name"], node["config"], node["argument"], node["components"], node["included_config"], node["cached_params"])
|
120
|
+
return cell.render_child_component component_key, rest.reverse[1..-1]
|
121
|
+
else
|
122
|
+
node = @nodes.dig(*keys_array)
|
123
|
+
cell = to_cell(component_key, node["component_name"], node["config"], node["argument"], node["components"], node["included_config"], node["cached_params"])
|
124
|
+
return cell.render_content
|
125
|
+
end
|
126
|
+
else
|
127
|
+
node = @nodes[component_key]
|
128
|
+
cell = to_cell(component_key, node["component_name"], node["config"], node["argument"], node["components"], node["included_config"], node["cached_params"])
|
129
|
+
return cell.render_content
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
|
114
134
|
private
|
115
135
|
|
136
|
+
def resolve_isolated_component component_key
|
137
|
+
keys_array = component_key.gsub("__", "__components__").split("__").map {|k| k.to_s}
|
138
|
+
isolate_keys = keys_array.select{|key| key.match(/^isolate_/)}
|
139
|
+
keys_array = keys_array.drop(keys_array.find_index(isolate_keys[0])+2)
|
140
|
+
isolated_scope_method = keys_array[0]
|
141
|
+
if isolated_scope_method.include?("(")
|
142
|
+
isolated_scope_method_name = isolated_scope_method.split("(").first
|
143
|
+
isolated_scope_method_argument = isolated_scope_method.split("(").last.split(")").first
|
144
|
+
isolated_scope_method_argument = JSON.parse(isolated_scope_method_argument)
|
145
|
+
isolated_block = self.send(isolated_scope_method_name, isolated_scope_method_argument.with_indifferent_access)
|
146
|
+
else
|
147
|
+
isolated_block = self.send(isolated_scope_method)
|
148
|
+
end
|
149
|
+
nodes = Matestack::Ui::Core::PageNode.build(
|
150
|
+
self, nil, context[:params], &isolated_block
|
151
|
+
)
|
152
|
+
node = nodes.dig(*keys_array.drop(2))
|
153
|
+
cell = to_cell(component_key, node["component_name"], node["config"], node["argument"], node["components"], node["included_config"], node["cached_params"])
|
154
|
+
return cell.render_content
|
155
|
+
end
|
156
|
+
|
116
157
|
def generate_page_name
|
117
158
|
name_parts = self.class.name.split("::").map { |name| name.underscore }
|
118
159
|
@page_id = name_parts.join("_")
|
@@ -145,7 +186,5 @@ module Matestack::Ui::Core::Page
|
|
145
186
|
end
|
146
187
|
end
|
147
188
|
|
148
|
-
|
149
189
|
end
|
150
|
-
|
151
190
|
end
|