|
|
@ -1,15 +1,23 @@ |
|
|
<script> |
|
|
<script> |
|
|
import { onMount } from "svelte" |
|
|
import { onMount } from "svelte" |
|
|
import { backendUiStore, workflowStore } from "builderStore" |
|
|
import { backendUiStore, workflowStore } from "builderStore" |
|
|
import { WorkflowList } from "../" |
|
|
import WorkflowList from "../WorkflowList/WorkflowList.svelte" |
|
|
import WorkflowBlock from "./WorkflowBlock.svelte" |
|
|
import WorkflowBlock from "./WorkflowBlock.svelte" |
|
|
import blockDefinitions from "../blockDefinitions" |
|
|
import blockDefinitions from "../blockDefinitions" |
|
|
|
|
|
import FlatButtonGroup from "components/userInterface/FlatButtonGroup.svelte" |
|
|
|
|
|
|
|
|
let selectedTab = "TRIGGER" |
|
|
let selectedTab = "TRIGGER" |
|
|
let definitions = [] |
|
|
let definitions = [] |
|
|
|
|
|
|
|
|
$: definitions = Object.entries(blockDefinitions[selectedTab]) |
|
|
$: buttonProps = [ |
|
|
|
|
|
...($workflowStore.currentWorkflow.hasTrigger() |
|
|
|
|
|
? [] |
|
|
|
|
|
: [{ value: "TRIGGER", text: "Trigger" }]), |
|
|
|
|
|
{ value: "ACTION", text: "Action" }, |
|
|
|
|
|
{ value: "LOGIC", text: "Logic" }, |
|
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
$: definitions = Object.entries(blockDefinitions[selectedTab]) |
|
|
$: { |
|
|
$: { |
|
|
if ( |
|
|
if ( |
|
|
$workflowStore.currentWorkflow.hasTrigger() && |
|
|
$workflowStore.currentWorkflow.hasTrigger() && |
|
|
@ -18,65 +26,17 @@ |
|
|
selectedTab = "ACTION" |
|
|
selectedTab = "ACTION" |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function onChangeTab(tab) { |
|
|
|
|
|
selectedTab = tab |
|
|
|
|
|
} |
|
|
</script> |
|
|
</script> |
|
|
|
|
|
|
|
|
<section> |
|
|
<section> |
|
|
<div class="subtabs"> |
|
|
<FlatButtonGroup value={selectedTab} {buttonProps} onChange={onChangeTab} /> |
|
|
{#if !$workflowStore.currentWorkflow.hasTrigger()} |
|
|
|
|
|
<span |
|
|
|
|
|
class="hoverable" |
|
|
|
|
|
class:selected={'TRIGGER' === selectedTab} |
|
|
|
|
|
on:click={() => (selectedTab = 'TRIGGER')}> |
|
|
|
|
|
Triggers |
|
|
|
|
|
</span> |
|
|
|
|
|
{/if} |
|
|
|
|
|
<span |
|
|
|
|
|
class="hoverable" |
|
|
|
|
|
class:selected={'ACTION' === selectedTab} |
|
|
|
|
|
on:click={() => (selectedTab = 'ACTION')}> |
|
|
|
|
|
Actions |
|
|
|
|
|
</span> |
|
|
|
|
|
<span |
|
|
|
|
|
class="hoverable" |
|
|
|
|
|
class:selected={'LOGIC' === selectedTab} |
|
|
|
|
|
on:click={() => (selectedTab = 'LOGIC')}> |
|
|
|
|
|
Logic |
|
|
|
|
|
</span> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div id="blocklist"> |
|
|
<div id="blocklist"> |
|
|
{#each definitions as [actionId, blockDefinition]} |
|
|
{#each definitions as [actionId, blockDefinition]} |
|
|
<WorkflowBlock {blockDefinition} {actionId} blockType={selectedTab} /> |
|
|
<WorkflowBlock {blockDefinition} {actionId} blockType={selectedTab} /> |
|
|
{/each} |
|
|
{/each} |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
</section> |
|
|
|
|
|
|
|
|
<style> |
|
|
|
|
|
.subtabs { |
|
|
|
|
|
margin-top: 20px; |
|
|
|
|
|
display: grid; |
|
|
|
|
|
grid-auto-flow: column; |
|
|
|
|
|
grid-auto-columns: 1fr 1fr 1fr; |
|
|
|
|
|
margin-bottom: 12px; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.subtabs span { |
|
|
|
|
|
transition: 0.3s all; |
|
|
|
|
|
text-align: center; |
|
|
|
|
|
color: var(--grey-7); |
|
|
|
|
|
font-weight: 400; |
|
|
|
|
|
padding: 8px 16px; |
|
|
|
|
|
text-rendering: optimizeLegibility; |
|
|
|
|
|
border: none !important; |
|
|
|
|
|
outline: none; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.subtabs span.selected { |
|
|
|
|
|
background: var(--grey-3); |
|
|
|
|
|
color: var(--ink); |
|
|
|
|
|
border-radius: 5px; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.subtabs span:not(.selected) { |
|
|
|
|
|
color: var(--ink); |
|
|
|
|
|
} |
|
|
|
|
|
</style> |
|
|
|
|
|
|