matestack-ui-core 0.7.2.1 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of matestack-ui-core might be problematic. Click here for more details.

Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/app/concepts/matestack/ui/core/actionview/dynamic.haml +6 -0
  4. data/app/concepts/matestack/ui/core/actionview/dynamic.rb +28 -0
  5. data/app/concepts/matestack/ui/core/actionview/static.haml +1 -0
  6. data/app/concepts/matestack/ui/core/actionview/static.rb +28 -0
  7. data/app/concepts/matestack/ui/core/app/app.rb +1 -25
  8. data/app/concepts/matestack/ui/core/area/area.haml +1 -0
  9. data/app/concepts/matestack/ui/core/area/area.rb +18 -0
  10. data/app/concepts/matestack/ui/core/aside/aside.haml +3 -0
  11. data/app/concepts/matestack/ui/core/aside/aside.rb +5 -0
  12. data/app/concepts/matestack/ui/core/b/b.haml +5 -0
  13. data/app/concepts/matestack/ui/core/b/b.rb +5 -0
  14. data/app/concepts/matestack/ui/core/cite/cite.haml +5 -0
  15. data/app/concepts/matestack/ui/core/cite/cite.rb +5 -0
  16. data/app/concepts/matestack/ui/core/code/code.haml +5 -0
  17. data/app/concepts/matestack/ui/core/code/code.rb +5 -0
  18. data/app/concepts/matestack/ui/core/component/dynamic.rb +33 -25
  19. data/app/concepts/matestack/ui/core/dd/dd.haml +5 -0
  20. data/app/concepts/matestack/ui/core/dd/dd.rb +5 -0
  21. data/app/concepts/matestack/ui/core/dl/dl.haml +5 -0
  22. data/app/concepts/matestack/ui/core/dl/dl.rb +5 -0
  23. data/app/concepts/matestack/ui/core/dt/dt.haml +5 -0
  24. data/app/concepts/matestack/ui/core/dt/dt.rb +5 -0
  25. data/app/concepts/matestack/ui/core/em/em.haml +5 -0
  26. data/app/concepts/matestack/ui/core/em/em.rb +5 -0
  27. data/app/concepts/matestack/ui/core/fieldset/fieldset.haml +5 -0
  28. data/app/concepts/matestack/ui/core/fieldset/fieldset.rb +9 -0
  29. data/app/concepts/matestack/ui/core/figure/figure.haml +3 -0
  30. data/app/concepts/matestack/ui/core/figure/figure.rb +5 -0
  31. data/app/concepts/matestack/ui/core/form/form.js +19 -1
  32. data/app/concepts/matestack/ui/core/img/img.rb +1 -0
  33. data/app/concepts/matestack/ui/core/ins/ins.haml +5 -0
  34. data/app/concepts/matestack/ui/core/ins/ins.rb +10 -0
  35. data/app/concepts/matestack/ui/core/js/core.js +0 -1
  36. data/app/concepts/matestack/ui/core/kbd/kbd.haml +5 -0
  37. data/app/concepts/matestack/ui/core/kbd/kbd.rb +4 -0
  38. data/app/concepts/matestack/ui/core/label/label.rb +6 -1
  39. data/app/concepts/matestack/ui/core/legend/legend.haml +5 -0
  40. data/app/concepts/matestack/ui/core/legend/legend.rb +5 -0
  41. data/app/concepts/matestack/ui/core/link/link.rb +2 -1
  42. data/app/concepts/matestack/ui/core/map/map.haml +3 -0
  43. data/app/concepts/matestack/ui/core/map/map.rb +11 -0
  44. data/app/concepts/matestack/ui/core/mark/mark.haml +5 -0
  45. data/app/concepts/matestack/ui/core/mark/mark.rb +4 -0
  46. data/app/concepts/matestack/ui/core/meter/meter.haml +4 -0
  47. data/app/concepts/matestack/ui/core/meter/meter.rb +14 -0
  48. data/app/concepts/matestack/ui/core/noscript/noscript.haml +5 -0
  49. data/app/concepts/matestack/ui/core/noscript/noscript.rb +5 -0
  50. data/app/concepts/matestack/ui/core/object/object.haml +1 -0
  51. data/app/concepts/matestack/ui/core/object/object.rb +15 -0
  52. data/app/concepts/matestack/ui/core/output/output.haml +5 -0
  53. data/app/concepts/matestack/ui/core/output/output.rb +11 -0
  54. data/app/concepts/matestack/ui/core/page/page.rb +31 -17
  55. data/app/concepts/matestack/ui/core/param/param.haml +1 -0
  56. data/app/concepts/matestack/ui/core/param/param.rb +10 -0
  57. data/app/concepts/matestack/ui/core/pre/pre.haml +5 -0
  58. data/app/concepts/matestack/ui/core/pre/pre.rb +5 -0
  59. data/app/concepts/matestack/ui/core/q/q.haml +5 -0
  60. data/app/concepts/matestack/ui/core/q/q.rb +11 -0
  61. data/app/concepts/matestack/ui/core/rp/rp.haml +5 -0
  62. data/app/concepts/matestack/ui/core/rp/rp.rb +5 -0
  63. data/app/concepts/matestack/ui/core/rt/rt.haml +5 -0
  64. data/app/concepts/matestack/ui/core/rt/rt.rb +5 -0
  65. data/app/concepts/matestack/ui/core/ruby/ruby.haml +5 -0
  66. data/app/concepts/matestack/ui/core/ruby/ruby.rb +5 -0
  67. data/app/concepts/matestack/ui/core/s/s.haml +5 -0
  68. data/app/concepts/matestack/ui/core/s/s.rb +6 -0
  69. data/app/concepts/matestack/ui/core/sup/sup.haml +5 -0
  70. data/app/concepts/matestack/ui/core/sup/sup.rb +5 -0
  71. data/app/concepts/matestack/ui/core/var/var.haml +5 -0
  72. data/app/concepts/matestack/ui/core/var/var.rb +4 -0
  73. data/app/concepts/matestack/ui/core/video/video.haml +3 -1
  74. data/app/concepts/matestack/ui/core/video/video.rb +17 -1
  75. data/app/lib/matestack/ui/core/component_node.rb +1 -1
  76. data/app/lib/matestack/ui/dynamic_actionview_component.rb +1 -0
  77. data/app/lib/matestack/ui/static_actionview_component.rb +1 -0
  78. data/config/routes.rb +0 -1
  79. data/lib/generators/matestack/app/USAGE +21 -0
  80. data/lib/generators/matestack/app/app_generator.rb +25 -0
  81. data/lib/generators/{matestack_app/templates/matestack_app_controller.erb → matestack/app/templates/app/controllers/%file_name%_controller.rb.tt} +0 -2
  82. data/lib/generators/matestack/app/templates/app/matestack/apps/%file_name%.rb.tt +28 -0
  83. data/lib/generators/matestack/component/USAGE +20 -0
  84. data/lib/generators/matestack/component/component_generator.rb +29 -0
  85. data/lib/generators/{matestack_component/templates/matestack_component.haml.erb → matestack/component/templates/app/matestack/components/%namespace%/%file_name%.haml.tt} +0 -0
  86. data/lib/generators/{matestack_component/templates/matestack_component.js.erb → matestack/component/templates/app/matestack/components/%namespace%/%file_name%.js.tt} +2 -2
  87. data/lib/generators/matestack/component/templates/app/matestack/components/%namespace%/%file_name%.rb.tt +11 -0
  88. data/lib/generators/{matestack_component/templates/matestack_component.scss.erb → matestack/component/templates/app/matestack/components/%namespace%/%file_name%.scss.tt} +0 -0
  89. data/lib/generators/matestack/core/component/USAGE +16 -0
  90. data/lib/generators/matestack/core/component/component_generator.rb +23 -0
  91. data/lib/generators/matestack/core/component/templates/app/concepts/matestack/ui/core/%file_name%/%file_name%.haml.tt +5 -0
  92. data/lib/generators/matestack/core/component/templates/app/concepts/matestack/ui/core/%file_name%/%file_name%.rb.tt +4 -0
  93. data/lib/generators/matestack/core/component/templates/docs/components/%file_name%.md.tt +44 -0
  94. data/lib/generators/matestack/core/component/templates/spec/usage/components/%file_name%_spec.rb +31 -0
  95. data/lib/generators/matestack/page/USAGE +28 -0
  96. data/lib/generators/matestack/page/page_generator.rb +54 -0
  97. data/lib/generators/matestack/page/templates/app/matestack/pages/%app_name%/%namespace%/%file_name%.rb.tt +28 -0
  98. data/lib/matestack/ui/core/version.rb +1 -1
  99. data/vendor/assets/javascripts/matestack-ui-core.js +3736 -2755
  100. data/vendor/assets/javascripts/matestack-ui-core.js.map +1 -1
  101. metadata +85 -20
  102. data/app/concepts/matestack/ui/core/view/view.haml +0 -2
  103. data/app/concepts/matestack/ui/core/view/view.js +0 -42
  104. data/app/concepts/matestack/ui/core/view/view.rb +0 -5
  105. data/lib/generators/matestack_app/USAGE +0 -21
  106. data/lib/generators/matestack_app/matestack_app_generator.rb +0 -26
  107. data/lib/generators/matestack_app/templates/matestack_app.erb +0 -26
  108. data/lib/generators/matestack_component/USAGE +0 -20
  109. data/lib/generators/matestack_component/matestack_component_generator.rb +0 -30
  110. data/lib/generators/matestack_component/templates/matestack_component.rb.erb +0 -13
  111. data/lib/generators/matestack_page/USAGE +0 -28
  112. data/lib/generators/matestack_page/matestack_page_generator.rb +0 -41
  113. data/lib/generators/matestack_page/templates/matestack_page.erb +0 -15
@@ -1,5 +1,10 @@
1
1
  module Matestack::Ui::Core::Label
2
2
  class Label < Matestack::Ui::Core::Component::Static
3
-
3
+ def setup
4
+ @tag_attributes.merge!({
5
+ for: options[:for],
6
+ form: options[:form]
7
+ })
8
+ end
4
9
  end
5
10
  end
@@ -0,0 +1,5 @@
1
+ %legend{@tag_attributes}
2
+ - if options[:text].nil? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,5 @@
1
+ module Matestack::Ui::Core::Legend
2
+ class Legend < Matestack::Ui::Core::Component::Static
3
+
4
+ end
5
+ end
@@ -9,7 +9,8 @@ module Matestack::Ui::Core::Link
9
9
  "id": component_id,
10
10
  "method": options[:method],
11
11
  "target": options[:target] ||= nil,
12
- "href": link_path
12
+ "href": link_path,
13
+ "title": options[:title]
13
14
  })
14
15
  end
15
16
 
@@ -0,0 +1,3 @@
1
+ %map{@tag_attributes}
2
+ - if block_given?
3
+ = yield
@@ -0,0 +1,11 @@
1
+ module Matestack::Ui::Core::Map
2
+ class Map < Matestack::Ui::Core::Component::Static
3
+ REQUIRED_KEYS = [:name]
4
+
5
+ def setup
6
+ @tag_attributes.merge!({
7
+ name: options[:name]
8
+ })
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ %mark{@tag_attributes}
2
+ - if options[:text].blank? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,4 @@
1
+ module Matestack::Ui::Core::Mark
2
+ class Mark < Matestack::Ui::Core::Component::Static
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ %meter{@tag_attributes}
2
+ - if block_given?
3
+ = yield
4
+
@@ -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,5 @@
1
+ %noscript{@tag_attributes}
2
+ - if options[:text].nil? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,5 @@
1
+ module Matestack::Ui::Core::Noscript
2
+ class Noscript < Matestack::Ui::Core::Component::Static
3
+
4
+ end
5
+ 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
@@ -0,0 +1,5 @@
1
+ %output{@tag_attributes}
2
+ - if options[:text].blank? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,11 @@
1
+ module Matestack::Ui::Core::Output
2
+ class Output < Matestack::Ui::Core::Component::Static
3
+ def setup
4
+ @tag_attributes.merge!(
5
+ name: options[:name],
6
+ for: options[:for],
7
+ form: options[:form]
8
+ )
9
+ end
10
+ end
11
+ end
@@ -91,23 +91,9 @@ module Matestack::Ui::Core::Page
91
91
  concept(@app_class).call(:show, @page_id, @nodes)
92
92
  when :render_component
93
93
  begin
94
- if component_key.include?("__")
95
- keys_array = component_key.gsub("__", "__components__").split("__").map {|k| k.to_s}
96
- page_content_keys = keys_array.select{|key| key.match(/^page_content_/)}
97
- if page_content_keys.any?
98
- keys_array = keys_array.drop(keys_array.find_index(page_content_keys[0])+2)
99
- end
100
- node = @nodes.dig(*keys_array)
101
- cell = to_cell(component_key, node["component_name"], node["config"], node["argument"], node["components"], node["included_config"], node["cached_params"])
102
- return cell.render_content
103
- else
104
- node = @nodes[component_key]
105
- cell = to_cell(component_key, node["component_name"], node["config"], node["argument"], node["components"], node["included_config"], node["cached_params"])
106
- return cell.render_content
107
- end
108
- rescue
109
- raise "Component '#{component_key}' could not be resolved. Notice: Rerendering currently works only on page-level. \
110
- You are therefore currently not able to use 'async' within a component for example!"
94
+ render_child_component component_key
95
+ rescue => e
96
+ raise "Component '#{component_key}' could not be resolved."
111
97
  end
112
98
  end
113
99
  end
@@ -116,6 +102,34 @@ module Matestack::Ui::Core::Page
116
102
  @custom_page_id ||= @page_id
117
103
  end
118
104
 
105
+ def render_child_component component_key
106
+ if component_key.include?("__")
107
+ keys_array = component_key.gsub("__", "__components__").split("__").map {|k| k.to_s}
108
+ page_content_keys = keys_array.select{|key| key.match(/^page_content_/)}
109
+ if page_content_keys.any?
110
+ keys_array = keys_array.drop(keys_array.find_index(page_content_keys[0])+2)
111
+ end
112
+ if @nodes.dig(*keys_array) == nil
113
+ rest = []
114
+ while @nodes.dig(*keys_array) == nil
115
+ rest << keys_array.pop
116
+ end
117
+ node = @nodes.dig(*keys_array)
118
+ cell = to_cell(component_key, node["component_name"], node["config"], node["argument"], node["components"], node["included_config"], node["cached_params"])
119
+ return cell.render_child_component component_key, rest.reverse[1..-1]
120
+ else
121
+ node = @nodes.dig(*keys_array)
122
+ cell = to_cell(component_key, node["component_name"], node["config"], node["argument"], node["components"], node["included_config"], node["cached_params"])
123
+ return cell.render_content
124
+ end
125
+ else
126
+ node = @nodes[component_key]
127
+ cell = to_cell(component_key, node["component_name"], node["config"], node["argument"], node["components"], node["included_config"], node["cached_params"])
128
+ return cell.render_content
129
+ end
130
+ end
131
+
132
+
119
133
  private
120
134
 
121
135
  def resolve_isolated_component component_key
@@ -0,0 +1 @@
1
+ %param{@tag_attributes}
@@ -0,0 +1,10 @@
1
+ module Matestack::Ui::Core::Param
2
+ class Param < Matestack::Ui::Core::Component::Static
3
+ def setup
4
+ @tag_attributes.merge!({
5
+ name: options[:name],
6
+ value: options[:value]
7
+ })
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ %pre{@tag_attributes}
2
+ - if options[:text].nil? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,5 @@
1
+ module Matestack::Ui::Core::Pre
2
+ class Pre < Matestack::Ui::Core::Component::Static
3
+
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ %q{@tag_attributes}
2
+ - if options[:text].nil? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,11 @@
1
+ module Matestack::Ui::Core::Q
2
+ class Q < Matestack::Ui::Core::Component::Static
3
+
4
+ def setup
5
+ @tag_attributes.merge!({
6
+ "cite": options[:cite]
7
+ })
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ %rp{@tag_attributes}
2
+ - if options[:text].nil? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,5 @@
1
+ module Matestack::Ui::Core::Rp
2
+ class Rp < Matestack::Ui::Core::Component::Static
3
+
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ %rt{@tag_attributes}
2
+ - if options[:text].nil? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,5 @@
1
+ module Matestack::Ui::Core::Rt
2
+ class Rt < Matestack::Ui::Core::Component::Static
3
+
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ %ruby{@tag_attributes}
2
+ - if options[:text].nil? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,5 @@
1
+ module Matestack::Ui::Core::Ruby
2
+ class Ruby < Matestack::Ui::Core::Component::Static
3
+
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ %s{@tag_attributes}
2
+ - if options[:text].nil? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,6 @@
1
+ module Matestack::Ui::Core::S
2
+ class S < Matestack::Ui::Core::Component::Static
3
+
4
+ end
5
+ end
6
+
@@ -0,0 +1,5 @@
1
+ %sup{@tag_attributes}
2
+ - if options[:text].nil? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,5 @@
1
+ module Matestack::Ui::Core::Sup
2
+ class Sup < Matestack::Ui::Core::Component::Static
3
+
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ %var{@tag_attributes}
2
+ - if options[:text].nil? && block_given?
3
+ = yield
4
+ - else
5
+ = options[:text]
@@ -0,0 +1,4 @@
1
+ module Matestack::Ui::Core::Var
2
+ class Var < Matestack::Ui::Core::Component::Static
3
+ end
4
+ end
@@ -1 +1,3 @@
1
- = video_tag(@tag_attributes, ActionController::Base.helpers.asset_path(options[:path]), height: options[:height], width: options[:width], preload: options[:preload], autoplay: options[:autoplay], muted: options[:muted], playsinline: options[:playsinline], loop: options[:loop], controls: options[:controls])
1
+ %video{@tag_attributes}
2
+ %source{:src => @source, :type => @type}
3
+ Your browser does not support the video tag.
@@ -1,7 +1,23 @@
1
1
  module Matestack::Ui::Core::Video
2
2
  class Video < Matestack::Ui::Core::Component::Static
3
3
 
4
- REQUIRED_KEYS = [:path]
4
+ REQUIRED_KEYS = [:path, :type]
5
+
6
+ def setup
7
+ @tag_attributes.merge!({
8
+ autoplay: options[:autoplay],
9
+ controls: options[:controls],
10
+ height: options[:height],
11
+ loop: options[:loop],
12
+ muted: options[:muted],
13
+ playsinline: options[:playsinline],
14
+ preload: options[:preload],
15
+ width: options[:width]
16
+ })
17
+
18
+ @source = ActionController::Base.helpers.asset_path(options[:path])
19
+ @type = "video/#{@options[:type]}"
20
+ end
5
21
 
6
22
  end
7
23
  end
@@ -13,10 +13,10 @@ module Matestack::Ui::Core
13
13
  @hash = {}
14
14
  @node_start_id = 0
15
15
  @component_instance = component_instance
16
- @included_config = included_config
17
16
  component_instance.instance_variables.each do |component_instance_var_key|
18
17
  self.instance_variable_set(component_instance_var_key, component_instance.instance_variable_get(component_instance_var_key))
19
18
  end
19
+ @included_config = included_config
20
20
  end
21
21
 
22
22
  def method_missing meth, *args, &block
@@ -0,0 +1 @@
1
+ Matestack::Ui::DynamicActionviewComponent = Matestack::Ui::Core::Actionview::Dynamic
@@ -0,0 +1 @@
1
+ Matestack::Ui::StaticActionviewComponent = Matestack::Ui::Core::Actionview::Static
@@ -1,3 +1,2 @@
1
1
  Matestack::Ui::Core::Engine.routes.draw do
2
- get '/div', to: 'docs#div'
3
2
  end
@@ -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
@@ -1,7 +1,5 @@
1
1
  class <%= class_name %>Controller < ApplicationController
2
-
3
2
  def example_page
4
3
  responder_for(Pages::<%= class_name %>::ExamplePage)
5
4
  end
6
-
7
5
  end