Sha256: ca867239567faf23cff0f00603ec8b0b94da4d0b13137b5f5d0309e0231c422a

Contents?: true

Size: 1.46 KB

Versions: 23

Compression:

Stored size: 1.46 KB

Contents

class Avo::Tab
  include Avo::Concerns::IsResourceItem
  include Avo::Concerns::VisibleItems
  include Avo::Fields::FieldExtensions::VisibleInDifferentViews

  class_attribute :item_type, default: :tab
  delegate :items, :add_item, to: :items_holder

  attr_reader :name
  attr_reader :view
  attr_accessor :description
  attr_accessor :items_holder
  attr_accessor :holds_one_field

  def initialize(name: nil, description: nil, view: nil, holds_one_field: false, **args)
    # Initialize the visibility markers
    super

    @name = name
    @description = description
    @holds_one_field = holds_one_field
    @items_holder = Avo::ItemsHolder.new
    @view = view

    show_on args[:show_on] if args[:show_on].present?
    hide_on args[:hide_on] if args[:hide_on].present?
    only_on args[:only_on] if args[:only_on].present?
    except_on args[:except_on] if args[:except_on].present?
  end

  def hydrate(view: nil)
    @view = view

    items_holder.items.grep(Avo::Panel).each do |panel|
      panel.hydrate(view: view)
    end

    self
  end

  def turbo_frame_id(parent: nil)
    id = "#{Avo::Tab.to_s.parameterize} #{name}".parameterize

    return id if parent.nil?

    "#{parent.turbo_frame_id} #{id}".parameterize
  end

  def empty?
    visible_items.blank?
  end

  # Checks for visibility on itself or on theone field it holds
  def visible_on?(view)
    if holds_one_field
      super(view) && items.first.visible_on?(view)
    else
      super(view)
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
avo-2.26.3.pre.pr1601 lib/avo/tab.rb
avo-2.26.2.pre.pr1579 lib/avo/tab.rb
avo-2.26.1.pr1584.pre.1 lib/avo/tab.rb
avo-2.25.1.pre.1.pr1579 lib/avo/tab.rb
avo-2.26.0 lib/avo/tab.rb
avo-2.25.0 lib/avo/tab.rb
avo-2.24.1 lib/avo/tab.rb
avo-2.24.0 lib/avo/tab.rb
avo-2.23.3.pre.1.pr1529 lib/avo/tab.rb
avo-2.23.2 lib/avo/tab.rb
avo-2.23.1 lib/avo/tab.rb
avo-2.23.0 lib/avo/tab.rb
avo-2.22.0 lib/avo/tab.rb
avo-2.21.3.pre.pr1489 lib/avo/tab.rb
avo-2.21.2.pre.pr1486 lib/avo/tab.rb
avo-2.21.1.pre.pr1484 lib/avo/tab.rb
avo-2.21.0 lib/avo/tab.rb
avo-2.21.1.pre.pr1476 lib/avo/tab.rb
avo-2.21.1.pre.issue1450 lib/avo/tab.rb
avo-2.21.1.pre.issue1444 lib/avo/tab.rb