Sha256: f4f0dbd995bfdd168c7e5ffd1f935d1bea83c35713fa361b77733b90ed933ec5

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

module ActiveAdmin
  module Views

    class Columns < ActiveAdmin::Component
      builder_method :columns

      def column(*args, &block)
        insert_tag Column, *args, &block
      end

      # Override add child to set widths
      def add_child(*)
        super
        calculate_columns!
      end

      def to_s
        super.to_s + "<div style=\"clear:both;\"></div>".html_safe
      end

      protected

      def margin_size
        2
      end

      def calculate_columns!
        # Calculate our columns sizes and margins
        count = children.size
        margins_width = margin_size * (count - 1)
        column_width = (100.00 - margins_width) / count

        # Convert to an integer if its not a float
        column_width = column_width.to_i == column_width ? column_width.to_i : column_width

        children.each_with_index do |col, i|
          col.set_attribute :style, "width: #{column_width}%;"
          col.attr(:style) << " margin-right: #{margin_size}%;" unless i == (count - 1)
        end
      end

    end

    class Column < ActiveAdmin::Component
    end
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
activeadmin-0.4.0 lib/active_admin/views/components/columns.rb
andrewroth_activeadmin-0.3.4.4 lib/active_admin/views/components/columns.rb