app/views/formstrap/repeater/_row.html.erb in formstrap-0.2.1 vs app/views/formstrap/repeater/_row.html.erb in formstrap-0.3.0
- old
+ new
@@ -1,20 +1,28 @@
<%
# admin/fields/repeater/row
# accepts block: yes
# parameters:
# form: Form object
+ # repeater_id: ID of the repeater
+ # index: Index of the row in the repeater
# pass_thru: (string) Pass thru for add button if needed
+ # preview_url: (string) URL for previews
+ repeater_id = local_assigns[:repeater_id]
+ pass_thru = local_assigns[:pass_thru]
draggable = form.object.respond_to?(:position)
destroyable = form.object.respond_to?(:destroy)
- error_class = form.object.errors.present? ? "border border-danger" : ""
- class_names = local_assigns.has_key?(:class) ? local_assigns[:class] : "formstrap-repeater-row list-group-item"
+ error_class = form.object&.errors&.present? ? "border border-danger" : ""
+ preview_url = local_assigns.has_key?(:preview_url) ? local_assigns[:preview_url] : nil
+ preview = preview_url.present?
+ preview_url = "#{preview_url}?id=#{form.object.id}&name=#{local_assigns[:template_name] || form.object.name}&pp=disabled"
+ class_names = local_assigns.has_key?(:class) ? local_assigns[:class] : "formstrap-repeater-row list-group-item #{'p-0' if preview}"
%>
<div class="<%= class_names %> <%= error_class %>"
data-repeater-target="row"
- data-row-index="<%= form.options[:child_index] %>"
+ data-row-index="<%= index %>"
data-new-record="<%= form.object.new_record? %>"
>
<%= form.hidden_field :id %>
<%= form.hidden_field :_destroy if destroyable %>
@@ -47,7 +55,15 @@
data-action="click->repeater#removeRow"
>
<%= bootstrap_icon("dash-circle") %>
</div>
- <%= yield %>
+ <% if preview %>
+ <!-- Wrap row in preview layout -->
+ <%= render layout: "formstrap/shared/nested_preview", locals: { form: form, url: preview_url } do %>
+ <%= yield %>
+ <% end %>
+ <% else %>
+ <!-- Just render row content -->
+ <%= yield %>
+ <% end %>
</div>