Sha256: 7d232912064be21d2ecf86580ff9d9ac4aacb88f259293cbbb310047d27e2c2b

Contents?: true

Size: 1.56 KB

Versions: 2

Compression:

Stored size: 1.56 KB

Contents

module Maglove
  module Widgets
    class Columns < Base
      attr_reader :columns
      attr_reader :column_count
      attr_reader :total_columns

      def initialize(options, scope)
        super(options, scope)
        @column_count = 0
        column_array = @options[:columns].to_s.split("x")
        if column_array.length == 1
          @total_columns = column_array[0].to_i
          @columns = Array.new(@total_columns) { 12 / @total_columns }
        else
          @total_columns = column_array.length
          @columns = column_array
        end
      end

      def next_span
        value = @columns[@column_count]
        @column_count += 1
        value
      end

      def row_options
        {
          class: "row row-#{@options[:style]}"
        }
      end

      def identifier
        "columns"
      end

      def defaults
        {
          columns: "2",
          style: "default",
          collapse_options: "sm"
        }
      end

      def template(&block)
        haml_tag :div, row_options do
          yield(self) if block
        end
      end

      def column(&block)
        span = next_span
        if span
          phone_cols = options[:collapse_options] == "xs" ? span : "12"
          haml_tag :div, class: "column col-#{phone_cols} col-tablet-#{span} col-#{options[:collapse_options]}-#{span}" do
            yield if block
            drop_container
          end
        else
          haml_tag :pre do
            haml_concat "ERROR: Row does not allow column at position #{column_count}"
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
maglove-widgets-2.0.3 lib/maglove/widgets/columns.rb
maglove-widgets-2.0.2 lib/maglove/widgets/columns.rb