Sha256: 04f9f71381f10bc69f4f55af56fdd695c221adffa6fa882693822124458c688f

Contents?: true

Size: 984 Bytes

Versions: 1

Compression:

Stored size: 984 Bytes

Contents

# frozen_string_literal: true

module Grid
  module Columns
    class ColumnsComponent < ViewComponent::Base
      BREAK_POINTS = [:xs, :sm, :md, :lg, :xl, :xxl]

      def initialize(**options)
        @columns = options[:col]
        @offsets = options[:offset]
        @classes = options[:classes]
        @styles = options[:styles]
      end

      def call
        content_tag(:div,
          content,
          class: column_class_builder,
          style: @styles,
        )
      end

      private

      def column_class_builder
        "#{column_breakpoint} #{column_offset} #{@classes}"
      end

      def class_parser(option, klass)
        option.map do |key, value|
          if BREAK_POINTS.include?(key)
            "#{klass}-#{key}-#{value} "
          end
        end.join('').strip
      end

      def column_breakpoint
        class_parser(@columns, 'col')
      end

      def column_offset
        class_parser(@offsets, 'offset')
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bsvc-0.1.0 app/components/grid/columns/columns_component.rb