class RailsHeroicon::RailsHeroicon
Constants
- VARIANTS
Attributes
options[R]
Public Class Methods
new(icon, variant: "outline", size: nil, **options)
click to toggle source
# File lib/rails_heroicon/rails_heroicon.rb, line 9 def initialize(icon, variant: "outline", size: nil, **options) raise UndefinedVariant unless VARIANTS.include?(variant.to_s) @icon = icon.to_s @variant = variant.to_s @options = options @size = icon_size_with(size) @options.merge!(a11y) @options.merge!({ viewBox: outline? ? "0 0 24 24" : "0 0 20 20", height: @size, width: @size, version: "1.1", fill: outline? ? "none" : "currentColor", stroke: solid? ? "none" : "currentColor" }) end
Public Instance Methods
svg_path()
click to toggle source
Finds the svg icon with respect to variant.
# File lib/rails_heroicon/rails_heroicon.rb, line 29 def svg_path file_path = if solid? "#{SOLID_ICON_PATH}/#{@icon}.svg" else "#{OUTLINE_ICON_PATH}/#{@icon}.svg" end raise UndefinedIcon, @icon unless File.exist?(file_path) File.read(file_path) end
Private Instance Methods
a11y()
click to toggle source
# File lib/rails_heroicon/rails_heroicon.rb, line 43 def a11y accessible = {} if @options[:"aria-label"].nil? && @options["aria-label"].nil? && @options.dig(:aria, :label).nil? accessible[:"aria-hidden"] = "true" else accessible[:role] = "img" end accessible end
icon_size_with(size)
click to toggle source
If the user has explicitly stated the size attribute, then use that. If size attribute is not passed then default to 24 if variant is outline, else default to 20 if variant is solid.
# File lib/rails_heroicon/rails_heroicon.rb, line 57 def icon_size_with(size) if outline? && size.nil? 24 elsif solid? && size.nil? 20 else size end end
outline?()
click to toggle source
# File lib/rails_heroicon/rails_heroicon.rb, line 67 def outline? @variant == "outline" end
solid?()
click to toggle source
# File lib/rails_heroicon/rails_heroicon.rb, line 71 def solid? @variant == "solid" end