% excluded_columns ||= [] %>
<% additional_columns ||= [] %>
<% restricted_columns ||= {} %>
<% form_fields ||= (object.class.respond_to?('form_fields') ? object.class.form_fields : {}) %>
<% form_ordered_fields ||= (form_fields.empty? ? object.class.column_names : form_fields.keys) %>
<% (form_ordered_fields - ['id', 'created_at', 'updated_at', 'deleted_at'] - excluded_columns + additional_columns).each do |column| %>
<% wphtml = "col-md-#{(form_fields[column.to_sym].class == Hash ? form_fields[column.to_sym][:size] : form_fields[column.to_sym] ) || 12}" %>
<% hint = (form_fields[column.to_sym].class == Hash ? form_fields[column.to_sym][:hint] : '') %>
<% placeholder = (form_fields[column.to_sym].class == Hash ? form_fields[column.to_sym][:placeholder] : '') %>
<% if object.class.column_for_attribute(column).type == :text %>
<%= f.input column, input_html: { rows: 10, cols: 20 }, wrapper_html: { class: wphtml }, hint: hint, placeholder: placeholder %>
<% elsif [:date, :datetime].include?(object.class.column_for_attribute(column).type) %>
<%= f.input column, html5: true, wrapper_html: { class: wphtml }, hint: hint, placeholder: placeholder %>
<% elsif object.send(column).respond_to? 'attached?' %>
<% if object.send(column).class == ActiveStorage::Attached::Many %>
<%= f.input column, wrapper_html: { class: wphtml }, hint: hint, input_html: { multiple: true, class: 'fileinput',
data: {
initial: object.send(column).map{|im| rails_blob_path(im, only_path: true)}
}
} %>
<% else %>
<%= f.input column, wrapper_html: { class: wphtml }, hint: hint, input_html: { class: 'fileinput', 'data-initial': [rails_blob_path(object.send(column))] } %>
<% end %>
<% elsif /_id$/ =~ column && object.respond_to?(column.split('_id')[0]) %>
<% if restricted_columns.keys.include?(column.to_sym) %>
<%= f.association column.split("_id")[0],
label: restricted_columns[column.to_sym][:label],
collection: restricted_columns[column.to_sym][:collection],
wrapper_html: { class: wphtml },
hint: hint, placeholder: placeholder
%>
<% else %>
<%= f.association column.split("_id")[0], wrapper_html: { class: wphtml }, hint: hint, placeholder: placeholder %>
<% end %>
<% else %>
<%= f.input column, wrapper_html: { class: wphtml }, hint: hint, placeholder: placeholder %>
<% end %>
<% end %>