Files
grecia/app/components/admin/table_actions_component.rb
Javi Martín 6a2c01b119 Extract method to render an admin table action
This way it will be easier to change the behavior of all table actions,
like adding ARIA attributes. In the past, when we changed the behavior
of the `link_to` method, we had to change all table action classes.
2021-09-20 20:27:37 +02:00

46 lines
857 B
Ruby

class Admin::TableActionsComponent < ApplicationComponent
attr_reader :record, :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
options[:actions] || [:edit, :destroy]
end
def edit_text
options[:edit_text]
end
def edit_path
options[:edit_path]
end
def edit_options
options[:edit_options] || {}
end
def destroy_text
options[:destroy_text] || t("admin.actions.delete")
end
def destroy_path
options[:destroy_path]
end
def destroy_options
{
method: :delete,
confirm: options[:destroy_confirmation] || true
}.merge(options[:destroy_options] || {})
end
end