Sha256: 1942bcda00560b4aa1181dd215164597fee984ba73bb9a23edbb5197e6be7d9e

Contents?: true

Size: 1.04 KB

Versions: 28

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

class Avo::TabGroupComponent < Avo::BaseComponent
  attr_reader :group
  attr_reader :index
  attr_reader :view
  attr_reader :form
  attr_reader :resource

  def initialize(resource:, group:, index:, form:, params:, view:, tabs_style:)
    @resource = resource
    @group = group
    @index = index
    @form = form
    @params = params
    @view = view
    @tabs_style = tabs_style

    @group.index = index
  end

  def render?
    tabs_have_content? && visible_tabs.present?
  end

  def tabs_have_content?
    visible_tabs.present?
  end

  def active_tab_name
    params[:active_tab_name] || group.visible_items&.first&.name
  end

  def tabs
    @group.items.map do |tab|
      tab.hydrate(view: view)
    end
  end

  def visible_tabs
    tabs.select do |tab|
      !tab.empty?
    end
  end

  def active_tab
    return if group.visible_items.blank?

    group.visible_items.find do |tab|
      tab.name.to_s == active_tab_name.to_s
    end
  end

  def tabs_style
    @tabs_style || Avo.configuration.tabs_style
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
avo-2.18.1 app/components/avo/tab_group_component.rb
avo-2.18.0 app/components/avo/tab_group_component.rb
avo-2.17.1.pre.5.stackedlayout app/components/avo/tab_group_component.rb
avo-2.17.1.pre.4.issue.1342 app/components/avo/tab_group_component.rb
avo-2.17.1.pre.3 app/components/avo/tab_group_component.rb
avo-2.17.1.pre.2.customauthorizationclients app/components/avo/tab_group_component.rb
avo-2.17.1.pre.1.zeitwerk.eager.load.dir app/components/avo/tab_group_component.rb
avo-2.17.0 app/components/avo/tab_group_component.rb
avo-2.16.1.pre.1.nativefields app/components/avo/tab_group_component.rb
avo-2.16.0 app/components/avo/tab_group_component.rb
avo-2.15.3 app/components/avo/tab_group_component.rb
avo-2.15.3.pre.1.data.attrs.to.sidebar.items app/components/avo/tab_group_component.rb
avo-2.15.2 app/components/avo/tab_group_component.rb
avo-2.15.2.pre.1 app/components/avo/tab_group_component.rb
avo-2.15.1 app/components/avo/tab_group_component.rb
avo-2.15.0 app/components/avo/tab_group_component.rb
avo-2.14.3.pre.7.polytranslations1 app/components/avo/tab_group_component.rb
avo-2.14.3.pre.6.nosprockets app/components/avo/tab_group_component.rb
avo-2.14.3.pre.5.nosprockets app/components/avo/tab_group_component.rb
avo-2.14.3.pre.4.tosqlfix app/components/avo/tab_group_component.rb