module ActiveAdmin

  class SidebarSection
    include ActiveAdmin::OptionalDisplay

    attr_accessor :name, :options, :block

    def initialize(name, options = {}, &block)
      @name, @options, @block = name, options, block
      normalize_display_options!
    end

    # The id gets used for the div in the view
    def id
      name.to_s.downcase.underscore + '_sidebar_section'
    end

    def icon?
      options[:icon]
    end

    def icon
      options[:icon] if icon?
    end

    # The title gets displayed within the section in the view
    def title
      begin
        I18n.t!("active_admin.sidebars.#{name.to_s}")
      rescue I18n::MissingTranslationData
        name.to_s.titlecase
      end
    end

    # If a block is not passed in, the name of the partial to render
    def partial_name
      options[:partial] || "#{name.to_s.downcase.gsub(' ', '_')}_sidebar"
    end
  end

end
