Skip to content

Commit e5a8095

Browse files
committed
Add lazy_css_class config
1 parent 9f51d28 commit e5a8095

File tree

4 files changed

+46
-1
lines changed

4 files changed

+46
-1
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ Lazyload::Rails.configure do |config|
7878
# This can be easily customized:
7979
config.placeholder = "/public/img/grey.gif"
8080

81+
# All lazyload images can have an additional classes added to them for easy DOM querying
82+
config.lazy_css_class = "lazy_images"
83+
8184
# image_tag can return lazyload-friendly images by default,
8285
# no need to pass the { lazy: true } option
8386
config.lazy_by_default = true

lib/lazyload-rails.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ def to_lazy(image_html)
5454
img["data-original"] = img["src"]
5555
img["src"] = Lazyload::Rails.configuration.placeholder
5656

57+
if Lazyload::Rails.configuration.lazy_css_class
58+
img["class"] = img["class"].present? ? img["class"].to_s + " " + Lazyload::Rails.configuration.lazy_css_class : Lazyload::Rails.configuration.lazy_css_class
59+
end
60+
5761
img.to_s.html_safe
5862
end
5963

lib/lazyload-rails/config.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,19 @@ def lazy_by_default
2828
@lazy_by_default
2929
end
3030

31+
# When { lazy: true } image_tag will include the lazy_css_class
32+
def lazy_css_class
33+
@lazy_css_class
34+
end
35+
def lazy_css_class=(lazy_css_class)
36+
@lazy_css_class = lazy_css_class
37+
end
38+
3139
# Set default settings
3240
def initialize
3341
@placeholder = "data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs="
3442
@lazy_by_default = false
43+
@lazy_css_class = nil
3544
end
3645
end
3746
end

test/test_image_tag.rb

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ def setup
99
end
1010

1111
def test_lazy_option_sets_lazy_attributes
12-
img = parse(image_tag("foo.png", size: "101x151", lazy: true))
12+
img = parse(image_tag("foo.png", size: "101x151", class: "foo",lazy: true))
1313

1414
assert_match %r(^.*foo.png$), img["data-original"]
15+
assert_equal "foo", img["class"]
1516
assert_equal "151", img["height"]
1617
assert_equal "101", img["width"]
1718
end
@@ -64,6 +65,7 @@ def test_nonlazy_attributes_can_be_set
6465
{ size: "100x150" }
6566
].each do |opts|
6667
img = parse(image_tag("foo.png", size: "100x150", lazy: false))
68+
6769
assert_equal "150", img["height"]
6870
assert_equal "100", img["width"]
6971
end
@@ -73,9 +75,36 @@ def test_empty_options_return_nonlazy_img
7375
img = parse(image_tag("foo.png"))
7476

7577
assert_nil img["data-original"]
78+
assert_nil img["class"]
7679
assert_match %r(^.*foo.png$), img["src"]
7780
end
7881

82+
def test_lazy_css_class
83+
Lazyload::Rails.configure do |config|
84+
config.lazy_css_class = "lazy-img"
85+
end
86+
img = parse(image_tag("foo.png", lazy: true))
87+
assert_equal "lazy-img", img["class"]
88+
end
89+
90+
def test_lazy_css_class_with_class_already_assigned
91+
Lazyload::Rails.configure do |config|
92+
config.lazy_css_class = "lazy-img"
93+
end
94+
img = parse(image_tag("foo.png", class: "foo", lazy: true))
95+
assert_equal "foo lazy-img", img["class"]
96+
end
97+
98+
def test_class_with_lazy_css_class_nil
99+
img = parse(image_tag("foo.png", class: "foo", lazy: true))
100+
assert_equal "foo", img["class"]
101+
end
102+
103+
def test_lazy_css_class_nil
104+
img = parse(image_tag("foo.png", lazy: true))
105+
assert_nil img["class"]
106+
end
107+
79108
private
80109

81110
def parse(image_html)

0 commit comments

Comments
 (0)