Sha256: 43222e956b799034d64fddcdbc9c65f8094966cec175117df6aadd79ae061208
Contents?: true
Size: 1.71 KB
Versions: 4
Compression:
Stored size: 1.71 KB
Contents
# frozen_string_literal: true module Primer # Renders an [Octicon](https://primer.style/octicons/) with <%= link_to_system_arguments_docs %>. class OcticonComponent < Primer::Component status :beta SIZE_DEFAULT = :small SIZE_MAPPINGS = { SIZE_DEFAULT => 16, :medium => 32, :large => 64 }.freeze SIZE_OPTIONS = SIZE_MAPPINGS.keys # @example Default # <%= render(Primer::OcticonComponent.new("check")) %> # <%= render(Primer::OcticonComponent.new(icon: "check")) %> # # @example Medium # <%= render(Primer::OcticonComponent.new("people", size: :medium)) %> # # @example Large # <%= render(Primer::OcticonComponent.new("x", size: :large)) %> # # @param icon [String] Name of [Octicon](https://primer.style/octicons/) to use. # @param size [Symbol] <%= one_of(Primer::OcticonComponent::SIZE_MAPPINGS) %> # @param system_arguments [Hash] <%= link_to_system_arguments_docs %> def initialize(icon_name = nil, icon: nil, size: SIZE_DEFAULT, **system_arguments) @icon = icon_name || icon @system_arguments = system_arguments @system_arguments[:class] = Primer::Classify.call(**@system_arguments)[:class] @system_arguments[:height] ||= SIZE_MAPPINGS[size] # Filter out classify options to prevent them from becoming invalid html attributes. # Note height and width are both classify options and valid html attributes. octicon_helper_options = @system_arguments.slice(:height, :width) @system_arguments = add_test_selector(@system_arguments).except(*Primer::Classify::VALID_KEYS, :classes).merge(octicon_helper_options) end def call octicon(@icon, { **@system_arguments }) end end end
Version data entries
4 entries across 4 versions & 1 rubygems