Class: Pajamas::AnimatedIconComponent

Inherits:
Component
  • Object
show all
Defined in:
app/components/pajamas/animated_icon_component.rb

Constant Summary collapse

VARIANT_CLASSES =
{
  current: 'gl-animated-icon-current',
  default: 'gl-animated-icon-default',
  subtle: 'gl-animated-icon-subtle',
  strong: 'gl-animated-icon-strong',
  disabled: 'gl-animated-icon-disabled',
  link: 'gl-animated-icon-link',
  info: 'gl-animated-icon-info',
  warning: 'gl-animated-icon-warning',
  danger: 'gl-animated-icon-danger',
  success: 'gl-animated-icon-success'
}.freeze
ICONS =
[:chevron_down_up, :chevron_lg_down_up, :chevron_lg_right_down, :chevron_right_down, :smile,
:duo_chat, :loader, :notifications, :sidebar, :sort, :star, :todo, :upload].freeze

Instance Method Summary collapse

Constructor Details

#initialize(icon: :chevron_down_up, variant: :current, is_on: false, icon_options: {}) ⇒ AnimatedIconComponent

Returns a new instance of AnimatedIconComponent.

Parameters:

  • icon (Symbol) (defaults to: :chevron_down_up)
  • variant (Symbol) (defaults to: :current)
  • is_on (Boolean) (defaults to: false)
  • icon_options (Hash) (defaults to: {})


26
27
28
29
30
31
# File 'app/components/pajamas/animated_icon_component.rb', line 26

def initialize(icon: :chevron_down_up, variant: :current, is_on: false, icon_options: {})
  @icon = filter_attribute(icon.to_sym, ICONS)
  @variant = filter_attribute(variant&.to_sym, VARIANT_CLASSES.keys, default: :current)
  @is_on = is_on
  @icon_options = icon_options
end

Instance Method Details

#icon_classObject



33
34
35
36
37
38
39
40
# File 'app/components/pajamas/animated_icon_component.rb', line 33

def icon_class
  classes = [VARIANT_CLASSES[@variant]]
  classes.push('gl-animated-sort-icon') if @icon == :sort
  classes.push('gl-animated-icon-on') if @is_on
  classes.push('gl-animated-icon-off') unless @is_on
  classes.push(@icon_options[:class]) if @icon_options[:class]
  classes.join(' ')
end