Sha256: 327d868d22115cfd6001198319fac0c6be4a0cbb87ad6775c8beff87ee602514

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

# frozen_string_literal: true

require "active_support"
require "active_support/core_ext"

require_relative "menu_tree/version"
require_relative "menu_tree/config"
require_relative "menu_tree/dsl"

module ActiveAdmin
  # ActiveAdmin::MenuTree class
  module MenuTree
    class Error < StandardError; end

    class << self
      def setup
        raise ActiveAdmin::MenuTree::Error, "No block given, require a block" unless block_given?

        yield(config)

        ActiveAdmin.before_load do |aa_config|
          ActiveAdmin::DSL.prepend ActiveAdmin::MenuTree::DSL

          setup_menu_options(aa_config)
        end
      end

      def config
        @config ||= Config.new
      end

      private

      def setup_menu_options(aa_config)
        comments_menu = config.find_menu_option(id: "Comment")
        aa_config.comments_menu = comments_menu if comments_menu.present?

        menu_options = config.menu_options
                             .reject{ |item| item[:id] == "Comment" }

        aa_config.namespace :admin do |admin|
          admin.build_menu do |menu|
            menu_options.each do |options|
              menu.add(**options)
            end
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activeadmin-menu_tree-0.2.0 lib/activeadmin/menu_tree.rb