Move admin proposals index view to a component

This way we can use the `header` method to simplify it a bit.
This commit is contained in:
Javi Martín
2025-02-23 14:49:20 +01:00
parent 4732817360
commit cf5863b29f
3 changed files with 52 additions and 41 deletions

View File

@@ -0,0 +1,39 @@
<% provide :main_class, "admin-proposals-index" %>
<%= header %>
<% if proposals.any? %>
<%= render Admin::SearchComponent.new(label: t("admin.shared.search.label.proposals")) %>
<h3><%= page_entries_info proposals %></h3>
<table>
<thead>
<tr>
<th class="text-center"><%= t("admin.proposals.index.id") %></th>
<th><%= Proposal.human_attribute_name(:title) %></th>
<th><%= t("admin.proposals.index.author") %></th>
<th><%= t("admin.proposals.index.milestones") %></th>
<th><%= t("admin.proposals.index.selected") %></th>
</tr>
</thead>
<tbody>
<% proposals.each do |proposal| %>
<tr id="<%= dom_id(proposal) %>" class="proposal">
<td class="text-center"><%= proposal.id %></td>
<td><%= link_to proposal.title, admin_proposal_path(proposal) %></td>
<td><%= proposal.author.username %></td>
<td><%= proposal.milestones.count %></td>
<td><%= render Admin::Proposals::ToggleSelectionComponent.new(proposal) %></td>
</tr>
<% end %>
</tbody>
</table>
<%= paginate proposals %>
<% else %>
<div class="callout primary">
<%= t("admin.proposals.index.no_proposals") %>
</div>
<% end %>

View File

@@ -0,0 +1,12 @@
class Admin::Proposals::IndexComponent < ApplicationComponent
include Header
attr_reader :proposals
def initialize(proposals)
@proposals = proposals
end
def title
t("admin.proposals.index.title")
end
end