From 7bd54eaceb259d96511be7f673ad90adf9514750 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Thu, 8 Aug 2019 10:44:04 +0100 Subject: [PATCH] UX: Add login button icon to no_ember page (#7982) --- app/views/application/_header.html.erb | 2 +- lib/svg_sprite/svg_sprite.rb | 13 +++++++++++++ spec/components/svg_sprite/svg_sprite_spec.rb | 5 +++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/views/application/_header.html.erb b/app/views/application/_header.html.erb index 98440c52ca4..b2d328ecf38 100644 --- a/app/views/application/_header.html.erb +++ b/app/views/application/_header.html.erb @@ -17,7 +17,7 @@ <%- if can_sign_up? %> " class='btn btn-primary btn-small signup-button'><%= I18n.t('sign_up') %> <%- end %> - " class='btn btn-primary btn-small login-button'><%= I18n.t('log_in') %> + " class='btn btn-primary btn-small login-button btn-icon-text'><%= SvgSprite.raw_svg('fa-user') %><%= I18n.t('log_in') %> <%- end %> diff --git a/lib/svg_sprite/svg_sprite.rb b/lib/svg_sprite/svg_sprite.rb index 1d8cd7c37ff..11814d4342e 100644 --- a/lib/svg_sprite/svg_sprite.rb +++ b/lib/svg_sprite/svg_sprite.rb @@ -303,6 +303,19 @@ License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL false end + # For use in no_ember .html.erb layouts + def self.raw_svg(name) + get_set_cache("raw_svg_#{name}") do + symbol = search(name) + break "" unless symbol + symbol = Nokogiri::XML(symbol).children.first + symbol.name = "svg" + <<~HTML + + HTML + end.html_safe + end + def self.theme_sprite_variable_name THEME_SPRITE_VAR_NAME end diff --git a/spec/components/svg_sprite/svg_sprite_spec.rb b/spec/components/svg_sprite/svg_sprite_spec.rb index 287e59166f2..c4177cd6561 100644 --- a/spec/components/svg_sprite/svg_sprite_spec.rb +++ b/spec/components/svg_sprite/svg_sprite_spec.rb @@ -29,6 +29,11 @@ describe SvgSprite do expect(SvgSprite.search("this-is-not-an-icon")).to eq(false) end + it 'can get a raw SVG for an icon' do + expect(SvgSprite.raw_svg("fa-heart")).to match(/svg.*svg/) # SVG inside SVG + expect(SvgSprite.raw_svg("this-is-not-an-icon")).to eq("") + end + it 'can get a consistent version string' do version1 = SvgSprite.version version2 = SvgSprite.version