Avoid rendering an empty list in footer
We've had an accessibility error reported by the Spanish "Portal
Administración electrónica" (PAe). While I can't find any accessibility
rule saying empty lists should be avoided, it looks like some screen
readers report finding lists with 0 items, which is annoying.
We could also do it with CSS using `ul:empty { display: none}`. However,
at the time of writing no browser supports this rule when the tag
contains whitespace.
This commit is contained in:
@@ -1,6 +1,10 @@
|
|||||||
class Layout::SocialComponent < ApplicationComponent
|
class Layout::SocialComponent < ApplicationComponent
|
||||||
delegate :content_block, to: :helpers
|
delegate :content_block, to: :helpers
|
||||||
|
|
||||||
|
def render?
|
||||||
|
sites.any? || footer_content_block.present?
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def sites
|
def sites
|
||||||
@@ -10,7 +14,7 @@ class Layout::SocialComponent < ApplicationComponent
|
|||||||
youtube: "https://www.youtube.com",
|
youtube: "https://www.youtube.com",
|
||||||
telegram: "https://www.telegram.me",
|
telegram: "https://www.telegram.me",
|
||||||
instragram: "https://www.instagram.com"
|
instragram: "https://www.instagram.com"
|
||||||
}.select { |name, _| setting["#{name}_handle"] }
|
}.select { |name, _| setting["#{name}_handle"].present? }
|
||||||
end
|
end
|
||||||
|
|
||||||
def link_title(site_name)
|
def link_title(site_name)
|
||||||
|
|||||||
39
spec/components/layout/social_component_spec.rb
Normal file
39
spec/components/layout/social_component_spec.rb
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
require "rails_helper"
|
||||||
|
|
||||||
|
describe Layout::SocialComponent, type: :component do
|
||||||
|
describe "#render?" do
|
||||||
|
it "renders when a social setting is present" do
|
||||||
|
Setting["twitter_handle"] = "myhandle"
|
||||||
|
|
||||||
|
render_inline Layout::SocialComponent.new
|
||||||
|
|
||||||
|
expect(page).to have_css "ul"
|
||||||
|
end
|
||||||
|
|
||||||
|
it "renders when a content block is present" do
|
||||||
|
Setting["twitter_handle"] = ""
|
||||||
|
Setting["facebook_handle"] = ""
|
||||||
|
Setting["youtube_handle"] = ""
|
||||||
|
Setting["telegram_handle"] = ""
|
||||||
|
Setting["instagram_handle"] = ""
|
||||||
|
|
||||||
|
create(:site_customization_content_block, name: "footer")
|
||||||
|
|
||||||
|
render_inline Layout::SocialComponent.new
|
||||||
|
|
||||||
|
expect(page).to have_css "ul"
|
||||||
|
end
|
||||||
|
|
||||||
|
it "does not render with no settings present and no content block present" do
|
||||||
|
Setting["twitter_handle"] = ""
|
||||||
|
Setting["facebook_handle"] = ""
|
||||||
|
Setting["youtube_handle"] = ""
|
||||||
|
Setting["telegram_handle"] = ""
|
||||||
|
Setting["instagram_handle"] = ""
|
||||||
|
|
||||||
|
render_inline Layout::SocialComponent.new
|
||||||
|
|
||||||
|
expect(page).not_to have_css "ul"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user