class ActiveAdmin::BatchActions::BatchActionSelector

Public Instance Methods

build(batch_actions) click to toggle source

Build a new batch actions selector

@param [Array] batch_actions An array of batch actions

# File lib/active_admin/batch_actions/views/batch_action_selector.rb, line 12
def build(batch_actions)
  @batch_actions = Array(batch_actions)
  @drop_down = build_drop_down
end
to_s() click to toggle source

We don't want to wrap the action list (or any other children) in an unnecessary div, so instead we just return the children

# File lib/active_admin/batch_actions/views/batch_action_selector.rb, line 19
def to_s
  children.to_s
end

Private Instance Methods

batch_actions_to_display() click to toggle source

Return the set of batch actions that should be displayed

# File lib/active_admin/batch_actions/views/batch_action_selector.rb, line 50
def batch_actions_to_display
  @batch_actions.select do |batch_action|
    call_method_or_proc_on(self, batch_action.display_if_block)
  end
end
build_drop_down() click to toggle source
# File lib/active_admin/batch_actions/views/batch_action_selector.rb, line 25
def build_drop_down
  return if batch_actions_to_display.empty?
  dropdown_menu I18n.t("active_admin.batch_actions.button_label"),
                class: "batch_actions_selector dropdown_menu",
                button: { class: "disabled" } do
    batch_actions_to_display.each do |batch_action|
      confirmation_text = render_or_call_method_or_proc_on(self, batch_action.confirm)

      options = {
        :class         => "batch_action",
        "data-action"  => batch_action.sym,
        "data-confirm" => confirmation_text,
        "data-inputs"  => render_in_context(self, batch_action.inputs).to_json
      }

      default_title = render_or_call_method_or_proc_on(self, batch_action.title)
      title = I18n.t("active_admin.batch_actions.labels.#{batch_action.sym}", default: default_title)
      label = I18n.t("active_admin.batch_actions.action_label", title: title)

      item label, "#", options
    end
  end
end