2019-08-02 15:54:10 +02:00
|
|
|
<script>
|
2020-02-03 10:50:30 +01:00
|
|
|
import { some, includes, filter } from "lodash/fp"
|
|
|
|
import Textbox from "../common/Textbox.svelte"
|
|
|
|
import Dropdown from "../common/Dropdown.svelte"
|
|
|
|
import PropControl from "./PropControl.svelte"
|
|
|
|
import IconButton from "../common/IconButton.svelte"
|
|
|
|
|
2020-02-10 16:51:09 +01:00
|
|
|
export let component
|
2020-02-03 10:50:30 +01:00
|
|
|
export let onPropChanged = () => {}
|
|
|
|
export let components
|
|
|
|
|
|
|
|
let errors = []
|
|
|
|
const props_to_ignore = ["_component", "_children", "_styles", "_code", "_id"]
|
2020-02-14 12:51:45 +01:00
|
|
|
|
|
|
|
$: componentDef =
|
|
|
|
component && components &&
|
|
|
|
components.find(({ name }) => name === component._component)
|
2020-02-03 10:50:30 +01:00
|
|
|
|
2020-02-14 12:51:45 +01:00
|
|
|
|
2020-02-03 10:50:30 +01:00
|
|
|
|
|
|
|
let setProp = (name, value) => {
|
|
|
|
onPropChanged(name, value)
|
|
|
|
}
|
|
|
|
|
2019-08-02 15:54:10 +02:00
|
|
|
</script>
|
|
|
|
|
2019-08-04 23:21:16 +02:00
|
|
|
<div class="root">
|
|
|
|
|
2020-02-03 10:50:30 +01:00
|
|
|
<form class="uk-form-stacked form-root">
|
2020-02-14 12:51:45 +01:00
|
|
|
{#if componentDef}
|
|
|
|
{#each Object.entries(componentDef.props) as [prop_name, prop_def], index}
|
2020-02-03 10:50:30 +01:00
|
|
|
<div class="prop-container">
|
2019-08-16 16:48:45 +02:00
|
|
|
|
2020-02-03 10:50:30 +01:00
|
|
|
<PropControl
|
|
|
|
{setProp}
|
|
|
|
{prop_name}
|
2020-02-14 12:51:45 +01:00
|
|
|
prop_value={component[prop_name]}
|
|
|
|
prop_definition={prop_def}
|
2020-02-03 10:50:30 +01:00
|
|
|
{index}
|
|
|
|
disabled={false} />
|
2019-08-16 16:48:45 +02:00
|
|
|
|
2020-02-03 10:50:30 +01:00
|
|
|
</div>
|
|
|
|
{/each}
|
2020-02-14 12:51:45 +01:00
|
|
|
{/if}
|
2020-02-03 10:50:30 +01:00
|
|
|
</form>
|
2019-08-16 16:48:45 +02:00
|
|
|
|
2019-08-04 23:21:16 +02:00
|
|
|
</div>
|
2019-08-02 15:54:10 +02:00
|
|
|
|
|
|
|
<style>
|
2020-02-03 10:50:30 +01:00
|
|
|
.root {
|
|
|
|
font-size: 10pt;
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
|
|
|
|
.form-root {
|
|
|
|
display: flex;
|
|
|
|
flex-wrap: wrap;
|
|
|
|
}
|
|
|
|
|
|
|
|
.prop-container {
|
|
|
|
flex: 1 1 auto;
|
|
|
|
min-width: 250px;
|
|
|
|
}
|
2020-01-20 13:28:05 +01:00
|
|
|
</style>
|