merge fixes
This commit is contained in:
commit
27ce375f17
|
@ -30,7 +30,7 @@
|
||||||
export let showAllQueries
|
export let showAllQueries
|
||||||
|
|
||||||
$: text = value?.label ?? "Choose an option"
|
$: text = value?.label ?? "Choose an option"
|
||||||
$: tables = $tablesStore.list.map((m) => ({
|
$: tables = $tablesStore.list.map(m => ({
|
||||||
label: m.name,
|
label: m.name,
|
||||||
tableId: m._id,
|
tableId: m._id,
|
||||||
type: "table",
|
type: "table",
|
||||||
|
@ -46,9 +46,9 @@
|
||||||
}, [])
|
}, [])
|
||||||
$: queries = $queriesStore.list
|
$: queries = $queriesStore.list
|
||||||
.filter(
|
.filter(
|
||||||
(query) => showAllQueries || query.queryVerb === "read" || query.readable
|
query => showAllQueries || query.queryVerb === "read" || query.readable
|
||||||
)
|
)
|
||||||
.map((query) => ({
|
.map(query => ({
|
||||||
label: query.name,
|
label: query.name,
|
||||||
name: query.name,
|
name: query.name,
|
||||||
tableId: query._id,
|
tableId: query._id,
|
||||||
|
@ -61,15 +61,15 @@
|
||||||
$currentAsset,
|
$currentAsset,
|
||||||
$store.selectedComponentId
|
$store.selectedComponentId
|
||||||
)
|
)
|
||||||
$: queryBindableProperties = bindableProperties.map((property) => ({
|
$: queryBindableProperties = bindableProperties.map(property => ({
|
||||||
...property,
|
...property,
|
||||||
category: property.type === "instance" ? "Component" : "Table",
|
category: property.type === "instance" ? "Component" : "Table",
|
||||||
label: property.readableBinding,
|
label: property.readableBinding,
|
||||||
path: property.readableBinding,
|
path: property.readableBinding,
|
||||||
}))
|
}))
|
||||||
$: links = bindableProperties
|
$: links = bindableProperties
|
||||||
.filter((x) => x.fieldSchema?.type === "link")
|
.filter(x => x.fieldSchema?.type === "link")
|
||||||
.map((property) => {
|
.map(property => {
|
||||||
return {
|
return {
|
||||||
providerId: property.providerId,
|
providerId: property.providerId,
|
||||||
label: property.readableBinding,
|
label: property.readableBinding,
|
||||||
|
@ -89,7 +89,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function fetchQueryDefinition(query) {
|
function fetchQueryDefinition(query) {
|
||||||
const source = $datasources.list.find((ds) => ds._id === query.datasourceId)
|
const source = $datasources.list.find(ds => ds._id === query.datasourceId)
|
||||||
.source
|
.source
|
||||||
return $integrations[source].query[query.queryVerb]
|
return $integrations[source].query[query.queryVerb]
|
||||||
}
|
}
|
||||||
|
@ -100,20 +100,18 @@
|
||||||
readonly
|
readonly
|
||||||
value={text}
|
value={text}
|
||||||
options={[text]}
|
options={[text]}
|
||||||
on:click={dropdownRight.show}
|
on:click={dropdownRight.show} />
|
||||||
/>
|
{#if value?.type === 'query'}
|
||||||
{#if value?.type === "query"}
|
|
||||||
<i class="ri-settings-5-line" on:click={drawer.show} />
|
<i class="ri-settings-5-line" on:click={drawer.show} />
|
||||||
<Drawer title={"Query Parameters"} bind:this={drawer}>
|
<Drawer title={'Query Parameters'} bind:this={drawer}>
|
||||||
<Button
|
<Button
|
||||||
slot="buttons"
|
slot="buttons"
|
||||||
cta
|
cta
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
notifications.success("Query parameters saved.")
|
notifications.success('Query parameters saved.')
|
||||||
handleSelected(value)
|
handleSelected(value)
|
||||||
drawer.hide()
|
drawer.hide()
|
||||||
}}
|
}}>
|
||||||
>
|
|
||||||
Save
|
Save
|
||||||
</Button>
|
</Button>
|
||||||
<DrawerContent slot="body">
|
<DrawerContent slot="body">
|
||||||
|
@ -121,20 +119,15 @@
|
||||||
{#if value.parameters.length > 0}
|
{#if value.parameters.length > 0}
|
||||||
<ParameterBuilder
|
<ParameterBuilder
|
||||||
bind:customParams={value.queryParams}
|
bind:customParams={value.queryParams}
|
||||||
parameters={queries.find((query) => query._id === value._id)
|
parameters={queries.find(query => query._id === value._id).parameters}
|
||||||
.parameters}
|
bindings={queryBindableProperties} />
|
||||||
bindings={queryBindableProperties}
|
|
||||||
/>
|
|
||||||
{/if}
|
{/if}
|
||||||
<IntegrationQueryEditor
|
<IntegrationQueryEditor
|
||||||
height={200}
|
height={200}
|
||||||
query={value}
|
query={value}
|
||||||
schema={fetchQueryDefinition(value)}
|
schema={fetchQueryDefinition(value)}
|
||||||
datasource={$datasources.list.find(
|
datasource={$datasources.list.find(ds => ds._id === value.datasourceId)}
|
||||||
(ds) => ds._id === value.datasourceId
|
editable={false} />
|
||||||
)}
|
|
||||||
editable={false}
|
|
||||||
/>
|
|
||||||
</Layout>
|
</Layout>
|
||||||
</DrawerContent>
|
</DrawerContent>
|
||||||
</Drawer>
|
</Drawer>
|
||||||
|
@ -147,12 +140,7 @@
|
||||||
</div>
|
</div>
|
||||||
<ul>
|
<ul>
|
||||||
{#each tables as table}
|
{#each tables as table}
|
||||||
<li
|
<li on:click={() => handleSelected(table)}>{table.label}</li>
|
||||||
class:selected={value === table}
|
|
||||||
on:click={() => handleSelected(table)}
|
|
||||||
>
|
|
||||||
{table.label}
|
|
||||||
</li>
|
|
||||||
{/each}
|
{/each}
|
||||||
</ul>
|
</ul>
|
||||||
<Divider size="S" />
|
<Divider size="S" />
|
||||||
|
@ -161,12 +149,7 @@
|
||||||
</div>
|
</div>
|
||||||
<ul>
|
<ul>
|
||||||
{#each views as view}
|
{#each views as view}
|
||||||
<li
|
<li on:click={() => handleSelected(view)}>{view.label}</li>
|
||||||
class:selected={value === view}
|
|
||||||
on:click={() => handleSelected(view)}
|
|
||||||
>
|
|
||||||
{view.label}
|
|
||||||
</li>
|
|
||||||
{/each}
|
{/each}
|
||||||
</ul>
|
</ul>
|
||||||
<Divider size="S" />
|
<Divider size="S" />
|
||||||
|
@ -175,12 +158,7 @@
|
||||||
</div>
|
</div>
|
||||||
<ul>
|
<ul>
|
||||||
{#each links as link}
|
{#each links as link}
|
||||||
<li
|
<li on:click={() => handleSelected(link)}>{link.label}</li>
|
||||||
class:selected={value === link}
|
|
||||||
on:click={() => handleSelected(link)}
|
|
||||||
>
|
|
||||||
{link.label}
|
|
||||||
</li>
|
|
||||||
{/each}
|
{/each}
|
||||||
</ul>
|
</ul>
|
||||||
<Divider size="S" />
|
<Divider size="S" />
|
||||||
|
@ -191,8 +169,7 @@
|
||||||
{#each queries as query}
|
{#each queries as query}
|
||||||
<li
|
<li
|
||||||
class:selected={value === query}
|
class:selected={value === query}
|
||||||
on:click={() => handleSelected(query)}
|
on:click={() => handleSelected(query)}>
|
||||||
>
|
|
||||||
{query.label}
|
{query.label}
|
||||||
</li>
|
</li>
|
||||||
{/each}
|
{/each}
|
||||||
|
@ -205,12 +182,7 @@
|
||||||
</div>
|
</div>
|
||||||
<ul>
|
<ul>
|
||||||
{#each otherSources as source}
|
{#each otherSources as source}
|
||||||
<li
|
<li on:click={() => handleSelected(source)}>{source.label}</li>
|
||||||
class:selected={value === source}
|
|
||||||
on:click={() => handleSelected(source)}
|
|
||||||
>
|
|
||||||
{source.label}
|
|
||||||
</li>
|
|
||||||
{/each}
|
{/each}
|
||||||
</ul>
|
</ul>
|
||||||
{/if}
|
{/if}
|
||||||
|
@ -246,15 +218,15 @@
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
padding: var(--spacing-s) var(--spacing-m);
|
padding: var(--spacing-s) var(--spacing-m);
|
||||||
font-size: var(--font-size-xs);
|
font-size: var(--font-size-m);
|
||||||
}
|
}
|
||||||
|
|
||||||
.selected {
|
.selected {
|
||||||
background-color: var(--grey-4);
|
color: var(--spectrum-global-color-blue-600);
|
||||||
}
|
}
|
||||||
|
|
||||||
li:hover {
|
li:hover {
|
||||||
background-color: var(--grey-4);
|
background-color: var(--spectrum-global-color-gray-200);
|
||||||
}
|
}
|
||||||
|
|
||||||
.drawer-contents {
|
.drawer-contents {
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
<script>
|
<script>
|
||||||
import { flip } from "svelte/animate"
|
import { flip } from "svelte/animate"
|
||||||
import { dndzone } from "svelte-dnd-action"
|
import { dndzone } from "svelte-dnd-action"
|
||||||
import { Icon, Button, Popover, Layout, DrawerContent } from "@budibase/bbui"
|
import {
|
||||||
|
Icon,
|
||||||
|
Button,
|
||||||
|
Layout,
|
||||||
|
DrawerContent,
|
||||||
|
ActionMenu,
|
||||||
|
MenuItem,
|
||||||
|
} from "@budibase/bbui"
|
||||||
import actionTypes from "./actions"
|
import actionTypes from "./actions"
|
||||||
import { generate } from "shortid"
|
import { generate } from "shortid"
|
||||||
|
|
||||||
|
@ -22,8 +29,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let addActionButton
|
|
||||||
let addActionDropdown
|
|
||||||
let selectedAction = actions?.length ? actions[0] : null
|
let selectedAction = actions?.length ? actions[0] : null
|
||||||
|
|
||||||
$: selectedActionComponent =
|
$: selectedActionComponent =
|
||||||
|
@ -53,7 +58,6 @@
|
||||||
}
|
}
|
||||||
actions = [...actions, newAction]
|
actions = [...actions, newAction]
|
||||||
selectedAction = newAction
|
selectedAction = newAction
|
||||||
addActionDropdown.hide()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const selectAction = (action) => () => {
|
const selectAction = (action) => () => {
|
||||||
|
@ -71,24 +75,14 @@
|
||||||
<DrawerContent>
|
<DrawerContent>
|
||||||
<div class="actions-list" slot="sidebar">
|
<div class="actions-list" slot="sidebar">
|
||||||
<Layout>
|
<Layout>
|
||||||
<div bind:this={addActionButton}>
|
<ActionMenu>
|
||||||
<Button wide secondary on:click={addActionDropdown.show}>
|
<Button slot="control" secondary>Add Action</Button>
|
||||||
Add Action
|
|
||||||
</Button>
|
|
||||||
</div>
|
|
||||||
<Popover
|
|
||||||
bind:this={addActionDropdown}
|
|
||||||
anchor={addActionButton}
|
|
||||||
align="right"
|
|
||||||
>
|
|
||||||
<div class="available-actions-container">
|
|
||||||
{#each actionTypes as actionType}
|
{#each actionTypes as actionType}
|
||||||
<div class="available-action" on:click={addAction(actionType)}>
|
<MenuItem on:click={addAction(actionType)}>
|
||||||
<span>{actionType.name}</span>
|
{actionType.name}
|
||||||
</div>
|
</MenuItem>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</ActionMenu>
|
||||||
</Popover>
|
|
||||||
|
|
||||||
{#if actions && actions.length > 0}
|
{#if actions && actions.length > 0}
|
||||||
<div
|
<div
|
||||||
|
@ -148,7 +142,7 @@
|
||||||
|
|
||||||
.action-header {
|
.action-header {
|
||||||
margin-bottom: var(--spacing-m);
|
margin-bottom: var(--spacing-m);
|
||||||
font-size: var(--font-size-xs);
|
font-size: var(--font-size-s);
|
||||||
color: var(--grey-7);
|
color: var(--grey-7);
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
@ -161,7 +155,7 @@
|
||||||
|
|
||||||
.available-action {
|
.available-action {
|
||||||
padding: var(--spacing-s);
|
padding: var(--spacing-s);
|
||||||
font-size: var(--font-size-xs);
|
font-size: var(--font-size-s);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Button primary on:click={drawer.show}>Define Actions</Button>
|
<Button secondary on:click={drawer.show}>Define Actions</Button>
|
||||||
<Drawer bind:this={drawer} title={'Actions'}>
|
<Drawer bind:this={drawer} title={'Actions'}>
|
||||||
<svelte:fragment slot="description">
|
<svelte:fragment slot="description">
|
||||||
Define what actions to run.
|
Define what actions to run.
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Button secondary wide on:click={drawer.show}>Define Filters</Button>
|
<Button secondary on:click={drawer.show}>Define Filters</Button>
|
||||||
<Drawer bind:this={drawer} title="Filtering">
|
<Drawer bind:this={drawer} title="Filtering">
|
||||||
<Button cta slot="buttons" on:click={saveFilter}>Save</Button>
|
<Button cta slot="buttons" on:click={saveFilter}>Save</Button>
|
||||||
<DrawerContent slot="body">
|
<DrawerContent slot="body">
|
||||||
|
|
|
@ -80,11 +80,11 @@
|
||||||
"field/link": RelationshipFieldSelect,
|
"field/link": RelationshipFieldSelect,
|
||||||
}
|
}
|
||||||
|
|
||||||
const getControl = type => {
|
const getControl = (type) => {
|
||||||
return controlMap[type]
|
return controlMap[type]
|
||||||
}
|
}
|
||||||
|
|
||||||
const canRenderControl = setting => {
|
const canRenderControl = (setting) => {
|
||||||
const control = getControl(setting?.type)
|
const control = getControl(setting?.type)
|
||||||
if (!control) {
|
if (!control) {
|
||||||
return false
|
return false
|
||||||
|
@ -95,7 +95,7 @@
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
const onInstanceNameChange = name => {
|
const onInstanceNameChange = (name) => {
|
||||||
onChange("_instanceName", name)
|
onChange("_instanceName", name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,13 +103,13 @@
|
||||||
const form = findClosestMatchingComponent(
|
const form = findClosestMatchingComponent(
|
||||||
$currentAsset.props,
|
$currentAsset.props,
|
||||||
componentInstance._id,
|
componentInstance._id,
|
||||||
component => component._component.endsWith("/form")
|
(component) => component._component.endsWith("/form")
|
||||||
)
|
)
|
||||||
const dataSource = form?.dataSource
|
const dataSource = form?.dataSource
|
||||||
const fields = makeDatasourceFormComponents(dataSource)
|
const fields = makeDatasourceFormComponents(dataSource)
|
||||||
onChange(
|
onChange(
|
||||||
"_children",
|
"_children",
|
||||||
fields.map(field => field.json())
|
fields.map((field) => field.json())
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -123,7 +123,8 @@
|
||||||
label={def.label}
|
label={def.label}
|
||||||
key={def.key}
|
key={def.key}
|
||||||
value={get(assetInstance, def.key)}
|
value={get(assetInstance, def.key)}
|
||||||
onChange={val => onScreenPropChange(def.key, val)} />
|
onChange={(val) => onScreenPropChange(def.key, val)}
|
||||||
|
/>
|
||||||
{/each}
|
{/each}
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
@ -134,7 +135,8 @@
|
||||||
label="Name"
|
label="Name"
|
||||||
key="_instanceName"
|
key="_instanceName"
|
||||||
value={componentInstance._instanceName}
|
value={componentInstance._instanceName}
|
||||||
onChange={onInstanceNameChange} />
|
onChange={onInstanceNameChange}
|
||||||
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if settings && settings.length > 0}
|
{#if settings && settings.length > 0}
|
||||||
|
@ -145,10 +147,12 @@
|
||||||
control={getControl(setting.type)}
|
control={getControl(setting.type)}
|
||||||
label={setting.label}
|
label={setting.label}
|
||||||
key={setting.key}
|
key={setting.key}
|
||||||
value={componentInstance[setting.key] ?? componentInstance[setting.key]?.defaultValue}
|
value={componentInstance[setting.key] ??
|
||||||
|
componentInstance[setting.key]?.defaultValue}
|
||||||
{componentInstance}
|
{componentInstance}
|
||||||
onChange={val => onChange(setting.key, val)}
|
onChange={(val) => onChange(setting.key, val)}
|
||||||
props={{ options: setting.options, placeholder: setting.placeholder }} />
|
props={{ options: setting.options, placeholder: setting.placeholder }}
|
||||||
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
{/each}
|
{/each}
|
||||||
{:else}
|
{:else}
|
||||||
|
@ -157,10 +161,12 @@
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if componentDefinition?.component?.endsWith('/fieldgroup')}
|
{#if componentDefinition?.component?.endsWith("/fieldgroup")}
|
||||||
|
<div class="buttonWrapper">
|
||||||
<Button secondary wide on:click={() => confirmResetFieldsDialog?.show()}>
|
<Button secondary wide on:click={() => confirmResetFieldsDialog?.show()}>
|
||||||
Update Form Fields
|
Update Form Fields
|
||||||
</Button>
|
</Button>
|
||||||
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
<ConfirmDialog
|
<ConfirmDialog
|
||||||
|
@ -168,7 +174,8 @@
|
||||||
body={`All components inside this group will be deleted and replaced with fields to match the schema. Are you sure you want to update this Field Group?`}
|
body={`All components inside this group will be deleted and replaced with fields to match the schema. Are you sure you want to update this Field Group?`}
|
||||||
okText="Update"
|
okText="Update"
|
||||||
onOk={resetFormFields}
|
onOk={resetFormFields}
|
||||||
title="Confirm Form Field Update" />
|
title="Confirm Form Field Update"
|
||||||
|
/>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.settings-view-container {
|
.settings-view-container {
|
||||||
|
@ -183,4 +190,9 @@
|
||||||
margin-top: var(--spacing-m);
|
margin-top: var(--spacing-m);
|
||||||
color: var(--grey-6);
|
color: var(--grey-6);
|
||||||
}
|
}
|
||||||
|
.buttonWrapper {
|
||||||
|
margin-top: 10px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -24,7 +24,10 @@ const addBuilderPreviewStyles = (node, styleString, componentId) => {
|
||||||
if (componentId === get(builderStore).selectedComponentId) {
|
if (componentId === get(builderStore).selectedComponentId) {
|
||||||
const style = window.getComputedStyle(node)
|
const style = window.getComputedStyle(node)
|
||||||
const property = style?.display === "table-row" ? "outline" : "border"
|
const property = style?.display === "table-row" ? "outline" : "border"
|
||||||
return styleString + `;${property}: 2px solid #4285f4 !important;`
|
return (
|
||||||
|
styleString +
|
||||||
|
`;${property}: 2px solid #4285f4 !important; border-radius: 4px !important;`
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
return styleString
|
return styleString
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,6 +103,8 @@
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<div use:styleable={$component.styles}>
|
||||||
<Provider {actions} data={dataContext}>
|
<Provider {actions} data={dataContext}>
|
||||||
<slot />
|
<slot />
|
||||||
</Provider>
|
</Provider>
|
||||||
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue