Class: Docks::Themes::API::Components::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/docks_theme_api/components/base_component.rb

Instance Method Summary collapse

Constructor Details

#initialize(component) ⇒ Config

Returns a new instance of Config.



66
67
68
# File 'lib/docks_theme_api/components/base_component.rb', line 66

def initialize(component)
  @component = component
end

Instance Method Details

#classes(default_classes = {}) ⇒ Object



76
77
78
79
80
81
# File 'lib/docks_theme_api/components/base_component.rb', line 76

def classes(default_classes = {})
  default_classes = Components.standardize_classes(default_classes)
  @component.instance_variable_get(:@classes).merge!(default_classes) do |key, passed, default|
    passed.concat(default).uniq
  end
end

#conditional_classes(opts) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/docks_theme_api/components/base_component.rb', line 83

def conditional_classes(opts)
  if (attribute = opts.delete(:if))
    classes(opts) if @component.respond_to?(attribute) && !!@component.send(attribute)
  elsif (attribute = opts.delete(:unless))
    classes(opts) if !@component.respond_to?(attribute) || !@component.send(attribute)
  elsif (attribute = opts.delete(:with))
    return unless block_given?
    classes(yield @component.send(attribute))
  elsif (attribute = opts.delete(:from))
    return unless @component.respond_to?(attribute)
    classes(opts.fetch(@component.send(attribute), nil))
  end
end

#defaults(opts = {}) ⇒ Object



70
71
72
73
74
# File 'lib/docks_theme_api/components/base_component.rb', line 70

def defaults(opts = {})
  @component.instance_variable_get(:@attributes).merge!(opts) do |key, passed, default|
    passed.nil? ? default : passed
  end
end