Fix missing CustomElement children

This commit is contained in:
Kochetygov Andrew 2021-11-12 02:46:46 +03:00 committed by GitHub
parent eeda86bd5e
commit 6420d64534
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -21,32 +21,30 @@ const parseNodeTree = (context: Context, node: Node, parent: ElementContainer, r
if (isTextNode(childNode) && childNode.data.trim().length > 0) { if (isTextNode(childNode) && childNode.data.trim().length > 0) {
parent.textNodes.push(new TextContainer(context, childNode, parent.styles)); parent.textNodes.push(new TextContainer(context, childNode, parent.styles));
} else if (isElementNode(childNode)) { } else if (isElementNode(childNode)) {
if (isSlotElement(childNode) && childNode.assignedNodes) { const container = createContainer(context, childNode);
childNode.assignedNodes().forEach((childNode) => parseNodeTree(context, childNode, parent, root)); if (container.styles.isVisible()) {
} else { if (createsRealStackingContext(childNode, container, root)) {
const container = createContainer(context, childNode); container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;
if (container.styles.isVisible()) { } else if (createsStackingContext(container.styles)) {
if (createsRealStackingContext(childNode, container, root)) { container.flags |= FLAGS.CREATES_STACKING_CONTEXT;
container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT; }
} else if (createsStackingContext(container.styles)) {
container.flags |= FLAGS.CREATES_STACKING_CONTEXT;
}
if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) { if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {
container.flags |= FLAGS.IS_LIST_OWNER; container.flags |= FLAGS.IS_LIST_OWNER;
} }
parent.elements.push(container); parent.elements.push(container);
childNode.slot;
if (childNode.shadowRoot) { if (childNode.shadowRoot) {
parseNodeTree(context, childNode.shadowRoot, container, root); parseNodeTree(context, childNode.shadowRoot, container, root);
} else if ( }
!isTextareaElement(childNode) &&
!isSVGElement(childNode) && if (
!isSelectElement(childNode) !isTextareaElement(childNode) &&
) { !isSVGElement(childNode) &&
parseNodeTree(context, childNode, container, root); !isSelectElement(childNode)
} ) {
parseNodeTree(context, childNode, container, root);
} }
} }
} }
@ -130,4 +128,3 @@ export const isStyleElement = (node: Element): node is HTMLStyleElement => node.
export const isScriptElement = (node: Element): node is HTMLScriptElement => node.tagName === 'SCRIPT'; export const isScriptElement = (node: Element): node is HTMLScriptElement => node.tagName === 'SCRIPT';
export const isTextareaElement = (node: Element): node is HTMLTextAreaElement => node.tagName === 'TEXTAREA'; export const isTextareaElement = (node: Element): node is HTMLTextAreaElement => node.tagName === 'TEXTAREA';
export const isSelectElement = (node: Element): node is HTMLSelectElement => node.tagName === 'SELECT'; export const isSelectElement = (node: Element): node is HTMLSelectElement => node.tagName === 'SELECT';
export const isSlotElement = (node: Element): node is HTMLSlotElement => node.tagName === 'SLOT';