Sha256: 5544311968688219168447e730e15445e1f564ae717918d6d51ed8fb944e23bf

Contents?: true

Size: 1.19 KB

Versions: 51

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

module Satis
  module InfoItem
    class Component < Satis::ApplicationComponent
      attr_reader :options, :name, :icon, :group

      def initialize(name, *args, &block)
        super
        @name = name
        @args = args
        @options = args.extract_options!
        @group = options[:group]
        @icon = options[:icon]
        @placeholder = options[:placeholder] || '—'
      end

      def string_contents
        @content = options[:content]
        @content = @content.call if @content.respond_to?(:call)

        case @content.presence
        when Time
          @content.strftime('%Y-%m-%d %H:%M')
        when ActiveRecord::Base
          @content.try(:human_name) || @content.try(:name) || "#{@content.class} ##{@content.id}"
        when Symbol
          @content.to_s.humanize
        when ActiveSupport::SafeBuffer
          @content
        when nil
          @placeholder
        else
          @content
        end
      end

      def class_name
        "satis-info-item #{group}-info-item #{css_class_for_name}-info-item #{options[:class]}"
      end

      private

      def css_class_for_name
        name.to_s.dasherize
      end
    end
  end
end

Version data entries

51 entries across 51 versions & 1 rubygems

Version Path
satis-2.1.58 app/components/satis/info_item/component.rb
satis-2.1.57 app/components/satis/info_item/component.rb
satis-2.1.56 app/components/satis/info_item/component.rb
satis-2.1.55 app/components/satis/info_item/component.rb
satis-2.1.54 app/components/satis/info_item/component.rb
satis-2.1.53 app/components/satis/info_item/component.rb
satis-2.1.52 app/components/satis/info_item/component.rb
satis-2.1.51 app/components/satis/info_item/component.rb
satis-2.1.50 app/components/satis/info_item/component.rb
satis-2.1.49 app/components/satis/info_item/component.rb
satis-2.1.48 app/components/satis/info_item/component.rb
satis-2.1.47 app/components/satis/info_item/component.rb
satis-2.1.46 app/components/satis/info_item/component.rb
satis-2.1.45 app/components/satis/info_item/component.rb
satis-2.1.44 app/components/satis/info_item/component.rb
satis-2.1.43 app/components/satis/info_item/component.rb
satis-2.1.42 app/components/satis/info_item/component.rb
satis-2.1.41 app/components/satis/info_item/component.rb
satis-2.1.40 app/components/satis/info_item/component.rb
satis-2.1.39 app/components/satis/info_item/component.rb