Skip to content

Commit 99be4d1

Browse files
committed
fix(selector): Add support for shadow DOM elements
1 parent 11ee685 commit 99be4d1

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

Diff for: src/index.js

+16-6
Original file line numberDiff line numberDiff line change
@@ -186,15 +186,25 @@ class ReactTooltip extends React.Component {
186186
* Pick out corresponded target elements
187187
*/
188188
getTargetArray (id) {
189-
let targetArray
189+
let targetArray = [];
190+
let selector;
190191
if (!id) {
191-
targetArray = document.querySelectorAll('[data-tip]:not([data-for])')
192+
selector = '[data-tip]:not([data-for])';
192193
} else {
193-
const escaped = id.replace(/\\/g, '\\\\').replace(/"/g, '\\"')
194-
targetArray = document.querySelectorAll(`[data-tip][data-for="${escaped}"]`)
194+
const escaped = id.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
195+
selector = '[data-tip][data-for="' + escaped + '"]';
195196
}
196-
// targetArray is a NodeList, convert it to a real array
197-
return nodeListToArray(targetArray)
197+
198+
// Scan document for shadow DOM elements
199+
nodeListToArray(document.getElementsByTagName('*'))
200+
.filter(element => element.shadowRoot)
201+
.forEach(element => {
202+
targetArray = targetArray.concat(nodeListToArray(element.shadowRoot.querySelectorAll(selector)));
203+
});
204+
205+
targetArray = targetArray.concat(nodeListToArray(document.querySelectorAll(selector)));
206+
207+
return targetArray
198208
}
199209

200210
/**

0 commit comments

Comments
 (0)