1
0
Fork 0
mirror of synced 2024-09-14 00:08:25 +12:00
budibase/packages/builder/src/userInterface/ComponentsHierarchyChildren.svelte

61 lines
1.3 KiB
Svelte
Raw Normal View History

<script>
2020-02-03 22:50:30 +13:00
import { last } from "lodash/fp"
import { pipe } from "../common/core"
2020-02-03 22:50:30 +13:00
export let components = []
export let currentComponent
export let onSelect = () => {}
export let level = 0
2020-02-03 22:50:30 +13:00
const capitalise = s => s.substring(0, 1).toUpperCase() + s.substring(1)
const get_name = s => last(s.split("/"))
const get_capitalised_name = name =>
pipe(
name,
[get_name, capitalise]
)
</script>
<ul>
{#each components as component}
2020-02-03 22:50:30 +13:00
<li on:click|stopPropagation={() => onSelect(component)}>
<span
class="item"
class:selected={currentComponent === component}
style="padding-left: {level * 20 + 67}px">
{get_capitalised_name(component._component)}
</span>
{#if component._children}
2020-02-03 22:50:30 +13:00
<svelte:self
components={component._children}
{currentComponent}
{onSelect}
level={level + 1} />
{/if}
</li>
{/each}
</ul>
<style>
ul {
list-style: none;
padding-left: 0;
margin: 0;
}
.item {
display: block;
padding: 11px 67px;
border-radius: 3px;
}
.item:hover {
background: #fafafa;
cursor: pointer;
}
.selected {
color: var(--button-text);
2020-02-03 22:50:30 +13:00
background: var(--background-button) !important;
}
</style>