Sha256: 5e12eb78bf7e89dd755e198dd87f7c42a6a322d9a80e0b2dfd2267f58dccf809

Contents?: true

Size: 1.11 KB

Versions: 7

Compression:

Stored size: 1.11 KB

Contents

module Spree
  module Admin
    module Tabs
      class Tab
        attr_reader :icon_key, :key, :label_translation_key, :data_hook

        def initialize(key, label_translation_key, url, icon_key, partial_name, availability_checks, active_check, data_hook) # rubocop:disable Metrics/ParameterLists
          @key = key
          @label_translation_key = label_translation_key
          @url = url
          @icon_key = icon_key
          @partial_name = partial_name
          @availability_checks = availability_checks
          @active_check = active_check
          @data_hook = data_hook
        end

        def available?(current_ability, resource)
          return true if @availability_checks.empty?

          result = @availability_checks.map { |check| check.call(current_ability, resource) }

          result.all?(true)
        end

        def url(resource = nil)
          @url.is_a?(Proc) ? @url.call(resource) : @url
        end

        def active?(current_tab)
          return false unless @active_check.present?

          @active_check.call(current_tab, @partial_name)
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
spree_backend-4.8.4 app/models/spree/admin/tabs/tab.rb
spree_backend-4.8.3 app/models/spree/admin/tabs/tab.rb
spree_backend-4.8.2 app/models/spree/admin/tabs/tab.rb
spree_backend-4.8.1 app/models/spree/admin/tabs/tab.rb
spree_backend-4.7.2 app/models/spree/admin/tabs/tab.rb
spree_backend-4.7.1 app/models/spree/admin/tabs/tab.rb
spree_backend-4.7.0 app/models/spree/admin/tabs/tab.rb