coprl 3.0.0.beta.4 → 3.0.0.beta.8

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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +11 -16
  3. data/.ruby-version +1 -1
  4. data/CHANGELOG.md +37 -0
  5. data/Gemfile +1 -1
  6. data/Gemfile.lock +43 -47
  7. data/README.md +3 -3
  8. data/app/demo/components/dialogs.pom +1 -1
  9. data/app/demo/components/snackbar.pom +9 -3
  10. data/app/demo/events/content_as_form.pom +3 -3
  11. data/app/demo/events/halted.pom +23 -0
  12. data/app/demo/events/nav/drawer.pom +1 -1
  13. data/app/demo/events/tagged_input.pom +2 -2
  14. data/app/demo/patterns/search_select.pom +1 -1
  15. data/coprl.gemspec +1 -2
  16. data/lib/coprl/presenters/dsl/components/actions/base.rb +5 -1
  17. data/lib/coprl/presenters/dsl/components/base.rb +6 -4
  18. data/lib/coprl/presenters/dsl/components/multi_select.rb +3 -3
  19. data/lib/coprl/presenters/dsl/components/table.rb +2 -2
  20. data/lib/coprl/presenters/dsl/definition.rb +2 -2
  21. data/lib/coprl/presenters/dsl/user_interface.rb +2 -2
  22. data/lib/coprl/presenters/helpers/rails/routes.rb +14 -0
  23. data/lib/coprl/presenters/helpers/rails.rb +8 -6
  24. data/lib/coprl/presenters/rails/concerns/coprl_partial.rb +51 -0
  25. data/lib/coprl/presenters/rails/engine.rb +5 -0
  26. data/lib/coprl/presenters/rails/railtie.rb +6 -14
  27. data/lib/coprl/presenters/rails/reloader.rb +15 -0
  28. data/lib/coprl/presenters/version.rb +1 -1
  29. data/lib/coprl/presenters/web_client/helpers/headers.rb +8 -6
  30. data/lib/coprl/presenters/web_client/helpers/rails/template_helper.rb +10 -0
  31. data/lib/coprl/presenters/web_client/helpers/rails.rb +1 -0
  32. data/lib/coprl/presenters/web_client/helpers/sinatra/template_helper.rb +20 -0
  33. data/lib/coprl/presenters/web_client/helpers/sinatra.rb +1 -0
  34. data/lib/coprl/presenters/web_client/plugin_views_path.rb +5 -5
  35. data/public/bundle.js +10 -4
  36. data/public/wc.js +10 -4
  37. data/rails-engine/app/controllers/coprl_controller.rb +0 -17
  38. data/rails-engine/app/views/layouts/coprl.html.erb +4 -4
  39. data/rails-engine/config/initializers/presenters.rb +4 -2
  40. data/rails-engine/config/initializers/routes.rb +5 -0
  41. data/views/mdc/assets/js/components/events/posts.js +10 -6
  42. data/views/mdc/body/{_preamble.erb → _wrapper.erb} +16 -5
  43. data/views/mdc/components/_card.erb +2 -2
  44. data/views/mdc/components/_checkbox.erb +1 -1
  45. data/views/mdc/components/_chip.erb +2 -2
  46. data/views/mdc/components/_content.erb +2 -2
  47. data/views/mdc/components/_datetime.erb +1 -1
  48. data/views/mdc/components/_dialog.erb +2 -2
  49. data/views/mdc/components/_form.erb +2 -2
  50. data/views/mdc/components/_grid.erb +2 -2
  51. data/views/mdc/components/_hidden_field.erb +1 -1
  52. data/views/mdc/components/_multi_select.erb +1 -1
  53. data/views/mdc/components/_number_field.erb +1 -1
  54. data/views/mdc/components/_radio_button.erb +1 -1
  55. data/views/mdc/components/_rich_text_area.erb +1 -1
  56. data/views/mdc/components/_select.erb +1 -1
  57. data/views/mdc/components/_slider.erb +2 -2
  58. data/views/mdc/components/_stepper.erb +4 -4
  59. data/views/mdc/components/_switch.erb +1 -1
  60. data/views/mdc/components/_text_area.erb +1 -1
  61. data/views/mdc/components/_text_field.erb +1 -1
  62. data/views/mdc/components/buttons/_image.erb +1 -1
  63. data/views/mdc/layout.erb +4 -4
  64. metadata +17 -26
  65. data/app/demo/components/snackbar_attached.pom +0 -6
  66. data/views/mdc/body/_postamble.erb +0 -17
@@ -0,0 +1,51 @@
1
+ module Coprl
2
+ module Presenters
3
+ module Rails
4
+ module Concerns
5
+ module CoprlPartial
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ before_action :set_view_path
10
+ end
11
+
12
+ module ClassMethods
13
+ @plugins = []
14
+ def presenter_plugin(*plugins)
15
+ @plugins += Array(plugins)
16
+ end
17
+
18
+ def plugins
19
+ @plugins
20
+ end
21
+ end
22
+
23
+ def set_view_path
24
+ paths = Coprl::Presenters::WebClient::PluginViewsPath.new(pom: nil, plugins: self.class.plugins).render
25
+ paths.each do |path|
26
+ prepend_view_path path
27
+ end
28
+ end
29
+
30
+ def prepare_context(base_params = params)
31
+ prepare_context = Coprl::Presenters::Settings.config.presenters.web_client.prepare_context.dup
32
+ prepare_context.push(method(:scrub_context))
33
+ context = base_params.dup.to_unsafe_hash
34
+ prepare_context.reduce(context) do |params, context_proc|
35
+ context = context_proc.call(params, session, request.env)
36
+ end
37
+ context
38
+ end
39
+
40
+ def scrub_context(params, _session, _env)
41
+ %i(grid_nesting input_tag).each do |key|
42
+ params.delete(key) {params.delete(key.to_s)}
43
+ end
44
+ params
45
+ end
46
+
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -12,6 +12,11 @@ module Coprl
12
12
  # TODO: should rename these since they are common names that are likely going to collide
13
13
  app.middleware.use ::ActionDispatch::Static, File.join(root, '..', 'public')
14
14
  end
15
+
16
+ ActiveSupport.on_load(:action_controller) do
17
+ include Concerns::CoprlPartial
18
+ end
19
+
15
20
  end
16
21
  end
17
22
  end
@@ -1,5 +1,3 @@
1
- require 'filewatcher'
2
-
3
1
  module Coprl
4
2
  module Presenters
5
3
  module Rails
@@ -15,20 +13,14 @@ module Coprl
15
13
 
16
14
  WATCH = -> {
17
15
  return unless ::Rails.env.development?
16
+
18
17
  path = ::Rails.root.join('app', '**', '*.pom')
19
- puts "Watching #{path} for changes..."
20
- filewatcher = Filewatcher.new(path)
21
- Thread.new(filewatcher) do |fw|
22
- fw.watch do |f|
23
- puts "Detected updated POM file: #{f}"
24
- begin
25
- BOOT.call
26
- rescue Exception => exc
27
- puts exc.backtrace
28
- puts exc.message
29
- end
30
- end
18
+ file_watcher = ActiveSupport::FileUpdateChecker.new(Dir[path]) do
19
+ BOOT.call
31
20
  end
21
+
22
+ ::Rails.application.reloaders << Reloader.new(file_watcher)
23
+
32
24
  } unless defined?(WATCH)
33
25
 
34
26
  config.after_initialize do
@@ -0,0 +1,15 @@
1
+ module Coprl
2
+ module Presenters
3
+ module Rails
4
+ class Reloader
5
+ def initialize(file_watcher)
6
+ @file_watcher = file_watcher
7
+ end
8
+
9
+ def updated?
10
+ @file_watcher.execute_if_updated
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,7 +1,7 @@
1
1
  module Coprl
2
2
  module Presenters
3
3
  module Version
4
- VERSION = '3.0.0.beta.4'
4
+ VERSION = '3.0.0.beta.8'
5
5
  end
6
6
  end
7
7
  end
@@ -2,16 +2,18 @@ module Coprl::Presenters::WebClient::Helpers
2
2
  module Headers
3
3
  include Coprl::Presenters::WebClient::Helpers::HtmlSafe
4
4
 
5
- def coprl_headers(base_url, request, pom)
5
+ def coprl_headers
6
+ return unless @pom
7
+
6
8
  html_safe (<<~HEADERS)
7
9
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" type="text/css">
8
10
  <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
9
11
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.4.1/css/all.css" integrity="sha384-5sAR7xN1Nv6T6+dT2mhtzEpVJvfS3NScPQTrOxhwjIuvcA67KV2R5Jz6kr4abQsz" crossorigin="anonymous">
10
- <link rel="stylesheet" href="#{ base_url }/#{ request.env['SCRIPT_NAME'] }bundle.css">
11
- <script defer src="#{ base_url }/#{ request.env['SCRIPT_NAME'] }bundle.js"></script>
12
- #{plugin_headers(pom)}
13
- #{custom_css(request.env['REQUEST_PATH'], base_url)}
14
- #{pom.csrf_meta_tags}
12
+ <link rel="stylesheet" href="#{ @base_url }/#{ request.env['SCRIPT_NAME'] }bundle.css">
13
+ <script defer src="#{ @base_url }/#{ request.env['SCRIPT_NAME'] }bundle.js"></script>
14
+ #{plugin_headers(@pom)}
15
+ #{custom_css(request.env['REQUEST_PATH'], @base_url)}
16
+ #{@pom.csrf_meta_tags}
15
17
  HEADERS
16
18
  end
17
19
 
@@ -0,0 +1,10 @@
1
+ module Coprl::Presenters::WebClient::Helpers::Rails
2
+ module TemplateHelper
3
+ def with_presenters_wrapper(&block)
4
+ render partial: 'body/wrapper', locals: {
5
+ body_content: capture(&block), header: @pom&.header, drawer: @pom&.drawer,
6
+ footer: @pom&.footer
7
+ }
8
+ end
9
+ end
10
+ end
@@ -8,5 +8,6 @@ module Coprl::Presenters::WebClient::Helpers
8
8
  include Namespaced
9
9
  include Raw
10
10
  include EscapeHtml
11
+ include TemplateHelper
11
12
  end
12
13
  end
@@ -0,0 +1,20 @@
1
+ module Coprl::Presenters::WebClient::Helpers::Sinatra
2
+ module TemplateHelper
3
+ def with_presenters_wrapper(&block)
4
+ buffer << partial("body/wrapper", locals: {
5
+ body_content: capture(buffer, &block), header: @pom&.header, drawer: @pom&.drawer,
6
+ footer: @pom&.footer
7
+ })
8
+ end
9
+
10
+ def buffer()
11
+ @_out_buf
12
+ end
13
+
14
+ def capture(buffer)
15
+ pos = buffer.size
16
+ yield
17
+ buffer.slice!(pos..buffer.size)
18
+ end
19
+ end
20
+ end
@@ -7,5 +7,6 @@ module Coprl::Presenters::WebClient::Helpers
7
7
  include SafeMarkdown
8
8
  include Raw
9
9
  include EscapeHtml
10
+ include TemplateHelper
10
11
  end
11
12
  end
@@ -8,17 +8,17 @@ module Coprl
8
8
  extend Pluggable
9
9
  include_plugins(:WebClientComponents)
10
10
 
11
- def initialize(pom:)
11
+ def initialize(pom: nil, plugins: nil)
12
12
  @pom = pom
13
+ @plugins = plugins || []
13
14
  initialize_plugins
14
15
  end
15
16
 
16
17
  def render
17
18
  results = []
18
- ((@plugins||[]) + Coprl::Presenters::Settings.config.presenters.plugins).each do |plugin|
19
+ (@plugins + Coprl::Presenters::Settings.config.presenters.plugins).each do |plugin|
19
20
  view_dir_method = :"view_dir_#{plugin}"
20
- results << send(view_dir_method,
21
- @pom) if respond_to?(view_dir_method)
21
+ results << send(view_dir_method, @pom) if respond_to?(view_dir_method)
22
22
  end
23
23
  results
24
24
  end
@@ -26,7 +26,7 @@ module Coprl
26
26
  private
27
27
 
28
28
  def initialize_plugins
29
- @plugins = @pom.send(:plugins)
29
+ @plugins += @pom.send(:plugins) if @pom
30
30
  self.class.include_plugins(:WebClientComponents, plugins: @plugins)
31
31
  end
32
32
  end
data/public/bundle.js CHANGED
@@ -48739,9 +48739,7 @@ var VPosts = function (_VBase) {
48739
48739
  }
48740
48740
  }
48741
48741
 
48742
- var paramCount = Array.from(formData).length;
48743
-
48744
- if (paramCount < 1) {
48742
+ if (this.paramCount(formData) < 1) {
48745
48743
  console.warn('Creating request with no data!' + ' Are you sure you\'ve hooked everything up correctly?');
48746
48744
  }
48747
48745
 
@@ -48910,9 +48908,17 @@ var VPosts = function (_VBase) {
48910
48908
  }
48911
48909
 
48912
48910
  // Send our FormData object; HTTP headers are set automatically
48913
- httpRequest.send(formData);
48911
+ // Rack 2.2 will throw an exception https://github.com/rack/rack/issues/1603
48912
+ // if we set the header as multi-part form data with no data in the body
48913
+ // So we set the body to null in this case.
48914
+ httpRequest.send(_this2.paramCount(formData) < 1 ? null : formData);
48914
48915
  });
48915
48916
  }
48917
+ }, {
48918
+ key: 'paramCount',
48919
+ value: function paramCount(formData) {
48920
+ return Array.from(formData).length;
48921
+ }
48916
48922
  }, {
48917
48923
  key: 'isForm',
48918
48924
  value: function isForm() {
data/public/wc.js CHANGED
@@ -34213,9 +34213,7 @@ var VPosts = function (_VBase) {
34213
34213
  }
34214
34214
  }
34215
34215
 
34216
- var paramCount = Array.from(formData).length;
34217
-
34218
- if (paramCount < 1) {
34216
+ if (this.paramCount(formData) < 1) {
34219
34217
  console.warn('Creating request with no data!' + ' Are you sure you\'ve hooked everything up correctly?');
34220
34218
  }
34221
34219
 
@@ -34384,9 +34382,17 @@ var VPosts = function (_VBase) {
34384
34382
  }
34385
34383
 
34386
34384
  // Send our FormData object; HTTP headers are set automatically
34387
- httpRequest.send(formData);
34385
+ // Rack 2.2 will throw an exception https://github.com/rack/rack/issues/1603
34386
+ // if we set the header as multi-part form data with no data in the body
34387
+ // So we set the body to null in this case.
34388
+ httpRequest.send(_this2.paramCount(formData) < 1 ? null : formData);
34388
34389
  });
34389
34390
  }
34391
+ }, {
34392
+ key: 'paramCount',
34393
+ value: function paramCount(formData) {
34394
+ return Array.from(formData).length;
34395
+ }
34390
34396
  }, {
34391
34397
  key: 'isForm',
34392
34398
  value: function isForm() {
@@ -23,21 +23,4 @@ class CoprlController < ApplicationController
23
23
  prepend_view_path path
24
24
  end
25
25
  end
26
-
27
- def prepare_context(base_params = params)
28
- prepare_context = Coprl::Presenters::Settings.config.presenters.web_client.prepare_context.dup
29
- prepare_context.push(method(:scrub_context))
30
- context = base_params.dup.to_unsafe_hash
31
- prepare_context.reduce(context) do |params, context_proc|
32
- context = context_proc.call(params, session, request.env)
33
- end
34
- context
35
- end
36
-
37
- def scrub_context(params, _session, _env)
38
- %i(grid_nesting input_tag).each do |key|
39
- params.delete(key) {params.delete(key.to_s)}
40
- end
41
- params
42
- end
43
26
  end
@@ -7,14 +7,14 @@
7
7
  <title><%= @pom.page.title if @pom.page %></title>
8
8
  <meta name="description" content="">
9
9
  <meta name="viewport" content="width=device-width, initial-scale=1">
10
- <%= coprl_headers(@base_url, request, @pom) %>
10
+ <%= coprl_headers %>
11
11
  <%= csrf_meta_tags %>
12
12
  <%= csp_meta_tag if defined?(csp_meta_tag) %>
13
13
  </head>
14
14
  <body>
15
- <%= partial "body/preamble", :locals => {pom:@pom} %>
16
- <%= yield %>
17
- <%= partial "body/postamble", :locals => {pom:@pom} %>
15
+ <%= with_presenters_wrapper do %>
16
+ <%= yield %>
17
+ <% end %>
18
18
  <noscript><p>JavaScript must be enabled to continue.</p></noscript>
19
19
  </body>
20
20
  </html>
@@ -28,9 +28,11 @@ class CoprlTemplateHandler
28
28
  # otherwise we need to get the presenter name built from params
29
29
  presenter_name = local_assigns[:presenter] ? presenter : namespaced_presenter(params)
30
30
  presenter = Coprl::Presenters::App[presenter_name].call
31
- context = params.dup.to_unsafe_hash
31
+ context = self.controller.prepare_context(params)
32
32
  router = Coprl::Presenters::WebClient::Router.new(base_url: request.base_url)
33
- @pom = presenter.expand(router: router, context: context)
33
+ plugins = self.controller.class.plugins
34
+
35
+ @pom = presenter.expand(router: router, context: context, plugins: plugins)
34
36
  end
35
37
  #{source}
36
38
  end
@@ -0,0 +1,5 @@
1
+ Rails.application.config.to_prepare do
2
+ Coprl::Presenters::Settings.configure do |config|
3
+ config.presenters.helpers << Coprl::Presenters::Helpers::Rails
4
+ end
5
+ end
@@ -59,13 +59,10 @@ export class VPosts extends VBase {
59
59
  formData.append(name, encode(value));
60
60
  }
61
61
 
62
- const paramCount = Array.from(formData).length;
63
-
64
- if (paramCount < 1) {
62
+ if (this.paramCount(formData) < 1) {
65
63
  console.warn(
66
64
  'Creating request with no data!'
67
- + ' Are you sure you\'ve hooked everything up correctly?',
68
- );
65
+ + ' Are you sure you\'ve hooked everything up correctly?');
69
66
  }
70
67
 
71
68
  let errors = this.validate(formData);
@@ -185,10 +182,17 @@ export class VPosts extends VBase {
185
182
  }
186
183
 
187
184
  // Send our FormData object; HTTP headers are set automatically
188
- httpRequest.send(formData);
185
+ // Rack 2.2 will throw an exception https://github.com/rack/rack/issues/1603
186
+ // if we set the header as multi-part form data with no data in the body
187
+ // So we set the body to null in this case.
188
+ httpRequest.send(this.paramCount(formData) < 1 ? null : formData);
189
189
  });
190
190
  }
191
191
 
192
+ paramCount(formData){
193
+ return Array.from(formData).length;
194
+ }
195
+
192
196
  isForm() {
193
197
  var parentElement = this.parentElement();
194
198
  return parentElement && parentElement.elements;
@@ -1,15 +1,10 @@
1
1
  <%
2
- header = pom.header
3
- drawer = pom.drawer
4
- footer = pom.footer
5
-
6
2
  root_classes = []
7
3
  root_classes << 'v-root--header-present' if header
8
4
  root_classes << 'v-root--drawer-present' if drawer
9
5
  root_classes << 'v-root--footer-present' if footer
10
6
  %>
11
7
  <div class="v-root compatibility-wrapper mdc-typography <%= root_classes.join(' ') %>">
12
-
13
8
  <% if drawer %>
14
9
  <div class="drawer-frame-root">
15
10
  <%= partial "body/dismissable-drawer", :locals => {drawer: drawer} %>
@@ -22,5 +17,21 @@
22
17
  <div class="drawer-main-content">
23
18
  <%= partial "body/modal-drawer", :locals => {drawer: drawer} %>
24
19
  <% end %>
20
+
21
+ <%= body_content %>
22
+
25
23
  <div class="v-page-content page-content">
26
24
  <div class="v-errors">
25
+ </div>
26
+ </div>
27
+ <% if drawer %>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ <% end %>
32
+
33
+ <%= partial "body/snackbar" %>
34
+ <% if footer %>
35
+ <%= partial "body/footer", :locals => {:footer => footer} %>
36
+ <% end %>
37
+ </div>
@@ -1,7 +1,7 @@
1
1
  <div id="<%= comp.id %>" class="<%= 'v-hidden' if comp.hidden %>">
2
2
  <div
3
- <% if comp.tag %>
4
- data-input-tag="<%= comp.tag %>"
3
+ <% if comp.input_tag %>
4
+ data-input-tag="<%= comp.input_tag %>"
5
5
  <% end %>
6
6
  <%= draggable_attributes(comp) %>
7
7
  <%= drop_zone_attributes(comp) %>
@@ -3,7 +3,7 @@
3
3
  %>
4
4
  <div class="v-form-field mdc-form-field">
5
5
  <div id="<%= comp.id %>"
6
- <% if comp.tag %>data-input-tag="<%= comp.tag %>"<% end %>
6
+ <% if comp.input_tag %>data-input-tag="<%= comp.input_tag %>"<% end %>
7
7
  <% if comp.dirtyable %>data-dirtyable<% end %>
8
8
  class="v-checkbox mdc-checkbox v-input
9
9
  <%= data_table_class_name %>">
@@ -9,8 +9,8 @@
9
9
  <% end %>
10
10
 
11
11
  <button id="<%= comp.id %>"
12
- <% if comp.tag %>
13
- data-input-tag="<%= comp.tag %>"
12
+ <% if comp.input_tag %>
13
+ data-input-tag="<%= comp.input_tag %>"
14
14
  <% end %>
15
15
  class="v-chip v-input mdc-chip
16
16
  <%= color_classname(comp) %>
@@ -3,8 +3,8 @@
3
3
  position_classes = comp.position.map {|p| "v-content-position-#{p}"}.join(' ')
4
4
  %>
5
5
  <div id="<%= comp.id %>"
6
- <% if comp.tag %>
7
- data-input-tag="<%= comp.tag %>"
6
+ <% if comp.input_tag %>
7
+ data-input-tag="<%= comp.input_tag %>"
8
8
  <% end %>
9
9
  <%= draggable_attributes(comp) %>
10
10
  <%= drop_zone_attributes(comp) %>
@@ -3,7 +3,7 @@
3
3
  type_class = comp.picker ? 'v-datetime' : 'v-date-text'
4
4
  %>
5
5
  <div id="<%= comp.id %>"
6
- <% if comp.tag %>data-input-tag="<%= comp.tag %>"<% end %>
6
+ <% if comp.input_tag %>data-input-tag="<%= comp.input_tag %>"<% end %>
7
7
  <% if comp.dirtyable %>data-dirtyable<% end %>
8
8
  class="v-input <%= type_class %> mdc-text-field mdc-text-field--outlined
9
9
  <%= 'mdc-text-field--with-trailing-icon' if comp.clear_icon %>
@@ -2,8 +2,8 @@
2
2
  dialog_action_buttons = Array(comp&.actions&.buttons)
3
3
  %>
4
4
  <div id="<%= comp.id %>"
5
- <% if comp.tag %>
6
- data-input-tag="<%= comp.tag %>"
5
+ <% if comp.input_tag %>
6
+ data-input-tag="<%= comp.input_tag %>"
7
7
  <% end %>
8
8
  class="v-dialog mdc-dialog"
9
9
  role="alertdialog"
@@ -1,6 +1,6 @@
1
1
  <form role="form"
2
- <% if comp.tag %>
3
- data-input-tag="<%= comp.tag %>"
2
+ <% if comp.input_tag %>
3
+ data-input-tag="<%= comp.input_tag %>"
4
4
  <% end %>
5
5
  id="<%= comp.id %>"
6
6
  class="v-form"
@@ -6,8 +6,8 @@
6
6
  @gutters.push comp.gutter.nil? ? @gutters.last : comp.gutter
7
7
  %>
8
8
  <div id="<%= comp.id %>"
9
- <% if comp.tag %>
10
- data-input-tag="<%= comp.tag %>"
9
+ <% if comp.input_tag %>
10
+ data-input-tag="<%= comp.input_tag %>"
11
11
  <% end %>
12
12
  class="v-grid mdc-layout-grid
13
13
  <%= _padding_classes_(comp.padding, @grid_nesting) %>
@@ -1,5 +1,5 @@
1
1
  <input class="v-input v-hidden-field"
2
2
  type="hidden"
3
- <% if comp.tag %>data-input-tag="<%= comp.tag %>"<% end %>
3
+ <% if comp.input_tag %>data-input-tag="<%= comp.input_tag %>"<% end %>
4
4
  <% if comp.dirtyable %>data-dirtyable<% end %>
5
5
  id="<%= comp.id %>" name="<%= comp.name %>" value="<%= comp.value %>"/>
@@ -2,7 +2,7 @@
2
2
  float_label = comp.options.select{|o| o.selected }.any?
3
3
  %>
4
4
  <div class="v-multi-select-container"
5
- <% if comp.tag %>data-input-tag="<%= comp.tag %>"<% end %>
5
+ <% if comp.input_tag %>data-input-tag="<%= comp.input_tag %>"<% end %>
6
6
  <% if comp.dirtyable %>data-dirtyable<% end %>>
7
7
  <div class="v-multi-select--options-list v-hidden">
8
8
  <% comp.options.each do |option| %>
@@ -4,7 +4,7 @@
4
4
  auto_complete = comp.auto_complete&.to_sym == :off ? 'extra-off' : comp.auto_complete
5
5
  %>
6
6
  <div id="<%= comp.id %>"
7
- <%= "data-input-tag='#{comp.tag}'" if comp.tag %>
7
+ <%= "data-input-tag='#{comp.input_tag}'" if comp.input_tag %>
8
8
  <%= 'data-dirtyable' if comp.dirtyable %>
9
9
  class="v-input v-text-field v-focusable mdc-text-field mdc-text-field--outlined
10
10
  <%= 'mdc-text-field--with-leading-icon' if leading_icon %>
@@ -1,6 +1,6 @@
1
1
  <div class="v-form-field mdc-form-field">
2
2
  <div id="<%= comp.id %>"
3
- <% if comp.tag %>data-input-tag="<%= comp.tag %>"<% end %>
3
+ <% if comp.input_tag %>data-input-tag="<%= comp.input_tag %>"<% end %>
4
4
  <% if comp.dirtyable %>data-dirtyable<% end %>
5
5
  class="v-radio mdc-radio v-input">
6
6
  <input class="mdc-radio__native-control"
@@ -1,6 +1,6 @@
1
1
  <div class="v-rich-text-area-container v-input"
2
2
  id="<%= comp.id %>"
3
- <% if comp.tag %>data-input-tag="<%= comp.tag %>"<% end %>
3
+ <% if comp.input_tag %>data-input-tag="<%= comp.input_tag %>"<% end %>
4
4
  <% if comp.dirtyable %>data-dirtyable<% end %>
5
5
  <% if comp.height %>data-initial-height="<%= comp.height %>"<% end %>
6
6
  <% if comp.resizable %>data-resizable<% end %>
@@ -4,7 +4,7 @@
4
4
  <div class="mdc-select v-select v-input
5
5
  <%= 'mdc-select--outlined' if comp.outlined %>
6
6
  <% if comp.disabled %>mdc-select--disabled<% end %>"
7
- <% if comp.tag %>data-input-tag="<%= comp.tag %>"<% end %>
7
+ <% if comp.input_tag %>data-input-tag="<%= comp.input_tag %>"<% end %>
8
8
  <% if comp.dirtyable %>data-dirtyable<% end %>
9
9
  <%= 'style="width: 100%;"' if comp.full_width %>>
10
10
  <%= partial "components/icon", :locals => {comp: comp.icon, class_name: 'mdc-select__icon', parent_id: "#{comp.id}-input", size_class: '', position: []} if comp.icon %>
@@ -1,6 +1,6 @@
1
1
  <div id="<%= comp.id %>"
2
- <% if comp.tag %>
3
- data-input-tag="<%= comp.tag %>"
2
+ <% if comp.input_tag %>
3
+ data-input-tag="<%= comp.input_tag %>"
4
4
  <% end %>
5
5
  class="v-slider v-input mdc-slider
6
6
  <%= 'mdc-slider--discrete' if comp.discrete %>
@@ -3,8 +3,8 @@
3
3
  %>
4
4
  <div class="v-errors">
5
5
  <ul id="<%= comp.id %>"
6
- <% if comp.tag %>
7
- data-input-tag="<%= comp.tag %>"
6
+ <% if comp.input_tag %>
7
+ data-input-tag="<%= comp.input_tag %>"
8
8
  <% end %>
9
9
  class="mdl-stepper v-stepper
10
10
  <%= ' mdl-stepper--horizontal' if horizontal %>
@@ -18,8 +18,8 @@
18
18
  <div id="<%= comp.id %>-content">
19
19
  <% for step in comp.steps %>
20
20
  <div id="<%= step.id %>-content"
21
- <% if step.tag %>
22
- data-input-tag="<%= step.tag %>"
21
+ <% if step.input_tag %>
22
+ data-input-tag="<%= step.input_tag %>"
23
23
  <% end %>
24
24
  class="v-content v-step__content v-step__content-<%= step.id %>
25
25
  <%= ' is-active' if step.selected %>
@@ -3,7 +3,7 @@
3
3
 
4
4
  <div class="v-form-field mdc-form-field">
5
5
  <div id="<%= comp.id %>"
6
- <% if comp.tag %>data-input-tag="<%= comp.tag %>"<% end %>
6
+ <% if comp.input_tag %>data-input-tag="<%= comp.input_tag %>"<% end %>
7
7
  <% if comp.dirtyable %>data-dirtyable<% end %>
8
8
  class="v-switch v-input mdc-switch
9
9
  <%= 'mdc-switch--disabled' if comp.disabled %>
@@ -1,6 +1,6 @@
1
1
  <div id="<%= comp.id %>" class="v-input v-text-field mdc-text-field mdc-text-field--textarea
2
2
  <% if comp.disabled %>mdc-text-field--disabled<% end %>"
3
- <% if comp.tag %>data-input-tag="<%= comp.tag %>"<% end %>
3
+ <% if comp.input_tag %>data-input-tag="<%= comp.input_tag %>"<% end %>
4
4
  <% if comp.dirtyable %>data-dirtyable<% end %>
5
5
  style="<%= 'width:100%' if comp.full_width %>">
6
6
  <textarea id="<%= comp.id %>-input"
@@ -5,7 +5,7 @@
5
5
  behavior = comp.behavior || 'text'
6
6
  %>
7
7
  <div id="<%= comp.id %>"
8
- <% if comp.tag %>data-input-tag="<%= comp.tag %>"<% end %>
8
+ <% if comp.input_tag %>data-input-tag="<%= comp.input_tag %>"<% end %>
9
9
  <% if comp.dirtyable %>data-dirtyable<% end %>
10
10
  class="v-input v-text-field v-focusable mdc-text-field mdc-text-field--outlined
11
11
  <%= 'mdc-text-field--with-leading-icon' if leading_icon %>