2019-08-16 16:48:45 +02:00
|
|
|
<script>
|
|
|
|
|
|
|
|
import Checkbox from "../common/Checkbox.svelte";
|
|
|
|
import Textbox from "../common/Textbox.svelte";
|
|
|
|
import Dropdown from "../common/Dropdown.svelte";
|
|
|
|
import ComponentPropSelector from "./ComponentPropSelector.svelte";
|
2019-09-03 11:42:19 +02:00
|
|
|
import PropArraySelector from "./PropArraySelector.svelte";
|
2019-09-20 09:01:35 +02:00
|
|
|
import EventListSelector from "./EventListSelector.svelte";
|
|
|
|
import StateBindingControl from "./StateBindingControl.svelte";
|
2019-08-16 16:48:45 +02:00
|
|
|
|
|
|
|
export let errors = [];
|
|
|
|
export let setProp = () => {};
|
|
|
|
export let fieldHasError =() => {};
|
|
|
|
export let propDef = {};
|
|
|
|
export let props = {};
|
|
|
|
export let disabled;
|
2019-08-19 09:51:01 +02:00
|
|
|
export let index;
|
|
|
|
export let onEditComponent = () => {};
|
|
|
|
|
|
|
|
$: isOdd = (index % 2 !== 0);
|
|
|
|
|
|
|
|
const setComponentProp = (props) => {
|
|
|
|
setProp(propDef.____name, props);
|
|
|
|
}
|
2019-08-16 16:48:45 +02:00
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
2019-08-19 09:51:01 +02:00
|
|
|
<div class="root" >
|
2019-08-16 16:48:45 +02:00
|
|
|
|
2019-09-20 09:01:35 +02:00
|
|
|
{#if propDef.type === "component"}
|
2019-08-16 16:48:45 +02:00
|
|
|
|
2019-09-20 09:01:35 +02:00
|
|
|
<div class="prop-label">{propDef.____name}</div>
|
2019-08-16 16:48:45 +02:00
|
|
|
<ComponentPropSelector label={propDef.____name}
|
|
|
|
props={props[propDef.____name]}
|
|
|
|
{disabled}
|
2019-08-19 09:51:01 +02:00
|
|
|
onEdit={onEditComponent}
|
|
|
|
onComponentChosen={onEditComponent}
|
|
|
|
onValueChanged={setComponentProp}/>
|
2019-09-20 09:01:35 +02:00
|
|
|
|
2019-09-03 11:42:19 +02:00
|
|
|
{:else if propDef.type === "array"}
|
2019-09-20 09:01:35 +02:00
|
|
|
|
|
|
|
<div class="prop-label">{propDef.____name}</div>
|
2019-09-03 11:42:19 +02:00
|
|
|
<PropArraySelector parentProps={props}
|
|
|
|
{propDef}
|
|
|
|
onValueChanged={setComponentProp}
|
2019-09-20 09:01:35 +02:00
|
|
|
onEditComponentProp={onEditComponent} />
|
|
|
|
|
|
|
|
{:else if propDef.type === "event"}
|
|
|
|
|
|
|
|
<div class="prop-label">{propDef.____name}</div>
|
|
|
|
<EventListSelector parentProps={props}
|
|
|
|
{propDef}
|
|
|
|
onValueChanged={setComponentProp} />
|
|
|
|
|
2019-08-16 16:48:45 +02:00
|
|
|
{:else}
|
2019-09-20 09:01:35 +02:00
|
|
|
|
|
|
|
<div class="prop-label">{propDef.____name}</div>
|
|
|
|
<StateBindingControl value={props[propDef.____name]}
|
|
|
|
type={propDef.type}
|
|
|
|
options={propDef.options}
|
|
|
|
onChanged={v => setProp(propDef.____name, v)}/>
|
|
|
|
|
2019-08-16 16:48:45 +02:00
|
|
|
{/if}
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
|
|
|
.root {
|
2019-09-25 21:53:52 +02:00
|
|
|
padding: 1rem 1rem 0rem 1rem;
|
2019-08-16 16:48:45 +02:00
|
|
|
}
|
|
|
|
|
2019-09-20 09:01:35 +02:00
|
|
|
.prop-label {
|
2019-09-25 21:53:52 +02:00
|
|
|
font-size: 0.8rem;
|
|
|
|
color: var(--secondary100);
|
2019-09-20 09:01:35 +02:00
|
|
|
font-weight: bold;
|
|
|
|
}
|
|
|
|
|
2019-08-16 16:48:45 +02:00
|
|
|
</style>
|