From 4c7e96cca3d52012881152912ebeba15b72f6197 Mon Sep 17 00:00:00 2001 From: Cris Ward Date: Mon, 3 Feb 2020 13:17:04 +0000 Subject: [PATCH] removing default slot content before adding passed in content --- src/compiler/compile/render_dom/index.ts | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/compiler/compile/render_dom/index.ts b/src/compiler/compile/render_dom/index.ts index 55691aecf6..433f43c774 100644 --- a/src/compiler/compile/render_dom/index.ts +++ b/src/compiler/compile/render_dom/index.ts @@ -521,24 +521,27 @@ export default function dom( this._content.forEach(node =>{ //append all named slots if(named[node.slot] && slot.getAttribute("name") == node.slot){ if(!slot.hasAttribute("hasupdated")){ + while (slot.firstChild) { + slot.removeChild(slot.firstChild) + } slot.appendChild(named[node.slot]); - slot.setAttribute("hasupdated","") } + slot.setAttribute("hasupdated","") slotted.push(node) } }) }) if(!defaultslot) return(this.slotting=false); // put what evers left info default slot - this._content - .filter(node => slotted.indexOf(node)==-1) - .forEach(node => { - if(!defaultslot.hasAttribute("hasupdated")){ - - defaultslot.appendChild(node) - } - }) - defaultslot.setAttribute("hasupdated","") + let toAppend = this._content.filter(node => slotted.indexOf(node)==-1) + // remove default + if(!defaultslot.hasAttribute("hasupdated") && toAppend.length){ + while (defaultslot.firstChild) { + defaultslot.removeChild(defaultslot.firstChild) + } + } + toAppend.forEach(node => !defaultslot.hasAttribute("hasupdated") && defaultslot.appendChild(node) ) + defaultslot.setAttribute("hasupdated","") } this.slotting = false }