diff --git a/app/components/admin/action_component.html.erb b/app/components/admin/action_component.html.erb
new file mode 100644
index 000000000..f31ab4bbd
--- /dev/null
+++ b/app/components/admin/action_component.html.erb
@@ -0,0 +1 @@
+<%= link_to text, path, html_options %>
diff --git a/app/components/admin/action_component.rb b/app/components/admin/action_component.rb
new file mode 100644
index 000000000..ab499d8fb
--- /dev/null
+++ b/app/components/admin/action_component.rb
@@ -0,0 +1,47 @@
+class Admin::ActionComponent < ApplicationComponent
+ include Admin::Namespace
+ attr_reader :action, :record, :options
+
+ def initialize(action, record, **options)
+ @action = action
+ @record = record
+ @options = options
+ end
+
+ private
+
+ def text
+ options[:text] || t("admin.actions.#{action}")
+ end
+
+ def path
+ options[:path] || default_path
+ end
+
+ def html_options
+ {
+ class: html_class,
+ data: { confirm: confirmation_text }
+ }.merge(options.except(:confirm, :path, :text))
+ end
+
+ def html_class
+ "#{action.to_s.gsub("_", "-")}-link"
+ end
+
+ def confirmation_text
+ if options[:confirm] == true
+ t("admin.actions.confirm")
+ else
+ options[:confirm]
+ end
+ end
+
+ def default_path
+ if %i[answers configure destroy preview show].include?(action.to_sym)
+ namespaced_polymorphic_path(namespace, record)
+ else
+ namespaced_polymorphic_path(namespace, record, { action: action }.merge(request.query_parameters))
+ end
+ end
+end
diff --git a/app/components/admin/budget_groups/groups_component.html.erb b/app/components/admin/budget_groups/groups_component.html.erb
index 2b8f1d596..97ad95e01 100644
--- a/app/components/admin/budget_groups/groups_component.html.erb
+++ b/app/components/admin/budget_groups/groups_component.html.erb
@@ -17,9 +17,9 @@
<%= group.headings.count %> |
<%= render Admin::TableActionsComponent.new(group) do |actions| %>
- <%= actions.link_to t("admin.budget_groups.headings_manage"),
- headings_path(actions, group),
- class: "headings-link" %>
+ <%= actions.action(:headings,
+ text: t("admin.budget_groups.headings_manage"),
+ path: headings_path(group)) %>
<% end %>
|
diff --git a/app/components/admin/budget_groups/groups_component.rb b/app/components/admin/budget_groups/groups_component.rb
index 51bf60649..09ba87bbf 100644
--- a/app/components/admin/budget_groups/groups_component.rb
+++ b/app/components/admin/budget_groups/groups_component.rb
@@ -1,4 +1,5 @@
class Admin::BudgetGroups::GroupsComponent < ApplicationComponent
+ include Admin::Namespace
attr_reader :groups
def initialize(groups)
@@ -11,7 +12,7 @@ class Admin::BudgetGroups::GroupsComponent < ApplicationComponent
@budget ||= groups.first.budget
end
- def headings_path(table_actions_component, group)
- send("#{table_actions_component.namespace}_budget_group_headings_path", group.budget, group)
+ def headings_path(group)
+ send("#{namespace}_budget_group_headings_path", group.budget, group)
end
end
diff --git a/app/components/admin/budgets/table_actions_component.html.erb b/app/components/admin/budgets/table_actions_component.html.erb
index 90677909e..7a57c9134 100644
--- a/app/components/admin/budgets/table_actions_component.html.erb
+++ b/app/components/admin/budgets/table_actions_component.html.erb
@@ -1,22 +1,25 @@
<%= render Admin::TableActionsComponent.new(budget,
destroy_confirmation: t("admin.actions.confirm_delete", resource_name: t("admin.budgets.shared.resource_name"),
name: budget.name)
- ) do %>
- <%= link_to t("admin.budgets.index.budget_investments"),
- admin_budget_budget_investments_path(budget_id: budget.id),
- class: "investments-link" %>
- <%= link_to t("admin.budgets.index.edit_groups"),
- admin_budget_groups_path(budget),
- class: "groups-link" %>
+ ) do |actions| %>
+ <%= actions.action(:investments,
+ text: t("admin.budgets.index.budget_investments"),
+ path: admin_budget_budget_investments_path(budget_id: budget.id)) %>
+ <%= actions.action(:groups,
+ text: t("admin.budgets.index.edit_groups"),
+ path: admin_budget_groups_path(budget)) %>
<% if budget.poll.present? %>
- <%= link_to t("admin.budgets.index.admin_ballots"),
- admin_poll_booth_assignments_path(budget.poll),
- class: "ballots-link" %>
+ <%= actions.action(:ballots,
+ text: t("admin.budgets.index.admin_ballots"),
+ path: admin_poll_booth_assignments_path(budget.poll)) %>
<% else %>
- <%= link_to_create_budget_poll %>
+ <%= actions.action(:ballots,
+ text: t("admin.budgets.index.admin_ballots"),
+ path: create_budget_poll_path,
+ method: :post) %>
<% end %>
- <%= link_to t("admin.budgets.actions.preview"),
- budget_path(budget),
- target: "_blank",
- class: "preview-link" %>
+ <%= actions.action(:preview,
+ text: t("admin.budgets.actions.preview"),
+ path: budget_path(budget),
+ target: "_blank") %>
<% end %>
diff --git a/app/components/admin/budgets/table_actions_component.rb b/app/components/admin/budgets/table_actions_component.rb
index 9a90a3799..0e0dfde97 100644
--- a/app/components/admin/budgets/table_actions_component.rb
+++ b/app/components/admin/budgets/table_actions_component.rb
@@ -7,17 +7,14 @@ class Admin::Budgets::TableActionsComponent < ApplicationComponent
private
- def link_to_create_budget_poll
+ def create_budget_poll_path
balloting_phase = budget.phases.find_by(kind: "balloting")
- link_to t("admin.budgets.index.admin_ballots"),
- admin_polls_path(poll: {
- name: budget.name,
- budget_id: budget.id,
- starts_at: balloting_phase.starts_at,
- ends_at: balloting_phase.ends_at
- }),
- class: "ballots-link",
- method: :post
+ admin_polls_path(poll: {
+ name: budget.name,
+ budget_id: budget.id,
+ starts_at: balloting_phase.starts_at,
+ ends_at: balloting_phase.ends_at
+ })
end
end
diff --git a/app/components/admin/hidden_table_actions_component.html.erb b/app/components/admin/hidden_table_actions_component.html.erb
index dad308a78..e8a444900 100644
--- a/app/components/admin/hidden_table_actions_component.html.erb
+++ b/app/components/admin/hidden_table_actions_component.html.erb
@@ -1,12 +1,14 @@
-<%= render Admin::TableActionsComponent.new(actions: []) do %>
- <%= link_to restore_text, restore_path,
- method: :put,
- data: { confirm: t("admin.actions.confirm") },
- class: "restore-link" %>
+<%= render Admin::TableActionsComponent.new(record, actions: []) do |actions| %>
+ <%= actions.action(:restore,
+ text: restore_text,
+ path: restore_path,
+ method: :put,
+ confirm: true) %>
<% unless record.confirmed_hide? %>
- <%= link_to confirm_hide_text, confirm_hide_path,
- method: :put,
- class: "confirm-hide-link" %>
+ <%= actions.action(:confirm_hide,
+ text: confirm_hide_text,
+ path: confirm_hide_path,
+ method: :put) %>
<% end %>
<% end %>
diff --git a/app/components/admin/organizations/table_actions_component.html.erb b/app/components/admin/organizations/table_actions_component.html.erb
index dd9c521a1..ce93ebf14 100644
--- a/app/components/admin/organizations/table_actions_component.html.erb
+++ b/app/components/admin/organizations/table_actions_component.html.erb
@@ -1,13 +1,13 @@
-<%= render Admin::TableActionsComponent.new(actions: []) do %>
+<%= render Admin::TableActionsComponent.new(organization, actions: []) do |actions| %>
<% if can_verify? %>
- <%= link_to t("admin.organizations.index.verify"),
- verify_admin_organization_path(organization, request.query_parameters),
- method: :put, class: "verify-link" %>
+ <%= actions.action(:verify,
+ text: t("admin.organizations.index.verify"),
+ method: :put) %>
<% end %>
<% if can_reject? %>
- <%= link_to t("admin.organizations.index.reject"),
- reject_admin_organization_path(organization, request.query_parameters),
- method: :put, class: "reject-link" %>
+ <%= actions.action(:reject,
+ text: t("admin.organizations.index.reject"),
+ method: :put) %>
<% end %>
<% end %>
diff --git a/app/components/admin/poll/officers/officers_component.html.erb b/app/components/admin/poll/officers/officers_component.html.erb
index 3ef36fd13..f35ae2793 100644
--- a/app/components/admin/poll/officers/officers_component.html.erb
+++ b/app/components/admin/poll/officers/officers_component.html.erb
@@ -23,11 +23,11 @@
destroy_options: { class: "destroy-officer-link" }
) %>
<% else %>
- <%= render Admin::TableActionsComponent.new(actions: []) do |actions| %>
- <%= actions.link_to t("admin.poll_officers.officer.add"),
- add_user_path(officer),
- method: :post,
- class: "create-officer-link" %>
+ <%= render Admin::TableActionsComponent.new(officer, actions: []) do |actions| %>
+ <%= actions.action(:create_officer,
+ text: t("admin.poll_officers.officer.add"),
+ path: add_user_path(officer),
+ method: :post) %>
<% end %>
<% end %>
diff --git a/app/components/admin/roles/table_actions_component.html.erb b/app/components/admin/roles/table_actions_component.html.erb
index 59aed5763..305c18ed4 100644
--- a/app/components/admin/roles/table_actions_component.html.erb
+++ b/app/components/admin/roles/table_actions_component.html.erb
@@ -4,7 +4,7 @@
destroy_options: { class: "destroy-role-link" }
) %>
<% else %>
- <%= render Admin::TableActionsComponent.new(actions: []) do %>
- <%= link_to add_user_text, add_user_path, method: :post, class: "create-role-link" %>
+ <%= render Admin::TableActionsComponent.new(record, actions: []) do |actions| %>
+ <%= actions.action(:create_role, text: add_user_text, path: add_user_path, method: :post) %>
<% end %>
<% end %>
diff --git a/app/components/admin/table_actions_component.html.erb b/app/components/admin/table_actions_component.html.erb
index b5430cf8a..0bc434bac 100644
--- a/app/components/admin/table_actions_component.html.erb
+++ b/app/components/admin/table_actions_component.html.erb
@@ -2,10 +2,10 @@
<%= content %>
<% if actions.include?(:edit) %>
- <%= link_to edit_text, edit_path, edit_options %>
+ <%= action(:edit, edit_options.merge(text: edit_text, path: edit_path)) %>
<% end %>
<% if actions.include?(:destroy) %>
- <%= link_to destroy_text, destroy_path, destroy_options %>
+ <%= action(:destroy, destroy_options.merge(text: destroy_text, path: destroy_path)) %>
<% end %>
diff --git a/app/components/admin/table_actions_component.rb b/app/components/admin/table_actions_component.rb
index f920447bc..9a159e8ab 100644
--- a/app/components/admin/table_actions_component.rb
+++ b/app/components/admin/table_actions_component.rb
@@ -1,12 +1,15 @@
class Admin::TableActionsComponent < ApplicationComponent
- include Admin::Namespace
attr_reader :record, :options
- def initialize(record = nil, **options)
+ def initialize(record, **options)
@record = record
@options = options
end
+ def action(action_name, **args)
+ render Admin::ActionComponent.new(action_name, record, **args)
+ end
+
private
def actions
@@ -14,15 +17,15 @@ class Admin::TableActionsComponent < ApplicationComponent
end
def edit_text
- options[:edit_text] || t("admin.actions.edit")
+ options[:edit_text]
end
def edit_path
- options[:edit_path] || namespaced_polymorphic_path(namespace, record, action: :edit)
+ options[:edit_path]
end
def edit_options
- { class: "edit-link" }.merge(options[:edit_options] || {})
+ options[:edit_options] || {}
end
def destroy_text
@@ -30,18 +33,13 @@ class Admin::TableActionsComponent < ApplicationComponent
end
def destroy_path
- options[:destroy_path] || namespaced_polymorphic_path(namespace, record)
+ options[:destroy_path]
end
def destroy_options
{
method: :delete,
- class: "destroy-link",
- data: { confirm: destroy_confirmation }
+ confirm: options[:destroy_confirmation] || true
}.merge(options[:destroy_options] || {})
end
-
- def destroy_confirmation
- options[:destroy_confirmation] || t("admin.actions.confirm")
- end
end
diff --git a/app/views/admin/admin_notifications/index.html.erb b/app/views/admin/admin_notifications/index.html.erb
index d51ac2c8b..c8fbe4900 100644
--- a/app/views/admin/admin_notifications/index.html.erb
+++ b/app/views/admin/admin_notifications/index.html.erb
@@ -31,15 +31,11 @@
<% if admin_notification.draft? %>
<%= render Admin::TableActionsComponent.new(admin_notification) do |actions| %>
- <%= actions.link_to t("admin.admin_notifications.index.preview"),
- admin_admin_notification_path(admin_notification),
- class: "preview-link" %>
+ <%= actions.action(:preview, text: t("admin.admin_notifications.index.preview")) %>
<% end %>
<% else %>
- <%= render Admin::TableActionsComponent.new(actions: []) do |actions| %>
- <%= actions.link_to t("admin.admin_notifications.index.view"),
- admin_admin_notification_path(admin_notification),
- class: "show-link" %>
+ <%= render Admin::TableActionsComponent.new(admin_notification, actions: []) do |actions| %>
+ <%= actions.action(:show, text: t("admin.admin_notifications.index.view")) %>
<% end %>
<% end %>
|
diff --git a/app/views/admin/audits/_audits.html.erb b/app/views/admin/audits/_audits.html.erb
index aa72d36b8..ff84c3c11 100644
--- a/app/views/admin/audits/_audits.html.erb
+++ b/app/views/admin/audits/_audits.html.erb
@@ -34,10 +34,8 @@
<%= audit.user&.name %>
- <%= render Admin::TableActionsComponent.new(actions: []) do |actions| %>
- <%= actions.link_to t("shared.show"),
- admin_polymorphic_path(audit),
- class: "show-link" %>
+ <%= render Admin::TableActionsComponent.new(audit, actions: []) do |actions| %>
+ <%= actions.action(:show, text: t("shared.show")) %>
<% end %>
|
diff --git a/app/views/admin/dashboard/actions/_default_actions.html.erb b/app/views/admin/dashboard/actions/_default_actions.html.erb
index 896c02a7e..94ec8b79f 100644
--- a/app/views/admin/dashboard/actions/_default_actions.html.erb
+++ b/app/views/admin/dashboard/actions/_default_actions.html.erb
@@ -6,6 +6,7 @@
|
<%= render Admin::TableActionsComponent.new(
+ action,
actions: [:edit],
edit_path: admin_settings_path(anchor: "tab-proposals"),
) %>
diff --git a/app/views/admin/newsletters/index.html.erb b/app/views/admin/newsletters/index.html.erb
index e5c0e2427..46270436b 100644
--- a/app/views/admin/newsletters/index.html.erb
+++ b/app/views/admin/newsletters/index.html.erb
@@ -30,9 +30,7 @@
|
<%= render Admin::TableActionsComponent.new(newsletter) do |actions| %>
- <%= actions.link_to t("admin.newsletters.index.preview"),
- admin_newsletter_path(newsletter),
- class: "preview-link" %>
+ <%= actions.action :preview, text: t("admin.newsletters.index.preview") %>
<% end %>
|
diff --git a/app/views/admin/officials/index.html.erb b/app/views/admin/officials/index.html.erb
index 6212778cc..7517b6e3d 100644
--- a/app/views/admin/officials/index.html.erb
+++ b/app/views/admin/officials/index.html.erb
@@ -27,6 +27,7 @@
<%= render Admin::TableActionsComponent.new(
+ official,
actions: [:edit],
edit_path: edit_admin_official_path(official)
) %>
diff --git a/app/views/admin/officials/search.html.erb b/app/views/admin/officials/search.html.erb
index bf9706207..5e361d9e7 100644
--- a/app/views/admin/officials/search.html.erb
+++ b/app/views/admin/officials/search.html.erb
@@ -33,6 +33,7 @@
|
<%= render Admin::TableActionsComponent.new(
+ user,
actions: [:edit],
edit_path: edit_admin_official_path(user),
edit_text: (t("admin.officials.search.make_official") unless user.official?)
diff --git a/app/views/admin/poll/booth_assignments/_booth_assignment.html.erb b/app/views/admin/poll/booth_assignments/_booth_assignment.html.erb
index a4060f8aa..3da870b1f 100644
--- a/app/views/admin/poll/booth_assignments/_booth_assignment.html.erb
+++ b/app/views/admin/poll/booth_assignments/_booth_assignment.html.erb
@@ -26,12 +26,12 @@
|
<% unless @poll.expired? %>
- <%= render Admin::TableActionsComponent.new(actions: []) do |actions| %>
- <%= actions.link_to t("admin.booth_assignments.manage.actions.assign"),
- admin_poll_booth_assignments_path(@poll, booth_id: booth.id),
- method: :post,
- remote: true,
- class: "assign-booth-link" %>
+ <%= render Admin::TableActionsComponent.new(booth, actions: []) do |actions| %>
+ <%= actions.action(:assign_booth,
+ text: t("admin.booth_assignments.manage.actions.assign"),
+ path: admin_poll_booth_assignments_path(@poll, booth_id: booth.id),
+ method: :post,
+ remote: true) %>
<% end %>
<% end %>
|
diff --git a/app/views/admin/poll/booths/_booth.html.erb b/app/views/admin/poll/booths/_booth.html.erb
index efa5a172c..7dfda2ae8 100644
--- a/app/views/admin/poll/booths/_booth.html.erb
+++ b/app/views/admin/poll/booths/_booth.html.erb
@@ -7,10 +7,10 @@
<% if controller_name == "shifts" || controller_name == "booths" && action_name == "available" %>
- <%= render Admin::TableActionsComponent.new(actions: []) do |actions| %>
- <%= actions.link_to t("admin.booths.booth.shifts"),
- new_admin_booth_shift_path(booth),
- class: "shifts-link" %>
+ <%= render Admin::TableActionsComponent.new(booth, actions: []) do |actions| %>
+ <%= actions.action(:shifts,
+ text: t("admin.booths.booth.shifts"),
+ path: new_admin_booth_shift_path(booth)) %>
<% end %>
<% else %>
<%= render Admin::TableActionsComponent.new(booth, actions: [:edit]) %>
diff --git a/app/views/admin/poll/polls/_poll.html.erb b/app/views/admin/poll/polls/_poll.html.erb
index 364cc24db..a578bfe60 100644
--- a/app/views/admin/poll/polls/_poll.html.erb
+++ b/app/views/admin/poll/polls/_poll.html.erb
@@ -10,9 +10,7 @@
<%= render Admin::TableActionsComponent.new(poll,
destroy_confirmation: t("admin.polls.destroy.alert")
) do |actions| %>
- <%= actions.link_to t("admin.actions.configure"),
- admin_poll_path(poll),
- class: "configure-link" %>
+ <%= actions.action(:configure) %>
<% end %>
|
diff --git a/app/views/admin/poll/polls/_questions.html.erb b/app/views/admin/poll/polls/_questions.html.erb
index 2cde94099..b13a86be2 100644
--- a/app/views/admin/poll/polls/_questions.html.erb
+++ b/app/views/admin/poll/polls/_questions.html.erb
@@ -29,8 +29,7 @@
<%= render Admin::TableActionsComponent.new(question) do |actions| %>
- <%= actions.link_to t("admin.polls.show.edit_answers"), admin_question_path(question),
- class: "answers-link" %>
+ <%= actions.action(:answers, text: t("admin.polls.show.edit_answers")) %>
<% end %>
|
diff --git a/app/views/admin/poll/polls/booth_assignments.html.erb b/app/views/admin/poll/polls/booth_assignments.html.erb
index ece854d29..401ef0011 100644
--- a/app/views/admin/poll/polls/booth_assignments.html.erb
+++ b/app/views/admin/poll/polls/booth_assignments.html.erb
@@ -15,10 +15,10 @@
<%= l poll.starts_at.to_date %> - <%= l poll.ends_at.to_date %>
- <%= render Admin::TableActionsComponent.new(actions: []) do |actions| %>
- <%= actions.link_to t("admin.booth_assignments.manage_assignments"),
- manage_admin_poll_booth_assignments_path(poll),
- class: "manage-link" %>
+ <%= render Admin::TableActionsComponent.new(poll, actions: []) do |actions| %>
+ <%= actions.action(:manage,
+ text: t("admin.booth_assignments.manage_assignments"),
+ path: manage_admin_poll_booth_assignments_path(poll)) %>
<% end %>
|
diff --git a/app/views/admin/poll/questions/_questions.html.erb b/app/views/admin/poll/questions/_questions.html.erb
index e8ce0402e..100425478 100644
--- a/app/views/admin/poll/questions/_questions.html.erb
+++ b/app/views/admin/poll/questions/_questions.html.erb
@@ -26,8 +26,7 @@
<%= render Admin::TableActionsComponent.new(question) do |actions| %>
- <%= actions.link_to t("admin.polls.show.edit_answers"), admin_question_path(question),
- class: "answers-link" %>
+ <%= actions.action(:answers, text: t("admin.polls.show.edit_answers")) %>
<% end %>
|
diff --git a/app/views/admin/poll/questions/_successful_proposals.html.erb b/app/views/admin/poll/questions/_successful_proposals.html.erb
index 1a4b06aad..669d76c94 100644
--- a/app/views/admin/poll/questions/_successful_proposals.html.erb
+++ b/app/views/admin/poll/questions/_successful_proposals.html.erb
@@ -15,11 +15,11 @@
- <%= render Admin::TableActionsComponent.new(actions: []) do |actions| %>
- <%= actions.link_to t("admin.shared.view"), proposal_path(proposal), class: "show-link" %>
- <%= actions.link_to t("admin.questions.index.create_question"),
- new_admin_question_path(proposal_id: proposal.id),
- class: "new-link" %>
+ <%= render Admin::TableActionsComponent.new(proposal, actions: []) do |actions| %>
+ <%= actions.action(:show, text: t("admin.shared.view"), path: proposal_path(proposal)) %>
+ <%= actions.action(:new,
+ text: t("admin.questions.index.create_question"),
+ path: new_admin_question_path(proposal_id: proposal.id)) %>
<% end %>
|
diff --git a/app/views/admin/poll/questions/answers/documents.html.erb b/app/views/admin/poll/questions/answers/documents.html.erb
index 71d6baeb5..53d78996a 100644
--- a/app/views/admin/poll/questions/answers/documents.html.erb
+++ b/app/views/admin/poll/questions/answers/documents.html.erb
@@ -40,11 +40,11 @@
actions: [:destroy],
destroy_path: document_path(document)
) do |actions| %>
- <%= actions.link_to t("documents.buttons.download_document"),
- document.attachment.url,
- target: "_blank",
- rel: "nofollow",
- class: "download-link" %>
+ <%= actions.action(:download,
+ text: t("documents.buttons.download_document"),
+ path: document.attachment.url,
+ target: "_blank",
+ rel: "nofollow") %>
<% end %>
diff --git a/app/views/admin/poll/shifts/_search_officers_results.html.erb b/app/views/admin/poll/shifts/_search_officers_results.html.erb
index 27280e2c9..8e2eed699 100644
--- a/app/views/admin/poll/shifts/_search_officers_results.html.erb
+++ b/app/views/admin/poll/shifts/_search_officers_results.html.erb
@@ -24,6 +24,7 @@
<%= render Admin::TableActionsComponent.new(
+ user,
actions: [:edit],
edit_text: t("admin.poll_shifts.new.edit_shifts"),
edit_path: new_admin_booth_shift_path(officer_id: user.poll_officer.id)
diff --git a/app/views/admin/site_customization/content_blocks/index.html.erb b/app/views/admin/site_customization/content_blocks/index.html.erb
index 79a6f44f2..11c3a8493 100644
--- a/app/views/admin/site_customization/content_blocks/index.html.erb
+++ b/app/views/admin/site_customization/content_blocks/index.html.erb
@@ -44,6 +44,7 @@
| <%= raw content_block.body %> |
<%= render Admin::TableActionsComponent.new(
+ content_block,
actions: [:destroy],
destroy_path: admin_site_customization_delete_heading_content_block_path(content_block)
) %>
diff --git a/app/views/admin/site_customization/documents/index.html.erb b/app/views/admin/site_customization/documents/index.html.erb
index c92462cb9..491d9e069 100644
--- a/app/views/admin/site_customization/documents/index.html.erb
+++ b/app/views/admin/site_customization/documents/index.html.erb
@@ -27,6 +27,7 @@
|
<%= render Admin::TableActionsComponent.new(
+ document,
actions: [:destroy],
destroy_path: admin_site_customization_document_path(document)
) %>
diff --git a/app/views/admin/site_customization/pages/index.html.erb b/app/views/admin/site_customization/pages/index.html.erb
index 08a7956f8..8be93c234 100644
--- a/app/views/admin/site_customization/pages/index.html.erb
+++ b/app/views/admin/site_customization/pages/index.html.erb
@@ -29,15 +29,15 @@
| <%= t("admin.site_customization.pages.page.status_#{page.status}") %> |
<%= render Admin::TableActionsComponent.new(page) do |actions| %>
- <%= actions.link_to t("admin.site_customization.pages.page.see_cards"),
- admin_site_customization_page_widget_cards_path(page),
- class: "cards-link" %>
+ <%= actions.action(:cards,
+ text: t("admin.site_customization.pages.page.see_cards"),
+ path: admin_site_customization_page_widget_cards_path(page)) %>
<% if page.status == "published" %>
- <%= actions.link_to t("admin.site_customization.pages.index.see_page"),
- page.url,
- target: "_blank",
- class: "show-link" %>
+ <%= actions.action(:show,
+ text: t("admin.site_customization.pages.index.see_page"),
+ path: page.url,
+ options: { target: "_blank" }) %>
<% end %>
<% end %>
|
diff --git a/app/views/admin/system_emails/index.html.erb b/app/views/admin/system_emails/index.html.erb
index bcbca17c2..beddb8f7d 100644
--- a/app/views/admin/system_emails/index.html.erb
+++ b/app/views/admin/system_emails/index.html.erb
@@ -18,21 +18,21 @@
<%= t("admin.system_emails.#{system_email_title}.description") %>
- <%= render Admin::TableActionsComponent.new(actions: []) do |actions| %>
+ <%= render Admin::TableActionsComponent.new(system_email_title, actions: []) do |actions| %>
<% if system_email_actions.include?("view") %>
- <%= actions.link_to t("admin.shared.view"),
- admin_system_email_view_path(system_email_title),
- class: "show-link" %>
+ <%= actions.action(:show,
+ text: t("admin.shared.view"),
+ path: admin_system_email_view_path(system_email_title)) %>
<% end %>
<% if system_email_actions.include?("preview_pending") %>
- <%= actions.link_to t("admin.system_emails.preview_pending.action"),
- admin_system_email_preview_pending_path(system_email_title),
- class: "preview-pending-link" %>
- <%= actions.link_to t("admin.system_emails.preview_pending.send_pending"),
- admin_system_email_send_pending_path(system_email_title),
- class: "send-pending-link",
- method: :put %>
+ <%= actions.action(:preview_pending,
+ text: t("admin.system_emails.preview_pending.action"),
+ path: admin_system_email_preview_pending_path(system_email_title)) %>
+ <%= actions.action(:send_pending,
+ text: t("admin.system_emails.preview_pending.send_pending"),
+ path: admin_system_email_send_pending_path(system_email_title),
+ method: :put) %>
<% end %>
<% if system_email_actions.include?("edit_info") %>
diff --git a/app/views/admin/valuators/_valuator_row.html.erb b/app/views/admin/valuators/_valuator_row.html.erb
index 47ff21947..04c53bb28 100644
--- a/app/views/admin/valuators/_valuator_row.html.erb
+++ b/app/views/admin/valuators/_valuator_row.html.erb
@@ -20,9 +20,7 @@
|
<%= render Admin::TableActionsComponent.new(valuator) do |actions| %>
- <%= actions.link_to t("admin.shared.view"),
- admin_valuator_path(valuator),
- class: "show-link" %>
+ <%= actions.action(:show, text: t("admin.shared.view")) %>
<% end %>
|
diff --git a/spec/components/admin/action_component_spec.rb b/spec/components/admin/action_component_spec.rb
new file mode 100644
index 000000000..901571f73
--- /dev/null
+++ b/spec/components/admin/action_component_spec.rb
@@ -0,0 +1,9 @@
+require "rails_helper"
+
+describe Admin::ActionComponent do
+ it "includes an HTML class for the action" do
+ render_inline Admin::ActionComponent.new(:edit, double, path: "/")
+
+ expect(page).to have_css "a.edit-link"
+ end
+end
diff --git a/spec/components/admin/organizations/table_actions_component_spec.rb b/spec/components/admin/organizations/table_actions_component_spec.rb
index 7f2204b52..c4d807748 100644
--- a/spec/components/admin/organizations/table_actions_component_spec.rb
+++ b/spec/components/admin/organizations/table_actions_component_spec.rb
@@ -1,6 +1,6 @@
require "rails_helper"
-describe Admin::Organizations::TableActionsComponent do
+describe Admin::Organizations::TableActionsComponent, controller: Admin::OrganizationsController do
let(:organization) { create(:organization) }
let(:component) { Admin::Organizations::TableActionsComponent.new(organization) }
diff --git a/spec/components/admin/table_actions_component_spec.rb b/spec/components/admin/table_actions_component_spec.rb
index a859c3fe2..89d20a7d6 100644
--- a/spec/components/admin/table_actions_component_spec.rb
+++ b/spec/components/admin/table_actions_component_spec.rb
@@ -37,7 +37,7 @@ describe Admin::TableActionsComponent, controller: Admin::BaseController do
end
it "allows custom URLs" do
- render_inline Admin::TableActionsComponent.new(edit_path: "/myedit", destroy_path: "/mydestroy")
+ render_inline Admin::TableActionsComponent.new(nil, edit_path: "/myedit", destroy_path: "/mydestroy")
expect(page).to have_link "Edit", href: "/myedit"
expect(page).to have_link "Delete", href: "/mydestroy"