Class: LcpRuby::Display::Renderers::ColorSwatch

Inherits:
BaseRenderer
  • Object
show all
Defined in:
lib/lcp_ruby/display/renderers/color_swatch.rb

Constant Summary collapse

SAFE_COLOR_PATTERN =
%r{\A(
  \#[0-9a-fA-F]{3,8}                    | # hex colors
  [a-zA-Z]+                              | # named colors
  rgba?\(\s*[\d.,\s%]+\s*\)              | # rgb/rgba
  hsla?\(\s*[\d.,\s%]+\s*\)                # hsl/hsla
)\z}x

Instance Method Summary collapse

Methods inherited from BaseRenderer

#link_producing?

Instance Method Details

#render(value, options = {}, record: nil, view_context: nil) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/lcp_ruby/display/renderers/color_swatch.rb', line 12

def render(value, options = {}, record: nil, view_context: nil)
  return nil if value.blank?

  safe_color = value.to_s.match?(SAFE_COLOR_PATTERN) ? value.to_s : "#ccc"

  view_context.(:span, class: "lcp-color-swatch") do
    view_context.(:span, "", style: "display:inline-block;width:1em;height:1em;background:#{safe_color};border:1px solid #ccc;border-radius:2px;vertical-align:middle;margin-right:0.25em;") +
      value.to_s
  end
end