actions fix

This commit is contained in:
Martin McKeaveney 2021-01-27 17:29:30 +00:00
parent ed5d0f4e53
commit 1939c1e000
10 changed files with 113 additions and 100 deletions

View File

@ -20,12 +20,9 @@
</script> </script>
<div on:click|stopPropagation bind:this={anchor}> <div on:click|stopPropagation bind:this={anchor}>
<TextButton <TextButton text on:click={dropdown.show} active={false}>
text <Icon name="add" />
on:click={dropdown.show} Add Parameters
active={false}>
<Icon name="add" />
Add Parameters
</TextButton> </TextButton>
<DropdownMenu align="right" {anchor} bind:this={dropdown}> <DropdownMenu align="right" {anchor} bind:this={dropdown}>
<div class="wrapper"> <div class="wrapper">
@ -39,4 +36,4 @@
padding: var(--spacing-xl); padding: var(--spacing-xl);
min-width: 600px; min-width: 600px;
} }
</style> </style>

View File

@ -1,6 +1,6 @@
<script> <script>
import { notificationStore } from "builderStore/store/notifications" import { notificationStore } from "builderStore/store/notifications"
import { flip } from 'svelte/animate'; import { flip } from "svelte/animate"
import { fly } from "svelte/transition" import { fly } from "svelte/transition"
export let themes = { export let themes = {

View File

@ -33,6 +33,9 @@
parameters: {}, parameters: {},
[EVENT_TYPE_KEY]: actionType.name, [EVENT_TYPE_KEY]: actionType.name,
} }
if (!actions) {
actions = []
}
actions.push(newAction) actions.push(newAction)
selectedAction = newAction selectedAction = newAction
actions = actions actions = actions
@ -73,7 +76,8 @@
<div class="action-container"> <div class="action-container">
<div class="action-header" on:click={selectAction(action)}> <div class="action-header" on:click={selectAction(action)}>
<span class:selected={action === selectedAction}> <span class:selected={action === selectedAction}>
{index + 1}. {action[EVENT_TYPE_KEY]} {index + 1}.
{action[EVENT_TYPE_KEY]}
</span> </span>
</div> </div>
<i <i

View File

@ -34,15 +34,17 @@
})) }))
return [...acc, ...viewsArr] return [...acc, ...viewsArr]
}, []) }, [])
$: queries = $backendUiStore.queries.filter(query => query.queryVerb === "read").map(query => ({ $: queries = $backendUiStore.queries
label: query.name, .filter(query => query.queryVerb === "read")
name: query.name, .map(query => ({
tableId: query._id, label: query.name,
...query, name: query.name,
schema: query.schema, tableId: query._id,
parameters: query.parameters, ...query,
type: "query", schema: query.schema,
})) parameters: query.parameters,
type: "query",
}))
$: bindableProperties = getBindableProperties( $: bindableProperties = getBindableProperties(
$currentAsset.props, $currentAsset.props,
$store.selectedComponentId $store.selectedComponentId

View File

@ -24,8 +24,8 @@
</script> </script>
<form on:submit|preventDefault> <form on:submit|preventDefault>
<div class="field"> <div class="field">
{#each schemaKeys as field} {#each schemaKeys as field}
<Input <Input
placeholder="Enter {field} name" placeholder="Enter {field} name"
outline outline
@ -33,8 +33,8 @@
type={schema.fields[field]?.type} type={schema.fields[field]?.type}
required={schema.fields[field]?.required} required={schema.fields[field]?.required}
bind:value={fields[field]} /> bind:value={fields[field]} />
{/each} {/each}
</div> </div>
</form> </form>
{#if schema.customisable} {#if schema.customisable}
<Editor <Editor

View File

@ -135,17 +135,22 @@
<Input placeholder="✎ Edit Query Name" bind:value={query.name} /> <Input placeholder="✎ Edit Query Name" bind:value={query.name} />
</div> </div>
{#if config} {#if config}
<div class="props"> <div class="props">
<div class="query-type">Query type: <span class="query-type-span">{config[query.queryVerb].type}</span></div> <div class="query-type">
<div class="select"> Query type:
<Select primary thin bind:value={query.queryVerb}> <span class="query-type-span">{config[query.queryVerb].type}</span>
{#each Object.keys(config) as queryVerb} </div>
<option value={queryVerb}>{queryVerb}</option> <div class="select">
{/each} <Select primary thin bind:value={query.queryVerb}>
</Select> {#each Object.keys(config) as queryVerb}
</div> <option value={queryVerb}>{queryVerb}</option>
{/each}
</Select>
</div>
</div> </div>
<EditQueryParamsPopover bind:parameters={query.parameters} bindable={false} /> <EditQueryParamsPopover
bind:parameters={query.parameters}
bindable={false} />
{/if} {/if}
</header> </header>
<Spacer extraLarge /> <Spacer extraLarge />
@ -182,7 +187,11 @@
{#each fields as field, idx} {#each fields as field, idx}
<Spacer small /> <Spacer small />
<div class="field"> <div class="field">
<Input outline placeholder="Field Name" type={'text'} bind:value={field.name} /> <Input
outline
placeholder="Field Name"
type={'text'}
bind:value={field.name} />
<Select thin border bind:value={field.type}> <Select thin border bind:value={field.type}>
<option value={''}>Select a field type</option> <option value={''}>Select a field type</option>
<option value={'STRING'}>Text</option> <option value={'STRING'}>Text</option>
@ -195,8 +204,8 @@
on:click={() => deleteField(idx)} /> on:click={() => deleteField(idx)} />
</div> </div>
{/each} {/each}
<Spacer small /> <Spacer small />
<Button thin secondary on:click={newField}>Add Field</Button> <Button thin secondary on:click={newField}>Add Field</Button>
{/if} {/if}
</Switcher> </Switcher>
{/if} {/if}
@ -206,7 +215,6 @@
{/if} {/if}
<style> <style>
.input { .input {
width: 300px; width: 300px;
} }

View File

@ -20,7 +20,6 @@
} }
</script> </script>
{#if schema} {#if schema}
{#key query._id} {#key query._id}
{#if schema.type === QueryTypes.SQL} {#if schema.type === QueryTypes.SQL}

View File

@ -58,7 +58,6 @@
</div> </div>
</div> </div>
</section> </section>
{/if} {/if}
<style> <style>

View File

@ -2,9 +2,14 @@
import { writable } from "svelte/store" import { writable } from "svelte/store"
import { setContext, onMount } from "svelte" import { setContext, onMount } from "svelte"
import Component from "./Component.svelte" import Component from "./Component.svelte"
import NotificationDisplay from './NotificationDisplay.svelte' import NotificationDisplay from "./NotificationDisplay.svelte"
import SDK from "../sdk" import SDK from "../sdk"
import { createDataStore, initialise, screenStore, notificationStore } from "../store" import {
createDataStore,
initialise,
screenStore,
notificationStore,
} from "../store"
// Provide contexts // Provide contexts
setContext("sdk", SDK) setContext("sdk", SDK)
@ -24,4 +29,4 @@
{#if loaded && $screenStore.activeLayout} {#if loaded && $screenStore.activeLayout}
<Component definition={$screenStore.activeLayout.props} /> <Component definition={$screenStore.activeLayout.props} />
{/if} {/if}
<NotificationDisplay /> <NotificationDisplay />

View File

@ -1,60 +1,59 @@
<script> <script>
import { flip } from 'svelte/animate'; import { flip } from "svelte/animate"
import { fly } from "svelte/transition" import { fly } from "svelte/transition"
import { getContext } from "svelte" import { getContext } from "svelte"
const { notifications } = getContext("sdk") const { notifications } = getContext("sdk")
export let themes = { export let themes = {
danger: "#E26D69", danger: "#E26D69",
success: "#84C991", success: "#84C991",
warning: "#f0ad4e", warning: "#f0ad4e",
info: "#5bc0de", info: "#5bc0de",
default: "#aaaaaa", default: "#aaaaaa",
} }
</script> </script>
<div class="notifications"> <div class="notifications">
{#each $notifications as notification (notification.id)} {#each $notifications as notification (notification.id)}
<div <div
animate:flip animate:flip
class="toast" class="toast"
style="background: {themes[notification.type]};" style="background: {themes[notification.type]};"
transition:fly={{ y: -30 }}> transition:fly={{ y: -30 }}>
<div class="content">{notification.message}</div> <div class="content">{notification.message}</div>
{#if notification.icon}<i class={notification.icon} />{/if} {#if notification.icon}<i class={notification.icon} />{/if}
</div> </div>
{/each} {/each}
</div> </div>
<style> <style>
.notifications { .notifications {
position: fixed; position: fixed;
top: 10px; top: 10px;
left: 0; left: 0;
right: 0; right: 0;
margin: 0 auto; margin: 0 auto;
padding: 0; padding: 0;
z-index: 9999; z-index: 9999;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
pointer-events: none; pointer-events: none;
} }
.toast { .toast {
flex: 0 0 auto; flex: 0 0 auto;
margin-bottom: 10px; margin-bottom: 10px;
border-radius: var(--border-radius-s); border-radius: var(--border-radius-s);
/* The toasts now support being auto sized, so this static width could be removed */ /* The toasts now support being auto sized, so this static width could be removed */
width: 40vw; width: 40vw;
} }
.content { .content {
padding: 10px; padding: 10px;
display: block; display: block;
color: white; color: white;
font-weight: 500; font-weight: 500;
} }
</style> </style>