1
0
Fork 0
mirror of synced 2024-09-21 11:53:49 +12:00
budibase/packages/builder/src/components/integration/QueryFieldsBuilder.svelte

69 lines
1.7 KiB
Svelte
Raw Normal View History

2021-01-14 03:11:53 +13:00
<script>
2021-04-29 01:36:45 +12:00
import { Label, Layout, Input } from "@budibase/bbui"
import Editor from "./QueryEditor.svelte"
2021-02-16 07:41:56 +13:00
import KeyValueBuilder from "./KeyValueBuilder.svelte"
2021-01-14 03:11:53 +13:00
export let fields = {}
export let schema
2021-01-15 03:22:24 +13:00
export let editable
2021-01-14 03:11:53 +13:00
2021-01-15 09:51:03 +13:00
$: schemaKeys = Object.keys(schema.fields)
function updateCustomFields({ detail }) {
fields.customData = detail.value
2021-01-15 09:51:03 +13:00
}
2021-01-14 03:11:53 +13:00
</script>
<form on:submit|preventDefault>
2021-04-29 01:36:45 +12:00
<Layout noPadding gap="S">
2021-01-28 06:29:30 +13:00
{#each schemaKeys as field}
2021-04-29 01:36:45 +12:00
{#if schema.fields[field]?.type === "object"}
2021-02-16 07:59:21 +13:00
<div>
2021-02-19 07:55:08 +13:00
<Label small>{field}</Label>
2021-02-20 01:07:37 +13:00
<KeyValueBuilder readOnly={!editable} bind:object={fields[field]} />
2021-02-16 07:59:21 +13:00
</div>
2021-04-29 01:36:45 +12:00
{:else if schema.fields[field]?.type === "json"}
2021-02-16 07:59:21 +13:00
<div>
<Label extraSmall grey>{field}</Label>
<Editor
mode="json"
on:change={({ detail }) => (fields[field] = detail.value)}
2021-02-16 07:59:21 +13:00
readOnly={!editable}
2021-04-29 01:36:45 +12:00
value={fields[field]}
/>
2021-02-16 07:59:21 +13:00
</div>
2021-02-16 06:05:53 +13:00
{:else}
<div class="horizontal">
<Label small>{field}</Label>
<Input
2021-02-19 07:55:08 +13:00
placeholder="Enter {field}"
outline
disabled={!editable}
type={schema.fields[field]?.type}
required={schema.fields[field]?.required}
2021-04-29 01:36:45 +12:00
bind:value={fields[field]}
/>
</div>
2021-02-16 06:05:53 +13:00
{/if}
2021-01-28 06:29:30 +13:00
{/each}
2021-04-29 01:36:45 +12:00
</Layout>
2021-01-14 03:11:53 +13:00
</form>
{#if schema.customisable}
<Editor
label="Query"
mode="json"
on:change={updateCustomFields}
readOnly={!editable}
2021-04-29 01:36:45 +12:00
value={fields.customData}
/>
2021-01-15 09:51:03 +13:00
{/if}
2021-01-14 03:11:53 +13:00
<style>
.horizontal {
display: grid;
grid-template-columns: 20% 1fr;
grid-gap: var(--spacing-l);
align-items: center;
}
2021-01-16 02:42:55 +13:00
</style>