class Avo::Resources::Items::Row include Avo::Concerns::IsResourceItem include Avo::Concerns::HasItems include Avo::Concerns::HasItemType include Avo::Concerns::IsVisible class_attribute :item_type, default: :row attr_reader :view attr_accessor :items_holder delegate :items, :add_item, to: :items_holder def initialize(view: nil) @view = view @items_holder = Avo::Resources::Items::Holder.new end def hydrate(view: nil, resource: nil, **args) @view = view @resource = resource self end def has_items? @items.present? end class Builder class << self def parse_block(**args, &block) Docile.dsl_eval(new(**args), &block).build end end attr_reader :items_holder delegate :field, to: :items_holder delegate :tool, to: :items_holder delegate :items, to: :items_holder def initialize(**args) @row = Avo::Resources::Items::Row.new(**args) @items_holder = Avo::Resources::Items::Holder.new end # Fetch the tab def build @row.items_holder = @items_holder @row end end end