Sha256: 04052c962540a5cd1bb8c3e64d1c813abe8bc43cdfe533fc62c37cc1c007f7fd

Contents?: true

Size: 1.48 KB

Versions: 13

Compression:

Stored size: 1.48 KB

Contents

# frozen_string_literal: true

module ActiveElement
  module Components
    # A table component for rendering the fields of a single object horizontally.
    class ItemTable
      include LinkHelpers
      include SecretFields

      attr_reader :controller, :model_name

      def initialize(controller, item:, fields:, class_name: nil, model_name: nil,
                     edit: false, new: false, destroy: false, style: nil, row_class: nil, **_kwargs)
        @controller = controller
        @class_name = class_name
        @model_name = model_name
        @item = item
        @fields = fields
        @destroy = destroy
        @edit = edit
        @new = new
        @style = style
        @row_class = row_class
      end

      def template
        'active_element/components/table/item'
      end

      def locals # rubocop:disable Metrics/MethodLength
        {
          component: self,
          class_name: class_name,
          item: item,
          fields: Util::FieldMapping.new(self, fields, class_name).mapped_fields,
          destroy: destroy,
          edit: edit,
          new: new,
          style: style,
          row_class_mapper: row_class_mapper
        }
      end

      def model
        item.class.is_a?(ActiveModel::Naming) ? item.class : nil
      end

      private

      attr_reader :class_name, :item, :fields, :edit, :new, :destroy, :style, :row_class

      def row_class_mapper
        row_class.is_a?(Proc) ? row_class : proc { row_class }
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
active_element-0.0.14 lib/active_element/components/item_table.rb
active_element-0.0.13 lib/active_element/components/item_table.rb
active_element-0.0.12 lib/active_element/components/item_table.rb
active_element-0.0.11 lib/active_element/components/item_table.rb
active_element-0.0.10 lib/active_element/components/item_table.rb
active_element-0.0.9 lib/active_element/components/item_table.rb
active_element-0.0.8 lib/active_element/components/item_table.rb
active_element-0.0.7 lib/active_element/components/item_table.rb
active_element-0.0.6 lib/active_element/components/item_table.rb
active_element-0.0.5 lib/active_element/components/item_table.rb
active_element-0.0.4 lib/active_element/components/item_table.rb
active_element-0.0.3 lib/active_element/components/item_table.rb
active_element-0.0.2 lib/active_element/components/item_table.rb