windmill-components 1.56.1 → 1.56.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/app.css +54 -0
- package/components/CenteredModal.svelte +18 -16
- package/components/CenteredModal.svelte.d.ts +1 -0
- package/components/Dropdown.svelte +4 -3
- package/components/Dropdown.svelte.d.ts +1 -0
- package/components/Editor.svelte +30 -30
- package/components/Editor.svelte.d.ts +3 -3
- package/components/FlowPreviewContent.svelte +2 -2
- package/components/InputTransformForm.svelte +45 -36
- package/components/InputTransformForm.svelte.d.ts +1 -0
- package/components/LogViewer.svelte +7 -4
- package/components/ModulePreview.svelte +20 -13
- package/components/Popover.svelte +9 -17
- package/components/Popover.svelte.d.ts +3 -0
- package/components/RadioButton.svelte +5 -3
- package/components/RadioButton.svelte.d.ts +2 -0
- package/components/ResourceEditor.svelte +2 -1
- package/components/SchemaEditor.svelte +3 -0
- package/components/SchemaForm.svelte +84 -76
- package/components/SchemaForm.svelte.d.ts +3 -0
- package/components/ScriptEditor.svelte +14 -9
- package/components/SimpleEditor.svelte +18 -20
- package/components/Star.svelte +15 -9
- package/components/TemplateEditor.svelte +25 -35
- package/components/TemplateEditor.svelte.d.ts +1 -25
- package/components/TestJobLoader.svelte +37 -20
- package/components/TestJobLoader.svelte.d.ts +10 -8
- package/components/Toggle.svelte +30 -7
- package/components/Toggle.svelte.d.ts +4 -0
- package/components/Tooltip.svelte +1 -1
- package/components/apps/components/buttons/AppButton.svelte +23 -8
- package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
- package/components/apps/components/dataDisplay/AppBarChart.svelte +7 -2
- package/components/apps/components/dataDisplay/AppPieChart.svelte +1 -1
- package/components/apps/components/form/AppForm.svelte +7 -0
- package/components/apps/components/helpers/AlignWrapper.svelte +2 -1
- package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +1 -0
- package/components/apps/components/helpers/InputValue.svelte +17 -5
- package/components/apps/components/helpers/InputValue.svelte.d.ts +1 -0
- package/components/apps/components/helpers/NonRunnableComponent.svelte +3 -0
- package/components/apps/components/helpers/RefreshButton.svelte +16 -11
- package/components/apps/components/helpers/RefreshButton.svelte.d.ts +2 -0
- package/components/apps/components/helpers/RunnableComponent.svelte +40 -15
- package/components/apps/components/selectInputs/AppCheckbox.svelte +4 -0
- package/components/apps/components/table/AppTable.svelte +48 -24
- package/components/apps/components/textInputs/AppTextInput.svelte +7 -3
- package/components/apps/editor/AppEditor.svelte +83 -41
- package/components/apps/editor/AppEditor.svelte.d.ts +2 -0
- package/components/apps/editor/AppEditorHeader.svelte +5 -2
- package/components/apps/editor/AppPreview.svelte +3 -1
- package/components/apps/editor/AppPreview.svelte.d.ts +2 -0
- package/components/apps/editor/ComponentEditor.svelte +6 -7
- package/components/apps/editor/ComponentEditor.svelte.d.ts +1 -0
- package/components/apps/editor/ComponentHeader.svelte +31 -29
- package/components/apps/editor/ComponentHeader.svelte.d.ts +2 -1
- package/components/apps/editor/GridEditor.svelte +62 -46
- package/components/apps/editor/GridEditor.svelte.d.ts +6 -1
- package/components/apps/editor/RecomputeAllComponents.svelte +7 -13
- package/components/apps/editor/SettingsPanel.svelte +2 -2
- package/components/apps/editor/TablePanel.svelte +1 -0
- package/components/apps/editor/componentsPanel/ComponentList.svelte +4 -15
- package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +1 -1
- package/components/apps/editor/componentsPanel/componentStaticValues.js +1 -1
- package/components/apps/editor/componentsPanel/data.js +11 -15
- package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -0
- package/components/apps/editor/contextPanel/ContextPanel.svelte +46 -43
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +9 -10
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +5 -1
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +2 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +62 -20
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +2 -2
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +73 -76
- package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +17 -15
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +1 -2
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +0 -1
- package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +5 -5
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte +11 -18
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +1 -0
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +22 -5
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +3 -3
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +16 -15
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +3 -2
- package/components/apps/editor/settingsPanel/Recompute.svelte +1 -1
- package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +21 -3
- package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +1 -3
- package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +0 -1
- package/components/apps/editor/settingsPanel/TableActions.svelte +18 -9
- package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +1 -0
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte +9 -2
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte.d.ts +2 -0
- package/components/apps/editor/settingsPanel/inputEditor/RowInputEditor.svelte +6 -0
- package/components/apps/editor/settingsPanel/inputEditor/RowInputEditor.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +2 -7
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +0 -1
- package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +1 -2
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +7 -6
- package/components/apps/gridUtils.js +3 -2
- package/components/apps/inputType.d.ts +9 -3
- package/components/apps/rx.d.ts +2 -2
- package/components/apps/rx.js +3 -2
- package/components/apps/types.d.ts +2 -1
- package/components/apps/utils.js +5 -3
- package/components/common/button/Button.svelte +3 -1
- package/components/common/button/Button.svelte.d.ts +1 -0
- package/components/common/confirmationModal/ConfirmationModal.svelte +1 -0
- package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +6 -2
- package/components/common/drawer/Drawer.svelte +6 -3
- package/components/common/menu/Menu.svelte +14 -1
- package/components/common/table/AppRow.svelte +5 -1
- package/components/common/table/FlowRow.svelte +5 -1
- package/components/common/table/LanguageBadge.svelte.d.ts +6 -13
- package/components/common/table/Row.svelte +10 -8
- package/components/common/table/ScriptRow.svelte +13 -11
- package/components/flows/content/FlowConstants.svelte +68 -0
- package/components/flows/content/FlowConstants.svelte.d.ts +14 -0
- package/components/flows/content/FlowEditorPanel.svelte +3 -0
- package/components/flows/content/FlowModuleComponent.svelte +4 -1
- package/components/flows/content/FlowModuleHeader.svelte +35 -84
- package/components/flows/content/FlowModuleHeader.svelte.d.ts +2 -2
- package/components/flows/flowStore.d.ts +1 -1
- package/components/flows/flowStore.js +8 -8
- package/components/flows/header/FlowPreviewButtons.svelte +2 -1
- package/components/flows/map/FlowConstantsItem.svelte +15 -0
- package/components/flows/map/FlowConstantsItem.svelte.d.ts +14 -0
- package/components/flows/map/FlowInputsItem.svelte +1 -2
- package/components/flows/map/FlowModuleSchemaItem.svelte +34 -25
- package/components/flows/map/FlowModuleSchemaMap.svelte +13 -3
- package/components/flows/map/FlowSettingsItem.svelte +2 -2
- package/components/flows/pickers/PickHubScript.svelte +1 -1
- package/components/sidebar/FavoriteMenu.svelte +23 -19
- package/components/sidebar/MenuLink.svelte +4 -4
- package/components/sidebar/MenuLink.svelte.d.ts +1 -1
- package/components/sidebar/SidebarContent.svelte +16 -16
- package/components/sidebar/WorkspaceMenu.svelte +17 -15
- package/logout.d.ts +1 -0
- package/logout.js +5 -3
- package/package.json +492 -488
- package/stores.js +1 -1
|
@@ -3,7 +3,8 @@ import { classNames } from '../../../utils';
|
|
|
3
3
|
import { faBed, faCodeBranch, faSave, faStop } from '@fortawesome/free-solid-svg-icons';
|
|
4
4
|
import { createEventDispatcher } from 'svelte';
|
|
5
5
|
import Icon from 'svelte-awesome';
|
|
6
|
-
import { PhoneIncoming, Repeat } from 'lucide-svelte';
|
|
6
|
+
import { Bed, PhoneIncoming, Repeat, Square } from 'lucide-svelte';
|
|
7
|
+
import Popover from '../../Popover.svelte';
|
|
7
8
|
export let module;
|
|
8
9
|
const dispatch = createEventDispatcher();
|
|
9
10
|
let width = 0;
|
|
@@ -12,30 +13,46 @@ $: moduleRetry = module.retry?.constant || module.retry?.exponential;
|
|
|
12
13
|
|
|
13
14
|
<div class="flex flex-row space-x-2" bind:clientWidth={width}>
|
|
14
15
|
{#if module.value.type === 'script' || module.value.type === 'rawscript'}
|
|
15
|
-
<
|
|
16
|
-
class=
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
</button>
|
|
21
|
-
<button
|
|
22
|
-
class={classNames('badge', moduleRetry ? 'badge-on' : 'badge-off', 'center-center')}
|
|
16
|
+
<Popover
|
|
17
|
+
class="center-center rounded border p-2
|
|
18
|
+
{moduleRetry
|
|
19
|
+
? 'bg-blue-100 text-blue-800 border-blue-300 hover:bg-blue-200'
|
|
20
|
+
: 'bg-white text-gray-800 border-gray-300 hover:bg-gray-100'}"
|
|
23
21
|
on:click={() => dispatch('toggleRetry')}
|
|
24
22
|
>
|
|
25
23
|
<Repeat size={14} />
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
<svelte:fragment slot="text">Retries</svelte:fragment>
|
|
25
|
+
</Popover>
|
|
26
|
+
<Popover
|
|
27
|
+
class="center-center rounded border p-2
|
|
28
|
+
{module.stop_after_if
|
|
29
|
+
? 'bg-blue-100 text-blue-800 border-blue-300 hover:bg-blue-200'
|
|
30
|
+
: 'bg-white text-gray-800 border-gray-300 hover:bg-gray-100'}"
|
|
31
|
+
on:click={() => dispatch('toggleStopAfterIf')}
|
|
30
32
|
>
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
<Square size={14} />
|
|
34
|
+
<svelte:fragment slot="text">Early stop/break</svelte:fragment>
|
|
35
|
+
</Popover>
|
|
36
|
+
<Popover
|
|
37
|
+
class="center-center rounded border p-2
|
|
38
|
+
{module.suspend
|
|
39
|
+
? 'bg-blue-100 text-blue-800 border-blue-300 hover:bg-blue-200'
|
|
40
|
+
: 'bg-white text-gray-800 border-gray-300 hover:bg-gray-100'}"
|
|
35
41
|
on:click={() => dispatch('toggleSuspend')}
|
|
36
42
|
>
|
|
37
43
|
<PhoneIncoming size={14} />
|
|
38
|
-
|
|
44
|
+
<svelte:fragment slot="text">Suspend</svelte:fragment>
|
|
45
|
+
</Popover>
|
|
46
|
+
<Popover
|
|
47
|
+
class="center-center rounded border p-2
|
|
48
|
+
{module.sleep
|
|
49
|
+
? 'bg-blue-100 text-blue-800 border-blue-300 hover:bg-blue-200'
|
|
50
|
+
: 'bg-white text-gray-800 border-gray-300 hover:bg-gray-100'}"
|
|
51
|
+
on:click={() => dispatch('toggleSleep')}
|
|
52
|
+
>
|
|
53
|
+
<Bed size={14} />
|
|
54
|
+
<svelte:fragment slot="text">Sleep</svelte:fragment>
|
|
55
|
+
</Popover>
|
|
39
56
|
{/if}
|
|
40
57
|
{#if module.value.type === 'script'}
|
|
41
58
|
<div class="w-2" />
|
|
@@ -64,69 +81,3 @@ $: moduleRetry = module.retry?.constant || module.retry?.exponential;
|
|
|
64
81
|
</Button>
|
|
65
82
|
{/if}
|
|
66
83
|
</div>
|
|
67
|
-
|
|
68
|
-
<style>
|
|
69
|
-
.badge {
|
|
70
|
-
|
|
71
|
-
display: flex;
|
|
72
|
-
|
|
73
|
-
cursor: pointer;
|
|
74
|
-
|
|
75
|
-
align-items: center;
|
|
76
|
-
|
|
77
|
-
white-space: nowrap;
|
|
78
|
-
|
|
79
|
-
border-radius: 0.25rem;
|
|
80
|
-
|
|
81
|
-
border-width: 1px;
|
|
82
|
-
|
|
83
|
-
padding-left: 0.625rem;
|
|
84
|
-
|
|
85
|
-
padding-right: 0.625rem;
|
|
86
|
-
|
|
87
|
-
padding-top: 0.125rem;
|
|
88
|
-
|
|
89
|
-
padding-bottom: 0.125rem;
|
|
90
|
-
|
|
91
|
-
font-size: 0.875rem;
|
|
92
|
-
|
|
93
|
-
line-height: 1.25rem;
|
|
94
|
-
|
|
95
|
-
font-weight: 500
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
.badge-on {
|
|
99
|
-
|
|
100
|
-
--tw-bg-opacity: 1;
|
|
101
|
-
|
|
102
|
-
background-color: rgb(219 234 254 / var(--tw-bg-opacity));
|
|
103
|
-
|
|
104
|
-
--tw-text-opacity: 1;
|
|
105
|
-
|
|
106
|
-
color: rgb(30 64 175 / var(--tw-text-opacity))
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
.badge-on:hover {
|
|
110
|
-
|
|
111
|
-
--tw-bg-opacity: 1;
|
|
112
|
-
|
|
113
|
-
background-color: rgb(191 219 254 / var(--tw-bg-opacity))
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
.badge-off {
|
|
117
|
-
|
|
118
|
-
--tw-bg-opacity: 1;
|
|
119
|
-
|
|
120
|
-
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
|
121
|
-
|
|
122
|
-
--tw-text-opacity: 1;
|
|
123
|
-
|
|
124
|
-
color: rgb(31 41 55 / var(--tw-text-opacity))
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
.badge-off:hover {
|
|
128
|
-
|
|
129
|
-
--tw-bg-opacity: 1;
|
|
130
|
-
|
|
131
|
-
background-color: rgb(229 231 235 / var(--tw-bg-opacity))
|
|
132
|
-
}</style>
|
|
@@ -5,10 +5,10 @@ declare const __propDef: {
|
|
|
5
5
|
module: FlowModule;
|
|
6
6
|
};
|
|
7
7
|
events: {
|
|
8
|
-
toggleStopAfterIf: CustomEvent<any>;
|
|
9
8
|
toggleRetry: CustomEvent<any>;
|
|
10
|
-
|
|
9
|
+
toggleStopAfterIf: CustomEvent<any>;
|
|
11
10
|
toggleSuspend: CustomEvent<any>;
|
|
11
|
+
toggleSleep: CustomEvent<any>;
|
|
12
12
|
fork: CustomEvent<any>;
|
|
13
13
|
createScriptFromInlineScript: CustomEvent<any>;
|
|
14
14
|
} & {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Flow, FlowModule } from '../../gen';
|
|
2
2
|
export type FlowMode = 'push' | 'pull';
|
|
3
3
|
export declare const flowStore: import("svelte/store").Writable<Flow>;
|
|
4
|
-
export declare function dfs(modules: FlowModule[]):
|
|
4
|
+
export declare function dfs<T>(modules: FlowModule[], f: (x: FlowModule) => T): T[];
|
|
5
5
|
export declare function initFlow(flow: Flow): Promise<void>;
|
|
6
6
|
export declare function copyFirstStepSchema(): Promise<void>;
|
|
@@ -11,23 +11,23 @@ export const flowStore = writable({
|
|
|
11
11
|
archived: false,
|
|
12
12
|
extra_perms: {}
|
|
13
13
|
});
|
|
14
|
-
export function dfs(modules) {
|
|
14
|
+
export function dfs(modules, f) {
|
|
15
15
|
let result = [];
|
|
16
16
|
for (const module of modules) {
|
|
17
17
|
if (module.value.type == 'forloopflow') {
|
|
18
|
-
result = result.concat(module
|
|
19
|
-
result = result.concat(dfs(module.value.modules));
|
|
18
|
+
result = result.concat(f(module));
|
|
19
|
+
result = result.concat(dfs(module.value.modules, f));
|
|
20
20
|
}
|
|
21
21
|
else if (module.value.type == 'branchone') {
|
|
22
|
-
result = result.concat(module
|
|
23
|
-
result = result.concat(dfs(module.value.branches.map((b) => b.modules).flat().concat(module.value.default)));
|
|
22
|
+
result = result.concat(f(module));
|
|
23
|
+
result = result.concat(dfs(module.value.branches.map((b) => b.modules).flat().concat(module.value.default), f));
|
|
24
24
|
}
|
|
25
25
|
else if (module.value.type == 'branchall') {
|
|
26
|
-
result = result.concat(module
|
|
27
|
-
result = result.concat(dfs(module.value.branches.map((b) => b.modules).flat()));
|
|
26
|
+
result = result.concat(f(module));
|
|
27
|
+
result = result.concat(dfs(module.value.branches.map((b) => b.modules).flat(), f));
|
|
28
28
|
}
|
|
29
29
|
else {
|
|
30
|
-
result.push(module
|
|
30
|
+
result.push(f(module));
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
return result;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script>import { getContext } from 'svelte';
|
|
2
|
+
import Icon from 'svelte-awesome';
|
|
3
|
+
import { faDollarSign } from '@fortawesome/free-solid-svg-icons';
|
|
4
|
+
import { classNames } from '../../../utils';
|
|
5
|
+
const { select, selectedId } = getContext('FlowEditorContext');
|
|
6
|
+
$: settingsClass = classNames('border w-full rounded-sm p-2 bg-white border-gray-400 text-sm cursor-pointer flex items-center', $selectedId == 'constants' ? 'outline outline-offset-1 outline-2 outline-slate-900' : '');
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
10
|
+
<div on:click={() => select('constants')} class={settingsClass}>
|
|
11
|
+
<Icon data={faDollarSign} class="mr-2" />
|
|
12
|
+
<span class="text-xs flex flex-row justify-between w-full gap-2 items-center truncate">
|
|
13
|
+
All Static Inputs
|
|
14
|
+
</span>
|
|
15
|
+
</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: Record<string, never>;
|
|
4
|
+
events: {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
};
|
|
7
|
+
slots: {};
|
|
8
|
+
};
|
|
9
|
+
export type FlowConstantsItemProps = typeof __propDef.props;
|
|
10
|
+
export type FlowConstantsItemEvents = typeof __propDef.events;
|
|
11
|
+
export type FlowConstantsItemSlots = typeof __propDef.slots;
|
|
12
|
+
export default class FlowConstantsItem extends SvelteComponentTyped<FlowConstantsItemProps, FlowConstantsItemEvents, FlowConstantsItemSlots> {
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
<script>import { getContext } from 'svelte';
|
|
2
2
|
import FlowModuleSchemaItem from './FlowModuleSchemaItem.svelte';
|
|
3
3
|
import Icon from 'svelte-awesome';
|
|
4
|
-
import { faFlagCheckered
|
|
4
|
+
import { faFlagCheckered } from '@fortawesome/free-solid-svg-icons';
|
|
5
5
|
const { select, selectedId } = getContext('FlowEditorContext');
|
|
6
6
|
</script>
|
|
7
7
|
|
|
8
8
|
<FlowModuleSchemaItem
|
|
9
9
|
on:click={() => select('inputs')}
|
|
10
|
-
isFirst
|
|
11
10
|
hasLine
|
|
12
11
|
selected={$selectedId === 'inputs'}
|
|
13
12
|
bold
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
<script>import Badge from '../../common/badge/Badge.svelte';
|
|
2
2
|
import Popover from '../../Popover.svelte';
|
|
3
3
|
import { classNames } from '../../../utils';
|
|
4
|
-
import { faBed, faRepeat, faStop, faTimesCircle } from '@fortawesome/free-solid-svg-icons';
|
|
5
4
|
import { createEventDispatcher } from 'svelte';
|
|
6
|
-
import
|
|
7
|
-
import { PhoneIncoming, Repeat } from 'lucide-svelte';
|
|
5
|
+
import { fade } from 'svelte/transition';
|
|
6
|
+
import { Bed, PhoneIncoming, Repeat, Square, X } from 'lucide-svelte';
|
|
8
7
|
export let isFirst = false;
|
|
9
8
|
export let isLast = false;
|
|
10
9
|
export let hasLine = true;
|
|
@@ -40,39 +39,52 @@ const dispatch = createEventDispatcher();
|
|
|
40
39
|
<div class="absolute text-sm right-12 -bottom-3 flex flex-row gap-1 z-20">
|
|
41
40
|
{#if retry}
|
|
42
41
|
<Popover notClickable>
|
|
43
|
-
<div
|
|
42
|
+
<div
|
|
43
|
+
transition:fade={{duration: 200}}
|
|
44
|
+
class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
|
|
45
|
+
>
|
|
44
46
|
<Repeat size={14} />
|
|
45
47
|
</div>
|
|
46
|
-
<
|
|
48
|
+
<svelte:fragment slot="text">Retries</svelte:fragment>
|
|
47
49
|
</Popover>
|
|
48
50
|
{/if}
|
|
49
51
|
{#if earlyStop}
|
|
50
52
|
<Popover notClickable>
|
|
51
|
-
<div
|
|
52
|
-
|
|
53
|
+
<div
|
|
54
|
+
transition:fade={{duration: 200}}
|
|
55
|
+
class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
|
|
56
|
+
>
|
|
57
|
+
<Square size={14} />
|
|
53
58
|
</div>
|
|
54
|
-
<
|
|
59
|
+
<svelte:fragment slot="text">Early stop/break</svelte:fragment>
|
|
55
60
|
</Popover>
|
|
56
61
|
{/if}
|
|
57
|
-
{#if
|
|
62
|
+
{#if suspend}
|
|
58
63
|
<Popover notClickable>
|
|
59
|
-
<div
|
|
60
|
-
|
|
64
|
+
<div
|
|
65
|
+
transition:fade={{duration: 200}}
|
|
66
|
+
class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
|
|
67
|
+
>
|
|
68
|
+
<PhoneIncoming size={14} />
|
|
61
69
|
</div>
|
|
62
|
-
<
|
|
70
|
+
<svelte:fragment slot="text">Suspend</svelte:fragment>
|
|
63
71
|
</Popover>
|
|
64
72
|
{/if}
|
|
65
|
-
{#if
|
|
73
|
+
{#if sleep}
|
|
66
74
|
<Popover notClickable>
|
|
67
|
-
<div
|
|
68
|
-
|
|
75
|
+
<div
|
|
76
|
+
transition:fade={{duration: 200}}
|
|
77
|
+
class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
|
|
78
|
+
>
|
|
79
|
+
<Bed size={14} />
|
|
69
80
|
</div>
|
|
70
|
-
<
|
|
81
|
+
<svelte:fragment slot="text">Sleep</svelte:fragment>
|
|
71
82
|
</Popover>
|
|
72
83
|
{/if}
|
|
73
84
|
</div>
|
|
74
85
|
<div
|
|
75
|
-
class="flex justify-between items-center w-full overflow-hidden rounded-sm
|
|
86
|
+
class="flex justify-between items-center w-full overflow-hidden rounded-sm
|
|
87
|
+
border border-gray-400 p-2 bg-white text-2xs module"
|
|
76
88
|
>
|
|
77
89
|
{#if $$slots.icon}
|
|
78
90
|
<slot name="icon" />
|
|
@@ -85,16 +97,13 @@ const dispatch = createEventDispatcher();
|
|
|
85
97
|
{/if}
|
|
86
98
|
{#if deletable}
|
|
87
99
|
<button
|
|
88
|
-
class="absolute -top-2 right-0 rounded-full h-4 w-4 trash center-center
|
|
89
|
-
|
|
90
|
-
|
|
100
|
+
class="absolute -top-2 right-0 rounded-full h-4 w-4 trash center-center
|
|
101
|
+
border-[1.5px] border-gray-700 bg-white duration-150 hover:bg-red-400 hover:text-white
|
|
102
|
+
hover:border-red-700 {selected ? '' : '!hidden'}"
|
|
91
103
|
on:click={(event) => dispatch('delete', event)}
|
|
92
|
-
><Icon
|
|
93
|
-
data={faTimesCircle}
|
|
94
|
-
class="text-gray-600 hover:text-red-600"
|
|
95
|
-
scale={0.9}
|
|
96
|
-
/></button
|
|
97
104
|
>
|
|
105
|
+
<X size={12} strokeWidth={2} />
|
|
106
|
+
</button>
|
|
98
107
|
{/if}
|
|
99
108
|
</div>
|
|
100
109
|
</div>
|
|
@@ -9,10 +9,14 @@ import FlowSettingsItem from './FlowSettingsItem.svelte';
|
|
|
9
9
|
import FlowInputsItem from './FlowInputsItem.svelte';
|
|
10
10
|
import InsertModuleButton from './InsertModuleButton.svelte';
|
|
11
11
|
import { slide } from 'svelte/transition';
|
|
12
|
+
import FlowModuleSchemaItem from './FlowModuleSchemaItem.svelte';
|
|
13
|
+
import { Icon } from 'svelte-awesome';
|
|
14
|
+
import { faDollarSign } from '@fortawesome/free-solid-svg-icons';
|
|
15
|
+
import FlowConstantsItem from './FlowConstantsItem.svelte';
|
|
12
16
|
export let root = false;
|
|
13
17
|
export let modules;
|
|
14
18
|
let indexToRemove = undefined;
|
|
15
|
-
const { select } = getContext('FlowEditorContext');
|
|
19
|
+
const { select, selectedId } = getContext('FlowEditorContext');
|
|
16
20
|
async function insertNewModuleAtIndex(index, kind) {
|
|
17
21
|
await idMutex.runExclusive(async () => {
|
|
18
22
|
var module = emptyModule(kind == 'flow');
|
|
@@ -85,12 +89,17 @@ $: confirmationModalOpen = indexToRemove !== undefined;
|
|
|
85
89
|
<div class="flex flex-col h-full relative">
|
|
86
90
|
{#if root}
|
|
87
91
|
<div
|
|
88
|
-
class="z-10 sticky top-0 bg-gray-50 flex-initial
|
|
92
|
+
class="z-10 sticky inline-flex top-0 bg-gray-50 flex-initial px-3 py-2 items-center h-full max-h-12 border-b border-gray-300"
|
|
89
93
|
>
|
|
90
94
|
<FlowSettingsItem />
|
|
91
95
|
</div>
|
|
96
|
+
<div
|
|
97
|
+
class="z-10 sticky inline-flex top-0 bg-gray-50 flex-initial px-3 py-2 items-center h-full max-h-12 border-b border-gray-300"
|
|
98
|
+
>
|
|
99
|
+
<FlowConstantsItem />
|
|
100
|
+
</div>
|
|
92
101
|
{/if}
|
|
93
|
-
<ul class="w-full flex-auto
|
|
102
|
+
<ul class="w-full flex-auto {root ? 'px-2 pb-2 pt-3' : ''} py-1">
|
|
94
103
|
{#if root}
|
|
95
104
|
<li>
|
|
96
105
|
<FlowInputsItem />
|
|
@@ -139,5 +148,6 @@ $: confirmationModalOpen = indexToRemove !== undefined;
|
|
|
139
148
|
removeAtIndex(indexToRemove)
|
|
140
149
|
indexToRemove = undefined
|
|
141
150
|
}
|
|
151
|
+
$selectedId = 'settings-graph'
|
|
142
152
|
}}
|
|
143
153
|
/>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<script>import { getContext } from 'svelte';
|
|
2
2
|
import Icon from 'svelte-awesome';
|
|
3
|
-
import {
|
|
3
|
+
import { faSliders } from '@fortawesome/free-solid-svg-icons';
|
|
4
4
|
import { classNames } from '../../../utils';
|
|
5
5
|
import { Badge } from '../../common';
|
|
6
6
|
import { flowStore } from '../flowStore';
|
|
7
|
-
const { select, selectedId
|
|
7
|
+
const { select, selectedId } = getContext('FlowEditorContext');
|
|
8
8
|
$: settingsClass = classNames('border w-full rounded-sm p-2 bg-white border-gray-400 text-sm cursor-pointer flex items-center', $selectedId?.startsWith('settings')
|
|
9
9
|
? 'outline outline-offset-1 outline-2 outline-slate-900'
|
|
10
10
|
: '');
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
<script>import { classNames } from '../../utils';
|
|
2
|
-
import {
|
|
2
|
+
import { Code2, LayoutDashboard } from 'lucide-svelte';
|
|
3
|
+
import { faStar, faBarsStaggered } from '@fortawesome/free-solid-svg-icons';
|
|
3
4
|
import Icon from 'svelte-awesome';
|
|
4
5
|
import Menu from '../common/menu/Menu.svelte';
|
|
5
6
|
export let isCollapsed = false;
|
|
6
7
|
export let favoriteLinks = [];
|
|
7
8
|
</script>
|
|
8
9
|
|
|
9
|
-
<Menu placement="bottom-start" let:close
|
|
10
|
+
<Menu placement="bottom-start" let:close>
|
|
10
11
|
<button
|
|
11
12
|
slot="trigger"
|
|
12
13
|
type="button"
|
|
@@ -24,29 +25,32 @@ export let favoriteLinks = [];
|
|
|
24
25
|
{/if}
|
|
25
26
|
</button>
|
|
26
27
|
|
|
27
|
-
<div class="
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
<div class="overflow-hidden" role="none">
|
|
29
|
+
{#if !favoriteLinks.length}
|
|
30
|
+
<div class="py-1" role="none">
|
|
31
|
+
<div class="text-gray-600 block px-4 py-2 text-xs" role="menuitem" tabindex="-1">
|
|
32
|
+
Add Scripts/Flows/Apps here by starring them
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
{:else}
|
|
36
|
+
<div class="py-1 w-full max-w-full">
|
|
37
|
+
{#each favoriteLinks ?? [] as favorite (favorite.href)}
|
|
38
|
+
<a href={favorite.href} on:click={close} class="w-full inline-flex flex-row px-4 py-2 hover:bg-gray-100">
|
|
39
|
+
<span class="center-center">
|
|
33
40
|
{#if favorite.kind == 'script'}
|
|
34
|
-
<
|
|
41
|
+
<Code2 size={16} />
|
|
35
42
|
{:else if favorite.kind == 'flow'}
|
|
36
43
|
<Icon data={faBarsStaggered} />
|
|
37
44
|
{:else if favorite.kind == 'app'}
|
|
38
|
-
<
|
|
45
|
+
<LayoutDashboard size={16} />
|
|
39
46
|
{/if}
|
|
40
|
-
</
|
|
41
|
-
<
|
|
47
|
+
</span>
|
|
48
|
+
<span class="text-gray-800 ml-2 grow min-w-0 text-xs truncate">
|
|
49
|
+
{favorite.label}
|
|
50
|
+
</span>
|
|
42
51
|
</a>
|
|
43
|
-
|
|
44
|
-
{/each}
|
|
45
|
-
</table>
|
|
46
|
-
<div class="py-1" role="none">
|
|
47
|
-
<div class="text-gray-600 block px-4 py-2 text-xs" role="menuitem" tabindex="-1">
|
|
48
|
-
Add Scripts/Flows/Apps here by starring them
|
|
52
|
+
{/each}
|
|
49
53
|
</div>
|
|
50
|
-
|
|
54
|
+
{/if}
|
|
51
55
|
</div>
|
|
52
56
|
</Menu>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script>import { classNames } from '../../utils';
|
|
2
|
-
import { navigating } from '$app/stores';
|
|
2
|
+
import { navigating, page } from '$app/stores';
|
|
3
3
|
import Icon from 'svelte-awesome';
|
|
4
4
|
export let label;
|
|
5
5
|
export let href;
|
|
@@ -9,10 +9,10 @@ export let disabled = false;
|
|
|
9
9
|
let isSelected = false;
|
|
10
10
|
navigating.subscribe(() => {
|
|
11
11
|
if (href === '/') {
|
|
12
|
-
isSelected =
|
|
12
|
+
isSelected = $page.url.pathname === href;
|
|
13
13
|
}
|
|
14
14
|
else {
|
|
15
|
-
isSelected =
|
|
15
|
+
isSelected = $page.url.pathname.includes(href);
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
18
|
</script>
|
|
@@ -41,7 +41,7 @@ navigating.subscribe(() => {
|
|
|
41
41
|
{#if !isCollapsed}
|
|
42
42
|
<span
|
|
43
43
|
class={classNames(
|
|
44
|
-
'whitespace-pre
|
|
44
|
+
'whitespace-pre truncate',
|
|
45
45
|
isSelected ? ' text-gray-700 font-bold' : 'text-white group-hover:text-gray-900'
|
|
46
46
|
)}
|
|
47
47
|
>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script>import { faBookOpen, faCalendar, faCubes, faEye, faHomeAlt, faPlay, faRobot, faUsersCog, faCog, faDollarSign,
|
|
1
|
+
<script>import { faBookOpen, faCalendar, faCubes, faEye, faHomeAlt, faPlay, faRobot, faUsersCog, faCog, faDollarSign, faFolderOpen } from '@fortawesome/free-solid-svg-icons';
|
|
2
2
|
import { faDiscord, faGithub } from '@fortawesome/free-brands-svg-icons';
|
|
3
3
|
import MenuLink from './MenuLink.svelte';
|
|
4
4
|
import { userStore } from '../../stores';
|
|
@@ -10,7 +10,7 @@ const mainMenuLinks = [
|
|
|
10
10
|
];
|
|
11
11
|
$: secondaryMenuLinks = [
|
|
12
12
|
{ label: 'Schedules', href: '/schedules', icon: faCalendar, disabled: $userStore?.operator },
|
|
13
|
-
{ label: 'Folders', href: '/folders', icon:
|
|
13
|
+
{ label: 'Folders', href: '/folders', icon: faFolderOpen, disabled: $userStore?.operator },
|
|
14
14
|
{ label: 'Groups', href: '/groups', icon: faUsersCog, disabled: $userStore?.operator },
|
|
15
15
|
{ label: 'Audit Logs', href: '/audit_logs', icon: faEye, disabled: $userStore?.operator },
|
|
16
16
|
{
|
|
@@ -33,22 +33,22 @@ const thirdMenuLinks = [
|
|
|
33
33
|
export let isCollapsed = false;
|
|
34
34
|
</script>
|
|
35
35
|
|
|
36
|
-
<
|
|
37
|
-
<
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
<div class="space-1-2">
|
|
36
|
+
<nav class="grow flex md:justify-between flex-col overflow-x-hidden scrollbar-hidden px-2 md:pb-4">
|
|
37
|
+
<div class="space-y-1 pt-4 mb-6 md:mb-10">
|
|
38
|
+
{#each mainMenuLinks as menuLink (menuLink.href)}
|
|
39
|
+
<MenuLink class="!text-md" {...menuLink} {isCollapsed} />
|
|
40
|
+
{/each}
|
|
41
|
+
</div>
|
|
42
|
+
<div>
|
|
43
|
+
<div class="mb-6 md:mb-10">
|
|
45
44
|
{#each secondaryMenuLinks as menuLink (menuLink.href)}
|
|
46
|
-
<MenuLink class="text-xs" {...menuLink} {isCollapsed} />
|
|
45
|
+
<MenuLink class="!text-xs" {...menuLink} {isCollapsed} />
|
|
47
46
|
{/each}
|
|
48
|
-
|
|
47
|
+
</div>
|
|
48
|
+
<div>
|
|
49
49
|
{#each thirdMenuLinks as menuLink (menuLink.href)}
|
|
50
|
-
<MenuLink class="text-xs" {...menuLink} {isCollapsed} />
|
|
50
|
+
<MenuLink class="!text-xs" {...menuLink} {isCollapsed} />
|
|
51
51
|
{/each}
|
|
52
52
|
</div>
|
|
53
|
-
</
|
|
54
|
-
</
|
|
53
|
+
</div>
|
|
54
|
+
</nav>
|
|
@@ -24,22 +24,24 @@ export let isCollapsed = false;
|
|
|
24
24
|
</button>
|
|
25
25
|
|
|
26
26
|
<div class="divide-y divide-gray-100" role="none">
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
<td class="text-gray-500 font-mono pl-4 pr-1 py-2 text-xs whitespace-nowrap"
|
|
37
|
-
>{workspace.id}</td
|
|
27
|
+
<div class="py-1">
|
|
28
|
+
<table class="w-full">
|
|
29
|
+
{#each $userWorkspaces as workspace}
|
|
30
|
+
<tr
|
|
31
|
+
class="text-xs cursor-pointer hover:bg-gray-100"
|
|
32
|
+
on:click={() => {
|
|
33
|
+
workspaceStore.set(workspace.id)
|
|
34
|
+
close()
|
|
35
|
+
}}
|
|
38
36
|
>
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
<td class="text-gray-500 font-mono pl-4 pr-1 py-2 text-xs whitespace-nowrap"
|
|
38
|
+
>{workspace.id}</td
|
|
39
|
+
>
|
|
40
|
+
<td class="text-gray-700 pr-4 py-2 w-full">{workspace.name}</td>
|
|
41
|
+
</tr>
|
|
42
|
+
{/each}
|
|
43
|
+
</table>
|
|
44
|
+
</div>
|
|
43
45
|
<div class="py-1" role="none">
|
|
44
46
|
<a
|
|
45
47
|
href="/user/create_workspace"
|
package/logout.d.ts
CHANGED