Skip to content

Commit 9aaf2aa

Browse files
committed
fix(addClass): fixing svg elements duplicate classNames
1 parent d1bb2ca commit 9aaf2aa

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

src/util/addClass.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ export default function addClass(element, className) {
1414
// svg
1515
const pre = element.getAttribute("class") || "";
1616

17-
element.setAttribute("class", `${pre} ${className}`);
17+
if (!pre.match(className)) {
18+
// check if element doesn't already have className
19+
element.setAttribute("class", `${pre} ${className}`);
20+
}
1821
} else {
1922
if (element.classList !== undefined) {
2023
// check for modern classList property

tests/util/addClass.test.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,21 @@ describe("addClass", () => {
1717
});
1818

1919
test("should append when element is SVG", () => {
20-
const el = document.createElement("svg");
21-
el.className = "firstClass";
20+
const el = document.createElementNS('http://www.w3.org/2000/%3C/span%3Esvg%3Cspan%20class="x x-first">', 'svg');
21+
el.setAttribute('class', "firstClass");
2222

2323
addClass(el, "secondClass");
2424

25-
expect(el.className).toBe("firstClass secondClass");
25+
expect(el.getAttribute('class')).toBe("firstClass secondClass");
2626
});
2727

2828
test("should not append duplicate classNames to svg elements", () => {
29-
const el = document.createElement("svg");
30-
el.className = "firstClass";
29+
const el = document.createElementNS('http://www.w3.org/2000/%3C/span%3Esvg%3Cspan%20class="x x-first">', 'svg');
30+
el.setAttribute('class', "firstClass");
3131

3232
addClass(el, "firstClass");
3333

34-
expect(el.className).toBe("firstClass");
34+
expect(el.getAttribute('class')).toBe("firstClass");
3535
});
3636

3737
test("should not append duplicate classNames to elements", () => {

0 commit comments

Comments
 (0)