Initial implementation of props editor.
This commit is contained in:
parent
1007dfaeb1
commit
cc155c121c
|
@ -53,38 +53,38 @@ store.subscribe(s => {
|
||||||
components = s.components;
|
components = s.components;
|
||||||
});
|
});
|
||||||
|
|
||||||
// const save = () => {
|
const save = () => {
|
||||||
|
|
||||||
// ignoreStore = true;
|
ignoreStore = true;
|
||||||
// if(!validate()) {
|
if(!validate()) {
|
||||||
// ignoreStore = false;
|
ignoreStore = false;
|
||||||
// return;
|
return;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// component.name = originalName || name;
|
component.name = originalName || name;
|
||||||
// component.description = description;
|
component.description = description;
|
||||||
// component.tags = pipe(tagsString, [
|
component.tags = pipe(tagsString, [
|
||||||
// split(","),
|
split(","),
|
||||||
// map(s => s.trim())
|
map(s => s.trim())
|
||||||
// ]);
|
]);
|
||||||
|
|
||||||
// store.saveScreen(component);
|
store.saveScreen(component);
|
||||||
|
|
||||||
// ignoreStore = false;
|
ignoreStore = false;
|
||||||
// // now do the rename
|
// now do the rename
|
||||||
// if(name !== originalName) {
|
if(name !== originalName) {
|
||||||
// store.renameScreen(originalName, name);
|
store.renameScreen(originalName, name);
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
|
||||||
// const deleteComponent = () => {
|
const deleteComponent = () => {
|
||||||
// showDialog();
|
showDialog();
|
||||||
// }
|
}
|
||||||
|
|
||||||
// const confirmDeleteComponent = () => {
|
const confirmDeleteComponent = () => {
|
||||||
// store.deleteScreen(component.name);
|
store.deleteScreen(component.name);
|
||||||
// hideDialog();
|
hideDialog();
|
||||||
// }
|
}
|
||||||
|
|
||||||
const onPropsValidate = result => {
|
const onPropsValidate = result => {
|
||||||
propsValidationErrors = result;
|
propsValidationErrors = result;
|
||||||
|
@ -100,6 +100,7 @@ const updateComponent = doChange => {
|
||||||
const onPropsChanged = newProps => {
|
const onPropsChanged = newProps => {
|
||||||
updateComponent(newComponent =>
|
updateComponent(newComponent =>
|
||||||
assign(newComponent.props, newProps));
|
assign(newComponent.props, newProps));
|
||||||
|
save();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,14 +27,14 @@ const setComponentProp = (props) => {
|
||||||
|
|
||||||
{#if propDef.type === "event"}
|
{#if propDef.type === "event"}
|
||||||
|
|
||||||
<div class="prop-label">{propDef.____name}</div>
|
<h5>{propDef.____name}</h5>
|
||||||
<EventListSelector parentProps={props}
|
<EventListSelector parentProps={props}
|
||||||
{propDef}
|
{propDef}
|
||||||
onValueChanged={setComponentProp} />
|
onValueChanged={setComponentProp} />
|
||||||
|
|
||||||
{:else }
|
{:else }
|
||||||
|
|
||||||
<div class="prop-label">{propDef.____name}</div>
|
<h5>{propDef.____name}</h5>
|
||||||
<StateBindingControl value={props[propDef.____name]}
|
<StateBindingControl value={props[propDef.____name]}
|
||||||
type={propDef.type}
|
type={propDef.type}
|
||||||
options={propDef.options}
|
options={propDef.options}
|
||||||
|
@ -47,13 +47,21 @@ const setComponentProp = (props) => {
|
||||||
<style>
|
<style>
|
||||||
|
|
||||||
.root {
|
.root {
|
||||||
padding: 1rem 0 0rem 0;
|
height: 40px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
display: grid;
|
||||||
|
grid-template-rows: 1fr;
|
||||||
|
grid-template-columns: 70px 1fr;
|
||||||
|
grid-gap: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.prop-label {
|
h5 {
|
||||||
font-size: 0.8rem;
|
font-size: 12px;
|
||||||
color: var(--secondary100);
|
font-weight: 700;
|
||||||
font-weight: bold;
|
color: #163057;
|
||||||
}
|
opacity: 0.6;
|
||||||
|
padding-top: 12px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -66,10 +66,10 @@ const setBindingSource = ev => {
|
||||||
bind(bindingPath, bindingFallbackValue, ev.target.value);
|
bind(bindingPath, bindingFallbackValue, ev.target.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
const makeBinding = () => {
|
// const makeBinding = () => {
|
||||||
forceIsBound=true;
|
// forceIsBound=true;
|
||||||
isExpanded=true;
|
// isExpanded=true;
|
||||||
}
|
// }
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -77,11 +77,11 @@ const makeBinding = () => {
|
||||||
<div>
|
<div>
|
||||||
<div class="bound-header">
|
<div class="bound-header">
|
||||||
<div>{isExpanded ? "" : bindingPath}</div>
|
<div>{isExpanded ? "" : bindingPath}</div>
|
||||||
<IconButton icon={isExpanded ? "chevron-up" : "chevron-down"}
|
<IconButton icon={isExpanded ? "chevron-up" : "chevron-down"}
|
||||||
size="12"
|
size="12"
|
||||||
on:click={() => isExpanded=!isExpanded}/>
|
on:click={() => isExpanded=!isExpanded}/>
|
||||||
{#if !canOnlyBind}
|
{#if !canOnlyBind}
|
||||||
<IconButton icon="trash"
|
<IconButton icon="trash"
|
||||||
size="12"
|
size="12"
|
||||||
on:click={clearBinding}/>
|
on:click={clearBinding}/>
|
||||||
{/if}
|
{/if}
|
||||||
|
@ -97,8 +97,8 @@ const makeBinding = () => {
|
||||||
value={bindingFallbackValue}
|
value={bindingFallbackValue}
|
||||||
on:change={setBindingFallback} >
|
on:change={setBindingFallback} >
|
||||||
<div class="binding-prop-label">Binding Source</div>
|
<div class="binding-prop-label">Binding Source</div>
|
||||||
<select class="uk-select uk-form-small"
|
<select class="uk-select uk-form-small"
|
||||||
value={bindingSource}
|
value={bindingSource}
|
||||||
on:change={setBindingSource}>
|
on:change={setBindingSource}>
|
||||||
|
|
||||||
<option>store</option>
|
<option>store</option>
|
||||||
|
@ -117,13 +117,13 @@ const makeBinding = () => {
|
||||||
<div>
|
<div>
|
||||||
<IconButton icon={value == true ? "check-square" : "square"}
|
<IconButton icon={value == true ? "check-square" : "square"}
|
||||||
size="19"
|
size="19"
|
||||||
on:click={() => onChanged(!value)}/>
|
on:click={() => onChanged(!value)} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{:else if type === "options"}
|
{:else if type === "options"}
|
||||||
|
|
||||||
<select class="uk-select uk-form-small"
|
<select class="uk-select uk-form-small"
|
||||||
value={value}
|
value={value}
|
||||||
on:change={ev => onChanged(ev.target.value)}>
|
on:change={ev => onChanged(ev.target.value)}>
|
||||||
{#each options as option}
|
{#each options as option}
|
||||||
<option value={option}>{option}</option>
|
<option value={option}>{option}</option>
|
||||||
|
@ -132,49 +132,46 @@ const makeBinding = () => {
|
||||||
|
|
||||||
{:else}
|
{:else}
|
||||||
|
|
||||||
<input class="uk-input uk-form-small"
|
<input on:change={ev => onChanged(ev.target.value)}
|
||||||
on:change={ev => onChanged(ev.target.value)}
|
bind:value={value}
|
||||||
bind:value={value}
|
style="flex: 1 0 auto;" />
|
||||||
style="flex: 1 0 auto;" >
|
|
||||||
|
|
||||||
|
|
||||||
{/if}
|
{/if}
|
||||||
<IconButton icon="link"
|
|
||||||
size="12"
|
|
||||||
on:click={makeBinding} />
|
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
.unbound-container {
|
||||||
|
display:flex;
|
||||||
|
}
|
||||||
|
|
||||||
.unbound-container {
|
.bound-header {
|
||||||
display:flex;
|
display: flex;
|
||||||
margin: .5rem 0rem .5rem 0rem;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.unbound-container > *:nth-child(1) {
|
.bound-header > div:nth-child(1) {
|
||||||
width:auto;
|
flex: 1 0 auto;
|
||||||
flex: 1 0 auto;
|
width: 30px;
|
||||||
font-size: 0.8rem;
|
color: var(--secondary50);
|
||||||
color: var(--secondary100);
|
padding-left: 5px;
|
||||||
border-radius: .2rem;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.bound-header {
|
.binding-prop-label {
|
||||||
display: flex;
|
color: var(--secondary50);
|
||||||
}
|
}
|
||||||
|
|
||||||
.bound-header > div:nth-child(1) {
|
input {
|
||||||
flex: 1 0 auto;
|
font-size: 12px;
|
||||||
width: 30px;
|
font-weight: 700;
|
||||||
color: var(--secondary50);
|
color: #163057;
|
||||||
padding-left: 5px;
|
opacity: 0.7;
|
||||||
}
|
padding: 5px 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
.binding-prop-label {
|
border: 1px solid #DBDBDB;
|
||||||
color: var(--secondary50);
|
border-radius: 2px;
|
||||||
}
|
outline: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</style>
|
|
||||||
|
|
Loading…
Reference in New Issue