1
0
Fork 0
mirror of synced 2024-07-16 19:56:10 +12:00
budibase/packages/builder/src/components/automation/SetupPanel/RowSelector.svelte

67 lines
1.9 KiB
Svelte
Raw Normal View History

2020-06-02 09:55:44 +12:00
<script>
2021-04-01 22:29:47 +13:00
import { tables } from "stores/backend"
import { Select } from "@budibase/bbui"
2021-02-24 04:43:03 +13:00
import DrawerBindableInput from "../../common/DrawerBindableInput.svelte"
2021-03-11 06:56:16 +13:00
import AutomationBindingPanel from "./AutomationBindingPanel.svelte"
2020-06-02 09:55:44 +12:00
export let value
export let bindings
2021-03-23 23:54:03 +13:00
$: table = $tables.list.find(table => table._id === value?.tableId)
$: schemaFields = Object.entries(table?.schema ?? {})
// Ensure any nullish tableId values get set to empty string so
2020-09-18 00:44:18 +12:00
// that the select works
$: if (value?.tableId == null) value = { tableId: "" }
2020-09-22 03:45:55 +12:00
function schemaHasOptions(schema) {
return !!schema.constraints?.inclusion?.length
}
2020-06-02 09:55:44 +12:00
</script>
<div class="block-field">
<Select bind:value={value.tableId} extraThin secondary>
<option value="">Choose an option</option>
2021-03-23 23:54:03 +13:00
{#each $tables.list as table}
<option value={table._id}>{table.name}</option>
{/each}
</Select>
2020-06-02 09:55:44 +12:00
</div>
{#if schemaFields.length}
<div class="schema-fields">
{#each schemaFields as [field, schema]}
{#if !schema.autocolumn}
{#if schemaHasOptions(schema)}
<Select label={field} extraThin secondary bind:value={value[field]}>
<option value="">Choose an option</option>
{#each schema.constraints.inclusion as option}
<option value={option}>{option}</option>
{/each}
</Select>
{:else if schema.type === 'string' || schema.type === 'number'}
2021-02-24 04:43:03 +13:00
<DrawerBindableInput
panel={AutomationBindingPanel}
extraThin
2021-02-24 04:43:03 +13:00
value={value[field]}
2021-03-11 06:56:16 +13:00
on:change={e => (value[field] = e.detail)}
label={field}
type="string"
{bindings} />
{/if}
{/if}
2020-06-02 09:55:44 +12:00
{/each}
</div>
{/if}
<style>
.schema-fields {
display: grid;
grid-gap: var(--spacing-xl);
margin-top: var(--spacing-xl);
}
.schema-fields :global(label) {
text-transform: capitalize;
}
</style>