mirror of https://github.com/Budibase/budibase.git
8 changed files with 265 additions and 16 deletions
@ -0,0 +1,78 @@ |
|||
<script> |
|||
import { Select, Label, Combobox } from "@budibase/bbui" |
|||
import { onMount } from "svelte" |
|||
import DrawerBindableInput from "components/common/bindings/DrawerBindableInput.svelte" |
|||
import { currentAsset, store } from "builderStore" |
|||
import { |
|||
getActionProviderComponents, |
|||
buildFormSchema, |
|||
} from "builderStore/dataBinding" |
|||
import { findComponent } from "builderStore/componentUtils" |
|||
|
|||
export let parameters |
|||
export let bindings = [] |
|||
|
|||
const typeOptions = [ |
|||
{ |
|||
label: "Set value", |
|||
value: "set", |
|||
}, |
|||
{ |
|||
label: "Reset to default value", |
|||
value: "reset", |
|||
}, |
|||
] |
|||
|
|||
$: formComponent = findComponent($currentAsset.props, parameters.componentId) |
|||
$: formSchema = buildFormSchema(formComponent) |
|||
$: fieldOptions = Object.keys(formSchema || {}) |
|||
$: actionProviders = getActionProviderComponents( |
|||
$currentAsset, |
|||
$store.selectedComponentId, |
|||
"ValidateForm" |
|||
) |
|||
|
|||
onMount(() => { |
|||
if (!parameters.type) { |
|||
parameters.type = "set" |
|||
} |
|||
}) |
|||
</script> |
|||
|
|||
<div class="root"> |
|||
<Label small>Form</Label> |
|||
<Select |
|||
bind:value={parameters.componentId} |
|||
options={actionProviders} |
|||
getOptionLabel={x => x._instanceName} |
|||
getOptionValue={x => x._id} |
|||
/> |
|||
<Label small>Type</Label> |
|||
<Select |
|||
placeholder={null} |
|||
bind:value={parameters.type} |
|||
options={typeOptions} |
|||
/> |
|||
<Label small>Field</Label> |
|||
<Combobox bind:value={parameters.field} options={fieldOptions} /> |
|||
{#if parameters.type === "set"} |
|||
<Label small>Value</Label> |
|||
<DrawerBindableInput |
|||
{bindings} |
|||
value={parameters.value} |
|||
on:change={e => (parameters.value = e.detail)} |
|||
/> |
|||
{/if} |
|||
</div> |
|||
|
|||
<style> |
|||
.root { |
|||
display: grid; |
|||
column-gap: var(--spacing-l); |
|||
row-gap: var(--spacing-s); |
|||
grid-template-columns: 60px 1fr; |
|||
align-items: center; |
|||
max-width: 400px; |
|||
margin: 0 auto; |
|||
} |
|||
</style> |
|||
Loading…
Reference in new issue