Skip to content

Commit 8031a79

Browse files
author
Timothy Johnson
committed
Basic slot handling
1 parent 598da98 commit 8031a79

File tree

7 files changed

+57
-0
lines changed

7 files changed

+57
-0
lines changed

src/VisibilityButton.svelte

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@
9999
on:click={e => ($visibility.block = !$visibility.block)}>
100100
Blocks
101101
</li>
102+
<li
103+
class:checked={$visibility.slot}
104+
on:click={e => ($visibility.slot = !$visibility.slot)}>
105+
Slots
106+
</li>
102107
<li
103108
class:checked={$visibility.anchor}
104109
on:click={e => ($visibility.anchor = !$visibility.anchor)}>

src/nodes/Node.svelte

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import { visibility, hoveredNodeId, selectedNode } from '../store.js'
33
import Element from './Element.svelte'
44
import Block from './Block.svelte'
5+
import Slot from './Slot.svelte'
56
import Text from './Text.svelte'
67
import Anchor from './Anchor.svelte'
78
@@ -25,6 +26,7 @@
2526
element: Element,
2627
component: Element,
2728
block: Block,
29+
slot: Slot,
2830
text: Text,
2931
anchor: Anchor
3032
}[node.type]

src/nodes/Slot.svelte

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<script>
2+
import Collapse from './Collapse.svelte'
3+
4+
export let style
5+
export let hover
6+
export let selected
7+
export let tagName
8+
export let source
9+
export let collapsed
10+
</script>
11+
12+
<style>
13+
div {
14+
height: 16px;
15+
line-height: 16px;
16+
}
17+
18+
div {
19+
color: rgb(0, 116, 232);
20+
}
21+
</style>
22+
23+
<div
24+
class="tag-open tag-name"
25+
class:hover
26+
class:selected
27+
{style}
28+
on:dblclick={e => (collapsed = !collapsed)}>
29+
<Collapse {selected} bind:collapsed />
30+
&lt;{tagName}&gt;
31+
{#if collapsed}&hellip;&lt;/{tagName}&gt;{/if}
32+
</div>
33+
{#if !collapsed}
34+
<slot />
35+
<div class="tag-close tag-name" class:hover {style}>&lt;/{tagName}&gt;</div>
36+
{/if}

src/store.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export const visibility = writable({
44
component: true,
55
element: true,
66
block: true,
7+
slot: true,
78
text: true,
89
anchor: false
910
})

test/src/App.svelte

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import Blocks from './Blocks.svelte'
55
import Bind from './Bind/Bind.svelte'
66
import Events from './Events/Events.svelte'
7+
import Slots from './Slots/Slots.svelte'
78
</script>
89

910
<style>
@@ -37,4 +38,5 @@
3738
<Blocks />
3839
<Bind />
3940
<Events />
41+
<Slots />
4042
</div>

test/src/Slots/SlotComponent.svelte

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<slot />

test/src/Slots/Slots.svelte

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<script>
2+
import SlotComponent from './SlotComponent.svelte'
3+
</script>
4+
5+
<div>
6+
<p>Render slots.</p>
7+
<SlotComponent>
8+
<span>Slot content</span>
9+
</SlotComponent>
10+
</div>

0 commit comments

Comments
 (0)