2020-01-21 15:50:35 +01:00
|
|
|
<script>
|
2020-01-28 22:17:04 +01:00
|
|
|
import PropsView from "./PropsView.svelte";
|
|
|
|
import { store } from "../builderStore";
|
|
|
|
import IconButton from "../common/IconButton.svelte";
|
2020-01-28 23:39:16 +01:00
|
|
|
import { LayoutIcon, PaintIcon, TerminalIcon, EventsIcon } from '../common/Icons/';
|
2020-01-28 22:17:04 +01:00
|
|
|
import CodeEditor from './CodeEditor.svelte';
|
|
|
|
import LayoutEditor from './LayoutEditor.svelte';
|
2020-01-28 23:39:16 +01:00
|
|
|
import EventsEditor from "./EventsEditor";
|
2020-01-28 22:17:04 +01:00
|
|
|
|
|
|
|
let current_view = 'props';
|
|
|
|
|
|
|
|
$: component = $store.currentComponentInfo;
|
|
|
|
$: originalName = component.name;
|
|
|
|
$: name = component.name;
|
|
|
|
$: description = component.description;
|
|
|
|
$: componentInfo = $store.currentComponentInfo;
|
|
|
|
$: components = $store.components;
|
|
|
|
|
|
|
|
const onPropChanged = store.setComponentProp;
|
|
|
|
const onStyleChanged = store.setComponentStyle;
|
2020-01-30 17:22:19 +01:00
|
|
|
|
2020-01-21 15:50:35 +01:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<div class="root">
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
<button class:selected={current_view === 'props'} on:click={() => current_view = 'props'}>
|
|
|
|
<PaintIcon />
|
|
|
|
</button>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<button class:selected={current_view === 'layout'} on:click={() => current_view = 'layout'}>
|
|
|
|
<LayoutIcon />
|
|
|
|
</button>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<button class:selected={current_view === 'code'} on:click={() => current_view = 'code'}>
|
|
|
|
<TerminalIcon />
|
|
|
|
</button>
|
|
|
|
</li>
|
2020-01-28 23:39:16 +01:00
|
|
|
<li>
|
|
|
|
<button class:selected={current_view === 'events'} on:click={() => current_view = 'events'}>
|
|
|
|
<EventsIcon />
|
|
|
|
</button>
|
|
|
|
</li>
|
2020-01-21 15:50:35 +01:00
|
|
|
</ul>
|
|
|
|
|
2020-01-24 15:30:17 +01:00
|
|
|
{#if !componentInfo.component}
|
|
|
|
<div class="component-props-container">
|
2020-01-21 15:50:35 +01:00
|
|
|
|
2020-01-24 15:30:17 +01:00
|
|
|
{#if current_view === 'props'}
|
2020-01-28 22:17:04 +01:00
|
|
|
<PropsView {componentInfo} {components} {onPropChanged} />
|
2020-01-24 15:30:17 +01:00
|
|
|
{:else if current_view === 'layout'}
|
2020-01-28 22:17:04 +01:00
|
|
|
<LayoutEditor {onStyleChanged} {componentInfo}/>
|
2020-01-28 23:39:16 +01:00
|
|
|
{:else if current_view === 'events'}
|
|
|
|
<EventsEditor {componentInfo} {components} {onPropChanged} />
|
2020-01-24 15:30:17 +01:00
|
|
|
{:else}
|
|
|
|
<CodeEditor />
|
|
|
|
{/if}
|
2020-01-21 15:50:35 +01:00
|
|
|
|
|
|
|
</div>
|
2020-01-24 15:30:17 +01:00
|
|
|
{:else}
|
|
|
|
<h1> This is a screen, this will be dealt with later</h1>
|
|
|
|
{/if}
|
2020-01-21 15:50:35 +01:00
|
|
|
|
2020-01-24 15:30:17 +01:00
|
|
|
</div>
|
2020-01-21 15:50:35 +01:00
|
|
|
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
|
|
|
.root {
|
|
|
|
height: 100%;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
.title > div:nth-child(1) {
|
|
|
|
grid-column-start: name;
|
|
|
|
color: var(--secondary100);
|
|
|
|
}
|
|
|
|
|
|
|
|
.title > div:nth-child(2) {
|
|
|
|
grid-column-start: actions;
|
|
|
|
}
|
|
|
|
|
|
|
|
.component-props-container {
|
|
|
|
margin-top: 10px;
|
|
|
|
flex: 1 1 auto;
|
|
|
|
overflow-y: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
ul {
|
|
|
|
list-style: none;
|
|
|
|
display: flex;
|
|
|
|
padding: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
li {
|
|
|
|
margin-right: 20px;
|
|
|
|
background: none;
|
|
|
|
border-radius: 5px;
|
2020-01-22 12:30:19 +01:00
|
|
|
width: 48px;
|
|
|
|
height: 48px;
|
2020-01-21 15:50:35 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
li button {
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
background: none;
|
|
|
|
border: none;
|
|
|
|
border-radius: 5px;
|
|
|
|
padding: 12px;
|
|
|
|
outline: none;
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
|
|
|
|
.selected {
|
|
|
|
color: var(--button-text);
|
|
|
|
background: var(--background-button)!important;
|
|
|
|
}
|
|
|
|
|
|
|
|
</style>
|