t4y3
4/11/2019 - 6:38 AM

shadowRootを貫通してactiveElementを取得

/**
 * shadowRootを貫通してactiveElementを取得
 * @see https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot/activeElement
 * @param {HTMLElement} root
 * @returns {HTMLElement|null}
 */
const getDocumentOrShadowRootActiveElement = root => {
  const activeElement = root.activeElement;
  if (!!activeElement) {
    if (!!activeElement.shadowRoot) {
      return getDocumentOrShadowRootActiveElement(activeElement.shadowRoot);
    }
    return activeElement;
  }
  return null;
};