Sha256: 559ca37ddc508869187426fc4c0c057e9153e747e2930d897d13555d819b7795

Contents?: true

Size: 1.55 KB

Versions: 15

Compression:

Stored size: 1.55 KB

Contents

# frozen_string_literal: true

module ActiveElement
  module Components
    # A navigation bar providing links to areas within the application.
    class Navbar
      include Translations

      attr_reader :controller

      def initialize(controller, items: nil, fixed: true)
        @controller = controller
        @items = items
        @fixed = fixed
      end

      def template
        'active_element/components/navbar'
      end

      def locals
        {
          component: self,
          items: items,
          fixed: fixed
        }
      end

      def active_path_class(current_navbar_item:)
        if ActiveMenuLink.new(
          rails_component: RailsComponent.new(Rails),
          navbar_items: items,
          current_path: controller.request.path,
          current_navbar_item: current_navbar_item,
          controller_path: controller.controller_path,
          action_name: controller.action_name
        ).active?
          'active'
        end
      end

      private

      attr_reader :fixed

      def items
        return @items unless @items.nil?

        ActiveElement.eager_load_controllers

        @items ||= user_routes(controller.active_element.current_user).available.select(&:primary?).map do |route|
          { path: route.path, title: route.title, spec: route.spec }
        end.uniq { |item| item[:title] }
      end

      def user_routes(user)
        ActiveElement::Routes.new(
          permissions: user&.permissions,
          rails_component: ActiveElement::RailsComponent.new(Rails)
        )
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
active_element-0.0.31 lib/active_element/components/navbar.rb
active_element-0.0.30 lib/active_element/components/navbar.rb
active_element-0.0.29 lib/active_element/components/navbar.rb
active_element-0.0.28 lib/active_element/components/navbar.rb
active_element-0.0.27 lib/active_element/components/navbar.rb
active_element-0.0.26 lib/active_element/components/navbar.rb
active_element-0.0.24 lib/active_element/components/navbar.rb
active_element-0.0.23 lib/active_element/components/navbar.rb
active_element-0.0.22 lib/active_element/components/navbar.rb
active_element-0.0.21 lib/active_element/components/navbar.rb
active_element-0.0.19 lib/active_element/components/navbar.rb
active_element-0.0.18 lib/active_element/components/navbar.rb
active_element-0.0.17 lib/active_element/components/navbar.rb
active_element-0.0.16 lib/active_element/components/navbar.rb
active_element-0.0.15 lib/active_element/components/navbar.rb