Skip to content

Commit 8af7bfc

Browse files
author
David Heinemeier Hansson
committed
Fix errant scrubbing of hover/fous/placeholder
1 parent 48e5e1d commit 8af7bfc

File tree

3 files changed

+30
-4
lines changed

3 files changed

+30
-4
lines changed

lib/tailwindcss/purger.rb

+4-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,10 @@ def purge(input)
5252

5353
private
5454
def class_name_in(line)
55-
CLASS_NAME_PATTERN.match(line)[1].remove("\\")
55+
CLASS_NAME_PATTERN.match(line)[1]
56+
.remove("\\")
57+
.remove(/:(focus|hover)(-within)?/)
58+
.remove("::placeholder").remove("::-moz-placeholder").remove(":-ms-input-placeholder")
5659
end
5760

5861
def separated_without_empty_lines(output)

test/fixtures/placeholders.html.erb

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<input class="placeholder-transparent focus-within:outline-black">

test/purger_test.rb

+25-3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ class Tailwindcss::PurgerTest < ActiveSupport::TestCase
1212
end
1313

1414
test "basic purge" do
15-
purged = Tailwindcss::Purger.purge \
16-
Pathname.new(__FILE__).join("../../app/assets/stylesheets/tailwind.css").read,
17-
keeping_class_names_from_files: Pathname(__dir__).glob("fixtures/*.html.erb")
15+
purged = purged_tailwind_from_fixtures
1816

1917
assert purged !~ /.mt-6 \{/
2018

@@ -23,4 +21,28 @@ class Tailwindcss::PurgerTest < ActiveSupport::TestCase
2321
assert purged =~ /.translate-x-1\\\/2 \{/
2422
assert purged =~ /.mt-10 \{/
2523
end
24+
25+
test "purge shouldn't remove hover or focus classes" do
26+
purged = purged_tailwind_from_fixtures
27+
assert purged =~ /.hover\\\:text-gray-500\:hover \{/
28+
assert purged =~ /.focus\\\:outline-none\:focus \{/
29+
assert purged =~ /.focus-within\\\:outline-black\:focus-within \{/
30+
end
31+
32+
test "purge shouldn't remove placeholder selectors" do
33+
purged = Tailwindcss::Purger.purge \
34+
Pathname.new(__FILE__).join("../../app/assets/stylesheets/tailwind.css").read,
35+
keeping_class_names_from_files: Pathname(__dir__).join("fixtures/placeholders.html.erb")
36+
37+
assert purged =~ /.placeholder-transparent\:\:-moz-placeholder \{/
38+
assert purged =~ /.placeholder-transparent\:-ms-input-placeholder \{/
39+
assert purged =~ /.placeholder-transparent\:\:placeholder \{/
40+
end
41+
42+
private
43+
def purged_tailwind_from_fixtures
44+
Tailwindcss::Purger.purge \
45+
Pathname.new(__FILE__).join("../../app/assets/stylesheets/tailwind.css").read,
46+
keeping_class_names_from_files: Pathname(__dir__).glob("fixtures/*.html.erb")
47+
end
2648
end

0 commit comments

Comments
 (0)