Sha256: 440ac06a23ef0314129fd844ece8a964e60bb84c5dc129694f3b86f6a4decf2b

Contents?: true

Size: 1.1 KB

Versions: 2

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true

class FoxTail::BadgeComponent < FoxTail::BaseComponent
  renders_one :icon, lambda { |icon, options = {}|
    options[:variant] ||= :mini
    options[:"aria-hidden"] = true
    options[:class] = icon_classes options[:class]
    FoxTail::IconBaseComponent.new icon, options
  }

  has_option :url
  has_option :size, default: :base
  has_option :color, default: :default
  has_option :pill, default: false, type: :boolean
  has_option :icon_only, default: false, type: :boolean
  has_option :border, default: false, type: :boolean

  def call
    content_tag (url? ? :a : :span), html_attributes.merge(href: url, class: root_classes) do
      concat icon if icon?
      concat content_tag(:span, content, class: content_classes) if content?
    end
  end

  private

  def root_classes
    classnames theme.apply(:root, self), html_class
  end

  def content_classes
    classnames icon_only? && theme.classname("content.hidden")
  end

  def icon_classes(classes)
    classnames theme.classname("icon.base"),
               theme.classname(["icon", "size", size]),
               classes
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fox_tail-0.1.1 app/components/fox_tail/badge_component.rb
fox_tail-0.1.0 app/components/fox_tail/badge_component.rb