class Avo::Resources::Items::Holder
def add_invalid_field(payload)
def add_invalid_field(payload) @invalid_fields << payload end
def add_item(instance)
def add_item(instance) @items << instance increment_order_index end
def field(field_name, **args, &block)
def field(field_name, **args, &block) field_parser = Avo::Dsl::FieldParser.new(id: field_name, order_index: @items_index, **args, &block).parse if field_parser.invalid? as = args.fetch(:as, nil) # End execution ehre and add the field to the invalid_fileds payload so we know to wanr the developer about that. # @todo: Make sure this warning is still active return add_invalid_field({ name: field_name, as: as, # resource: resource_class.name, message: "There's an invalid field configuration for this resource. <br/> <code class='px-1 py-px rounded bg-red-600'>field :#{field_name}, as: :#{as}</code>" }) end add_item field_parser.instance end
def heading(body = nil, **args, &block)
def heading(body = nil, **args, &block) field = Avo::Fields::HeadingField.new(body, **args) add_item field end
def increment_order_index
def increment_order_index @items_index += 1 end
def initialize
def initialize @items = [] @items_index = 0 @invalid_fields = [] end
def panel(panel_name = nil, **args, &block)
def panel(panel_name = nil, **args, &block) panel = Avo::Resources::Items::ItemGroup::Builder.parse_block(name: panel_name, **args, &block) add_item panel end
def row(**args, &block)
def row(**args, &block) add_item Avo::Resources::Items::Row::Builder.parse_block(**args, &block) end
def sidebar(**args, &block)
def sidebar(**args, &block) add_item Avo::Resources::Items::Sidebar::Builder.parse_block(**args, &block) end
def tab(name, **args, &block)
def tab(name, **args, &block) add_item Avo::Resources::Items::Tab::Builder.parse_block(name: name, **args, &block) end
def tabs(tab = nil, **kwargs, &block)
def tabs(tab = nil, **kwargs, &block) if tab.present? add_item tab else add_item Avo::Resources::Items::TabGroup::Builder.parse_block(**kwargs, &block) end end
def tool(klass, **args)
def tool(klass, **args) instance = klass.new(**args) add_item instance end