class Playbook::PbIcon::Icon
def asset_path
def asset_path return unless Rails.application.config.respond_to?(:icon_path) base_path = Rails.application.config.icon_path icon_path = Dir.glob(Rails.root.join(base_path, "**", "#{icon}.svg")).first icon_path if icon_path && File.exist?(icon_path) end
def border_class
def border_class border ? "fa-border" : nil end
def classname
def classname generate_classname( "pb_icon_kit", font_style_class, icon_class, border_class, fixed_width_class, flip_class, inverse_class, list_item_class, pull_class, pulse_class, rotation_class, size_class, spin_class, separator: " " ) end
def custom_icon_classname
def custom_icon_classname generate_classname( "pb_icon_kit", border_class, fixed_width_class, flip_class, inverse_class, list_item_class, pull_class, pulse_class, rotation_class, size_class, spin_class, separator: " " ) end
def fixed_width_class
def fixed_width_class fixed_width ? "fa-fw" : nil end
def flip_class
def flip_class case flip when "horizontal" "fa-flip-horizontal" when "vertical" "fa-flip-vertical" when "both" "fa-flip-horizontal fa-flip-vertical" end end
def font_style_class
def font_style_class font_style ? font_style.to_s : "far" end
def icon_class
def icon_class icon ? "fa-#{icon}" : nil end
def inverse_class
def inverse_class inverse ? "fa-inverse" : nil end
def is_svg?
def is_svg? (icon || custom_icon.to_s).include?(".svg") || asset_path.present? end
def list_item_class
def list_item_class list_item ? "fa-li" : nil end
def pull_class
def pull_class pull ? "fa-pull-#{pull}" : nil end
def pulse_class
def pulse_class pulse ? "fa-pulse" : nil end
def render_svg
def render_svg doc = Nokogiri::XML(URI.open(asset_path || icon || custom_icon)) # rubocop:disable Security/Open svg = doc.at_css "svg" svg["class"] = %w[pb_custom_icon svg-inline--fa].concat([object.custom_icon_classname]).join(" ") svg["id"] = object.id svg["data"] = object.data svg["aria"] = object.aria svg["height"] = "auto" svg["width"] = "auto" doc.at_css("path")["fill"] = "currentColor" raw doc end
def rotation_class
def rotation_class rotation ? "fa-rotate-#{rotation}" : nil end
def size_class
def size_class size ? "fa-#{size}" : nil end
def spin_class
def spin_class spin ? "fa-spin" : nil end
def svg_size
def svg_size size.nil? ? "1x" : size end
def valid_emoji?
def valid_emoji? emoji_regex = /\p{Emoji}/ emoji_regex.match?(icon) end