Sha256: c83d81877200f0dadc755a119b8ea779cd960897beedcbfd317ec5f5f6dfe3bc

Contents?: true

Size: 898 Bytes

Versions: 14

Compression:

Stored size: 898 Bytes

Contents

# frozen_string_literal: true

module Tramway::Admin::Navbar
  def navbar_structure(*links)
    @navbar_structure ||= links
  end

  def navbar_items_for(project, role:)
    @singleton_models_for = singleton_models_for(project, role: role)
    @available_models_for = available_models_for(project, role: role)
    navbar_structure.map do |item|
      if item.is_a? Class
        should_be_in_navbar_as item
      elsif item.is_a? Hash
        sub_items = item.values.first.map do |sub_item|
          should_be_in_navbar_as sub_item
        end.compact
        { item.keys.first => sub_items } if sub_items.any?
      end
    end.compact
  end

  private

  def should_be_in_navbar_as(item)
    if @singleton_models_for.include?(item)
      { item => :singleton }
    elsif @available_models_for.include?(item)
      { item => :record }
    elsif item.is_a? Symbol
      :divider
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
tramway-admin-1.29.1 lib/tramway/admin/navbar.rb
tramway-admin-1.29 lib/tramway/admin/navbar.rb
tramway-admin-1.28.2.1 lib/tramway/admin/navbar.rb
tramway-admin-1.28.2 lib/tramway/admin/navbar.rb
tramway-admin-1.28.1.5 lib/tramway/admin/navbar.rb
tramway-admin-1.28.1.4 lib/tramway/admin/navbar.rb
tramway-admin-1.28.1.3 lib/tramway/admin/navbar.rb
tramway-admin-1.28.1.2 lib/tramway/admin/navbar.rb
tramway-admin-1.28.1 lib/tramway/admin/navbar.rb
tramway-admin-1.28.0.1 lib/tramway/admin/navbar.rb
tramway-admin-1.28 lib/tramway/admin/navbar.rb
tramway-admin-1.27.0.2 lib/tramway/admin/navbar.rb
tramway-admin-1.27.0.1 lib/tramway/admin/navbar.rb
tramway-admin-1.27 lib/tramway/admin/navbar.rb