get-composed-parent.js 850 B

1234567891011121314151617181920212223242526
  1. /**
  2. * Get an element's parent in the flattened tree
  3. * @method getComposedParent
  4. * @memberof axe.commons.dom
  5. * @instance
  6. * @param {Node} element
  7. * @return {Node|null} Parent element or Null for root node
  8. */
  9. function getComposedParent(element) {
  10. if (element.assignedSlot) {
  11. // NOTE: If the display of a slot element isn't 'contents',
  12. // the slot shouldn't be ignored. Chrome does not support this (yet) so,
  13. // we'll skip this part for now.
  14. return getComposedParent(element.assignedSlot); // parent of a shadow DOM slot
  15. } else if (element.parentNode) {
  16. var parentNode = element.parentNode;
  17. if (parentNode.nodeType === 1) {
  18. return parentNode; // Regular node
  19. } else if (parentNode.host) {
  20. return parentNode.host; // Shadow root
  21. }
  22. }
  23. return null; // Root node
  24. }
  25. export default getComposedParent;