1234567891011121314151617181920212223242526 |
- /**
- * Get an element's parent in the flattened tree
- * @method getComposedParent
- * @memberof axe.commons.dom
- * @instance
- * @param {Node} element
- * @return {Node|null} Parent element or Null for root node
- */
- function getComposedParent(element) {
- if (element.assignedSlot) {
- // NOTE: If the display of a slot element isn't 'contents',
- // the slot shouldn't be ignored. Chrome does not support this (yet) so,
- // we'll skip this part for now.
- return getComposedParent(element.assignedSlot); // parent of a shadow DOM slot
- } else if (element.parentNode) {
- var parentNode = element.parentNode;
- if (parentNode.nodeType === 1) {
- return parentNode; // Regular node
- } else if (parentNode.host) {
- return parentNode.host; // Shadow root
- }
- }
- return null; // Root node
- }
- export default getComposedParent;
|