Sha256: 2723799f2a01391760f4e0489062333d5a3c8f1196d0750dce22ab22f80da7b0

Contents?: true

Size: 1.6 KB

Versions: 8

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

module Primer
  class TimelineItemComponent < Primer::Component
    include ViewComponent::Slotable

    with_slot :avatar, class_name: "Avatar"
    with_slot :badge, class_name: "Badge"
    with_slot :body, class_name: "Body"

    attr_reader :kwargs
    def initialize(condensed: false, **kwargs)
      @kwargs = kwargs
      @kwargs[:tag] = :div
      @kwargs[:classes] = class_names(
        "TimelineItem",
        condensed ? "TimelineItem--condensed" : "",
        kwargs[:classes]
      )
    end

    def render?
      avatar.present? || badge.present? || body.present?
    end

    class Avatar < Primer::Slot
      attr_reader :kwargs, :alt, :src, :size, :square
      def initialize(alt: nil, src: nil, size: 40, square: true, **kwargs)
        @alt = alt
        @src = src
        @size = size
        @square = square

        @kwargs = kwargs
        @kwargs[:tag] = :div
        @kwargs[:classes] = class_names(
          "TimelineItem-avatar",
          kwargs[:classes]
        )
      end
    end

    class Badge < Primer::Slot
      attr_reader :kwargs, :icon
      def initialize(icon: nil, **kwargs)
        @icon = icon

        @kwargs = kwargs
        @kwargs[:tag] = :div
        @kwargs[:classes] = class_names(
          "TimelineItem-badge",
          kwargs[:classes]
        )
      end
    end

    class Body < Primer::Slot
      attr_reader :kwargs
      def initialize(**kwargs)
        @kwargs = kwargs
        @kwargs[:tag] = :div
        @kwargs[:classes] = class_names(
          "TimelineItem-body",
          kwargs[:classes]
        )
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
primer_view_components-0.0.10 app/components/primer/timeline_item_component.rb
primer_view_components-0.0.9 app/components/primer/timeline_item_component.rb
primer_view_components-0.0.8 app/components/primer/timeline_item_component.rb
primer_view_components-0.0.7 app/components/primer/timeline_item_component.rb
primer_view_components-0.0.6 app/components/primer/timeline_item_component.rb
primer_view_components-0.0.5 app/components/primer/timeline_item_component.rb
primer_view_components-0.0.4 app/components/primer/timeline_item_component.rb
primer_view_components-0.0.3 app/components/primer/timeline_item_component.rb