Skip to content

Commit 894461d

Browse files
authored
Merge pull request #519 from GetEvinced/master
Add support for shadow DOM elements
2 parents ea16185 + 99e2f25 commit 894461d

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

src/index.js

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -192,17 +192,26 @@ class ReactTooltip extends React.Component {
192192
* Pick out corresponded target elements
193193
*/
194194
getTargetArray(id) {
195-
let targetArray;
195+
let targetArray = [];
196+
let selector;
196197
if (!id) {
197-
targetArray = document.querySelectorAll("[data-tip]:not([data-for])");
198+
selector = "[data-tip]:not([data-for])";
198199
} else {
199200
const escaped = id.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
200-
targetArray = document.querySelectorAll(
201-
`[data-tip][data-for="${escaped}"]`
202-
);
201+
selector = `[data-tip][data-for="${escaped}"]`;
203202
}
204-
// targetArray is a NodeList, convert it to a real array
205-
return nodeListToArray(targetArray);
203+
204+
// Scan document for shadow DOM elements
205+
nodeListToArray(document.getElementsByTagName("*"))
206+
.filter(element => element.shadowRoot)
207+
.forEach(element => {
208+
targetArray = targetArray.concat(
209+
nodeListToArray(element.shadowRoot.querySelectorAll(selector))
210+
);
211+
});
212+
return targetArray.concat(
213+
nodeListToArray(document.querySelectorAll(selector))
214+
);
206215
}
207216

208217
/**

0 commit comments

Comments
 (0)