boredgame/src/lib/Portal.svelte

30 lines
511 B
Svelte
Raw Normal View History

2022-05-06 06:51:20 +00:00
<script lang="ts">
function portal(node: HTMLElement) {
let target;
function update() {
target = document.querySelector('body');
if (target) target.appendChild(node);
node.hidden = false;
}
function destroy() {
if (node.parentNode) {
// Child will tell the parent to remove itself
node.parentNode.removeChild(node);
}
}
update();
return {
update,
destroy
};
}
</script>
<div use:portal hidden>
<slot />
</div>