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
@@ -0,0 +1 @@
|
|
1
|
+
Matestack::Ui::DynamicActionviewComponent = Matestack::Ui::Core::Actionview::Dynamic
|
@@ -0,0 +1 @@
|
|
1
|
+
Matestack::Ui::IsolatedComponent = Matestack::Ui::Core::Isolated::Isolated
|
@@ -0,0 +1 @@
|
|
1
|
+
Matestack::Ui::StaticActionviewComponent = Matestack::Ui::Core::Actionview::Static
|
@@ -0,0 +1 @@
|
|
1
|
+
Matestack::Ui::VueJsComponent = Matestack::Ui::Core::Component::Dynamic
|
data/config/routes.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
Description:
|
2
|
+
Stubs out a new matestack app. Pass the app name under_scored.
|
3
|
+
|
4
|
+
If you want so, pass the option '--all_inclusive' to also create
|
5
|
+
a corresponding matestack example_page, a controller, its action
|
6
|
+
and the route in 'config/routes.rb'.
|
7
|
+
|
8
|
+
Example 1:
|
9
|
+
`rails generate matestack:app example_app`
|
10
|
+
|
11
|
+
This will create:
|
12
|
+
app/matestack/apps/example_app.rb
|
13
|
+
|
14
|
+
Example 2:
|
15
|
+
`rails generate matestack:app example_app --all_inclusive`
|
16
|
+
|
17
|
+
This will create:
|
18
|
+
app/matestack/apps/example_app.rb
|
19
|
+
app/matestack/pages/example_app/example_page.rb
|
20
|
+
app/controllers/example_app_controller.rb
|
21
|
+
route get 'example_app/example_page', to: 'example_app#example_page'
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Matestack
|
4
|
+
module Generators
|
5
|
+
class AppGenerator < Rails::Generators::NamedBase
|
6
|
+
source_root File.expand_path('templates', __dir__)
|
7
|
+
|
8
|
+
class_option :all_inclusive, type: :boolean, default: false
|
9
|
+
|
10
|
+
def create_app
|
11
|
+
template 'app/matestack/apps/%file_name%.rb.tt'
|
12
|
+
|
13
|
+
if options[:all_inclusive] == true
|
14
|
+
template 'app/controllers/%file_name%_controller.rb'
|
15
|
+
|
16
|
+
route %{get '#{file_name}/example_page', to: '#{file_name}\#example_page'}
|
17
|
+
|
18
|
+
generate "matestack:page example_page --app_name #{file_name} --called_by_app_generator=true"
|
19
|
+
|
20
|
+
puts "You can visit your new matestack apps' example page under http://localhost:3000/#{file_name}/example_page"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class Apps::<%= class_name %> < Matestack::Ui::App
|
2
|
+
# OPTIONAL: Prepare data that gets used on every page of this app
|
3
|
+
# def prepare
|
4
|
+
# API calls and db queries go here
|
5
|
+
# end
|
6
|
+
|
7
|
+
# MANDATORY: This is where your matestack pages get yielded
|
8
|
+
def response
|
9
|
+
components {
|
10
|
+
heading text: 'Welcome to your <%= class_name %> app'
|
11
|
+
page_content
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
# OPTIONAL: Use partials to render stuff like layout components
|
16
|
+
# def partial_example
|
17
|
+
# partial {
|
18
|
+
# # your components go here
|
19
|
+
# }
|
20
|
+
# end
|
21
|
+
|
22
|
+
# OPTIONAL: Slots come after partials
|
23
|
+
# def slot_example
|
24
|
+
# slot {
|
25
|
+
# # your components go here
|
26
|
+
# }
|
27
|
+
# end
|
28
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Description:
|
2
|
+
Stubs out a new matestack component. Pass the component name, under_scored.
|
3
|
+
|
4
|
+
To create a dynamic component, specify it using the --dynamic option.
|
5
|
+
|
6
|
+
To place this component within a namespace, specify the namespace name under_scored and it
|
7
|
+
will get generated into 'app/matestack/components/namespace/*'.
|
8
|
+
|
9
|
+
Example 1:
|
10
|
+
`rails generate matestack:component NAME`
|
11
|
+
|
12
|
+
This will create:
|
13
|
+
app/matestack/components/NAME.rb
|
14
|
+
|
15
|
+
Example 2:
|
16
|
+
`rails generate matestack:component NAME --dynamic --namespace sample_namespace`
|
17
|
+
|
18
|
+
This will create:
|
19
|
+
app/matestack/components/sample_namespace/NAME.rb
|
20
|
+
app/matestack/components/sample_namespace/NAME.js
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Matestack
|
2
|
+
module Generators
|
3
|
+
class ComponentGenerator < Rails::Generators::NamedBase
|
4
|
+
source_root File.expand_path('templates', __dir__)
|
5
|
+
|
6
|
+
class_option :dynamic, type: :boolean, default: false
|
7
|
+
class_option :scss, type: :boolean, default: false
|
8
|
+
class_option :haml, type: :boolean, default: false
|
9
|
+
class_option :namespace, type: :string
|
10
|
+
|
11
|
+
def namespace
|
12
|
+
options[:namespace]
|
13
|
+
end
|
14
|
+
|
15
|
+
def dynamic
|
16
|
+
options[:dynamic]
|
17
|
+
end
|
18
|
+
|
19
|
+
def create_component
|
20
|
+
# Future: Check for matestack-compatible namespacing!
|
21
|
+
|
22
|
+
template 'app/matestack/components/%namespace%/%file_name%.rb.tt'
|
23
|
+
template 'app/matestack/components/%namespace%/%file_name%.js.tt' if options[:dynamic]
|
24
|
+
template 'app/matestack/components/%namespace%/%file_name%.scss.tt' if options[:scss]
|
25
|
+
template 'app/matestack/components/%namespace%/%file_name%.haml.tt' if options[:haml]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
File without changes
|
@@ -1,8 +1,8 @@
|
|
1
1
|
// Require your custom component in your application.js before usage
|
2
2
|
// Place it below "//= require matestack-ui-core" using the following line:
|
3
|
-
//= require <% unless
|
3
|
+
//= require <% unless namespace.nil? %><%= namespace %>/<% end %><%= file_name %>
|
4
4
|
|
5
|
-
MatestackUiCore.Vue.component('custom<% unless
|
5
|
+
MatestackUiCore.Vue.component('custom<% unless namespace.nil? %>-<%= namespace %><% end %>-<%= file_name %>', {
|
6
6
|
mixins: [MatestackUiCore.componentMixin],
|
7
7
|
data: function() {
|
8
8
|
return {
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class Components::<% unless namespace.nil? %><%= namespace.camelize %>::<% end %><%= class_name %> < Matestack::Ui::<% if dynamic == true %>DynamicComponent<% else %>StaticComponent<% end %>
|
2
|
+
def prepare
|
3
|
+
# DB queries and API calls go here
|
4
|
+
end
|
5
|
+
|
6
|
+
def response
|
7
|
+
components {
|
8
|
+
# orchestrate existing matestack components here
|
9
|
+
}
|
10
|
+
end
|
11
|
+
end
|
File without changes
|
@@ -0,0 +1,16 @@
|
|
1
|
+
Description:
|
2
|
+
This generates a matestack core component in app/concepts/matestack, a spec file and a docs file.
|
3
|
+
|
4
|
+
Pass the name of the component under_scored.
|
5
|
+
|
6
|
+
Example 1:
|
7
|
+
`rails generate matestack:core:component NAME`
|
8
|
+
|
9
|
+
This will create:
|
10
|
+
app/concepts/matestack/ui/core/NAME/NAME.haml
|
11
|
+
app/concepts/matestack/ui/core/NAME/NAME.rb
|
12
|
+
spec/usage/components/NAME_spec.rb
|
13
|
+
docs/components/NAME.md
|
14
|
+
|
15
|
+
This will insert a link to the docs in:
|
16
|
+
docs/components/README.md
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Matestack
|
4
|
+
module Core
|
5
|
+
module Generators
|
6
|
+
class ComponentGenerator < Rails::Generators::NamedBase
|
7
|
+
source_root File.expand_path('templates', __dir__)
|
8
|
+
|
9
|
+
def create_core_component
|
10
|
+
template 'app/concepts/matestack/ui/core/%file_name%/%file_name%.haml'
|
11
|
+
template 'app/concepts/matestack/ui/core/%file_name%/%file_name%.rb'
|
12
|
+
template 'spec/usage/components/%file_name%_spec.rb'
|
13
|
+
template 'docs/components/%file_name%.md'
|
14
|
+
|
15
|
+
inject_into_file 'docs/components/README.md', before: "\n## Dynamic Core Components\n" do <<~RUBY
|
16
|
+
- [#{file_name.underscore}](/docs/components/#{file_name.underscore}.md)
|
17
|
+
RUBY
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# matestack core component: <%= file_name.camelcase %>
|
2
|
+
|
3
|
+
Show [specs](/spec/usage/components/<%= file_name.underscore %>_spec.rb)
|
4
|
+
|
5
|
+
The HTML `<<%= file_name.underscore %>>` tag implemented in ruby.
|
6
|
+
|
7
|
+
## Parameters
|
8
|
+
|
9
|
+
This component can take 2 optional configuration params and either yield content or display what gets passed to the `text` configuration param.
|
10
|
+
|
11
|
+
#### # id (optional)
|
12
|
+
Expects a string with all ids the `<<%= file_name.underscore %>>` should have.
|
13
|
+
|
14
|
+
#### # class (optional)
|
15
|
+
Expects a string with all classes the `<<%= file_name.underscore %>>` should have.
|
16
|
+
|
17
|
+
## Example 1: Yield a given block
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
<%= file_name.underscore %> id: 'foo', class: 'bar' do
|
21
|
+
plain '<%= file_name.camelcase %> example 1' # optional content
|
22
|
+
end
|
23
|
+
```
|
24
|
+
|
25
|
+
returns
|
26
|
+
|
27
|
+
```html
|
28
|
+
<<%= file_name.underscore %> id="foo" class="bar">
|
29
|
+
<%= file_name.camelcase %> example 1
|
30
|
+
</<%= file_name.underscore %>>
|
31
|
+
```
|
32
|
+
|
33
|
+
## Example 2: Render `options[:text]` param
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
<%= file_name.underscore %> id: 'foo', class: 'bar', text: '<%= file_name.camelcase %> example 2'
|
37
|
+
```
|
38
|
+
|
39
|
+
returns
|
40
|
+
|
41
|
+
```html
|
42
|
+
<<%= file_name.underscore %> id="foo" class="bar">
|
43
|
+
<%= file_name.camelcase %> example 2
|
44
|
+
</<%= file_name.underscore %>>
|
45
|
+
```
|
data/lib/generators/matestack/core/component/templates/spec/usage/components/%file_name%_spec.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require_relative '../../support/utils'
|
2
|
+
include Utils
|
3
|
+
|
4
|
+
describe '<%= file_name.camelcase %> component', type: :feature, js: true do
|
5
|
+
it 'Renders a simple and enhanced <%= file_name.underscore %> tag on a page' do
|
6
|
+
class ExamplePage < Matestack::Ui::Page
|
7
|
+
def response
|
8
|
+
components {
|
9
|
+
# Simple <%= file_name.underscore %>
|
10
|
+
<%= file_name.underscore %> text: 'Simple <%= file_name.underscore %> tag'
|
11
|
+
|
12
|
+
# Enhanced <%= file_name.underscore %>
|
13
|
+
<%= file_name.underscore %> id: 'my-id', class: 'my-class' do
|
14
|
+
plain 'Enhanced <%= file_name.underscore %> tag'
|
15
|
+
end
|
16
|
+
}
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
visit '/example'
|
21
|
+
|
22
|
+
static_output = page.html
|
23
|
+
|
24
|
+
expected_static_output = <<~HTML
|
25
|
+
<<%= file_name.underscore %>>Simple <%= file_name.underscore %> tag</<%= file_name.underscore %>>
|
26
|
+
<<%= file_name.underscore %> id="my-id" class="my-class">Enhanced <%= file_name.underscore %> tag</<%= file_name.underscore %>>
|
27
|
+
HTML
|
28
|
+
|
29
|
+
expect(stripped(static_output)).to include(stripped(expected_static_output))
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
Description:
|
2
|
+
Stubs out a new matestack page and its route. Pass the page name and --app-name, both under_scored.
|
3
|
+
|
4
|
+
To place the page within a namespace, specify the namespace name under_scored and it
|
5
|
+
will get generated into 'app/matestack/pages/namespace/*'.
|
6
|
+
|
7
|
+
To create a custom controller#action to use in the created route, specify it as
|
8
|
+
under_scored_controller#under_scored_action
|
9
|
+
|
10
|
+
This generates a matestack page class in app/matestack/pages/ and adds a route to config/routes.rb
|
11
|
+
|
12
|
+
Example 1:
|
13
|
+
`rails generate matestack:page example_page --app_name example_app`
|
14
|
+
|
15
|
+
This will create:
|
16
|
+
app/matestack/pages/example_app/example_page.rb
|
17
|
+
|
18
|
+
This will add to routes:
|
19
|
+
get 'example_app/example_page', to: 'example_app#example_page'
|
20
|
+
|
21
|
+
Example 2:
|
22
|
+
`rails generate matestack:page example_page --app_name example_app --controller_action=static#second`
|
23
|
+
|
24
|
+
This will create:
|
25
|
+
app/matestack/pages/example_app/example_page.rb
|
26
|
+
|
27
|
+
This will add to routes:
|
28
|
+
get 'example_app/example_page', to: 'static#second'
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Matestack
|
2
|
+
module Generators
|
3
|
+
class PageGenerator < Rails::Generators::NamedBase
|
4
|
+
source_root File.expand_path('templates', __dir__)
|
5
|
+
|
6
|
+
class_option :app_name, type: :string, required: true
|
7
|
+
class_option :namespace, type: :string
|
8
|
+
class_option :controller_action, type: :string
|
9
|
+
class_option :called_by_app_generator, type: :boolean, default: false
|
10
|
+
|
11
|
+
def app_name
|
12
|
+
options[:app_name]
|
13
|
+
end
|
14
|
+
|
15
|
+
def namespace
|
16
|
+
options[:namespace]
|
17
|
+
end
|
18
|
+
|
19
|
+
def controller_action
|
20
|
+
if options[:controller_action].nil?
|
21
|
+
"#{app_name}\##{file_name}"
|
22
|
+
else
|
23
|
+
options[:controller_action]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def create_page
|
28
|
+
template "app/matestack/pages/%app_name%/%namespace%/%file_name%.rb"
|
29
|
+
|
30
|
+
unless options[:called_by_app_generator]
|
31
|
+
if namespace
|
32
|
+
route %{get '#{app_name}/#{namespace}/#{file_name}', to: '#{controller_action}'}
|
33
|
+
else
|
34
|
+
route %{get '#{app_name}/#{file_name}', to: '#{controller_action}'}
|
35
|
+
end
|
36
|
+
|
37
|
+
puts "Page created! Make sure to add"
|
38
|
+
puts ""
|
39
|
+
puts "def #{file_name}"
|
40
|
+
|
41
|
+
if namespace
|
42
|
+
puts " responder_for(Pages::#{app_name.camelize}::#{namespace.camelize}::#{file_name.camelize})"
|
43
|
+
else
|
44
|
+
puts " responder_for(Pages::#{app_name.camelize}::#{file_name.camelize})"
|
45
|
+
end
|
46
|
+
|
47
|
+
puts "end"
|
48
|
+
puts ""
|
49
|
+
puts "to the desired controller!"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class Pages::<% unless namespace.nil? %><%= namespace.camelize %>::<% end %><% unless app_name.nil? %><%= app_name.camelize %>::<% end %><%= class_name %> < Matestack::Ui::Page
|
2
|
+
# OPTIONAL: Prepare data for the response method
|
3
|
+
# def prepare
|
4
|
+
# API calls and db queries go here
|
5
|
+
# end
|
6
|
+
|
7
|
+
# MANDATORY: This is where the matestack magic happens
|
8
|
+
def response
|
9
|
+
components {
|
10
|
+
heading text: 'Welcome to your <%= class_name %> page'
|
11
|
+
# your page content goes here, e.g.
|
12
|
+
# partial :partial_example
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
# OPTIONAL: Use partials to render stuff like layout components
|
17
|
+
# def partial_example
|
18
|
+
# partial {
|
19
|
+
# # your components go here
|
20
|
+
# }
|
21
|
+
# end
|
22
|
+
|
23
|
+
# OPTIONAL: Slots come after partials
|
24
|
+
# def slot_example
|
25
|
+
# slot {
|
26
|
+
# # your components go here
|
27
|
+
# }
|
28
|
+
# end
|
29
|
+
end
|
data/lib/matestack/ui/core.rb
CHANGED
@@ -1,11 +1,14 @@
|
|
1
|
-
require 'trailblazer'
|
2
|
-
require 'trailblazer/rails'
|
3
1
|
require 'trailblazer/cell'
|
4
2
|
require 'cell/rails'
|
5
3
|
require 'cell/haml'
|
6
4
|
|
5
|
+
require "matestack/ui/core/cell"
|
7
6
|
require "matestack/ui/core/engine"
|
8
7
|
|
8
|
+
require "matestack/ui/core/dsl"
|
9
|
+
require "matestack/ui/core/component/registry"
|
10
|
+
require "matestack/ui/core/components"
|
11
|
+
|
9
12
|
module Matestack
|
10
13
|
module Ui
|
11
14
|
module Core
|