windmill-components 1.22.0 → 1.28.2
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/components/AppConnect.svelte +93 -47
- package/components/AppConnect.svelte.d.ts +2 -2
- package/components/ArgInfo.svelte +0 -5
- package/components/ArgInput.svelte +91 -64
- package/components/ArgInput.svelte.d.ts +8 -3
- package/components/Button.svelte +4 -4
- package/components/CenteredPage.svelte +1 -1
- package/components/CollapseLink.svelte +12 -0
- package/components/CollapseLink.svelte.d.ts +19 -0
- package/components/CronInput.svelte +84 -0
- package/components/CronInput.svelte.d.ts +18 -0
- package/components/DisplayResult.svelte +28 -15
- package/components/Editor.svelte +144 -61
- package/components/Editor.svelte.d.ts +2 -0
- package/components/EditorBar.svelte +215 -0
- package/components/EditorBar.svelte.d.ts +23 -0
- package/components/FlowBuilder.svelte +155 -79
- package/components/FlowEditor.svelte +75 -200
- package/components/FlowEditor.svelte.d.ts +3 -2
- package/components/FlowJobResult.svelte +1 -1
- package/components/FlowPreview.svelte +18 -24
- package/components/FlowPreviewContent.svelte +68 -0
- package/components/FlowPreviewContent.svelte.d.ts +21 -0
- package/components/FlowStatusViewer.svelte +85 -37
- package/components/FlowStatusViewer.svelte.d.ts +3 -2
- package/components/FlowViewer.svelte +98 -26
- package/components/FlowViewer.svelte.d.ts +2 -2
- package/components/IconedResourceType.svelte +30 -5
- package/components/InputTransformForm.svelte +209 -0
- package/components/InputTransformForm.svelte.d.ts +26 -0
- package/components/InputTransformsViewer.svelte +19 -0
- package/components/InputTransformsViewer.svelte.d.ts +17 -0
- package/components/InviteGlobalUser.svelte +2 -2
- package/components/InviteUser.svelte +2 -2
- package/components/JobStatus.svelte +32 -25
- package/components/Modal.svelte +44 -42
- package/components/ModuleStep.svelte +99 -76
- package/components/ObjectResourceInput.svelte +58 -38
- package/components/ObjectTypeNarrowing.svelte +4 -19
- package/components/Path.svelte +1 -1
- package/components/Path.svelte.d.ts +1 -1
- package/components/RadioButton.svelte +11 -96
- package/components/RadioButton.svelte.d.ts +4 -2
- package/components/ResourceEditor.svelte +4 -5
- package/components/ResourceEditor.svelte.d.ts +2 -2
- package/components/ResourcePicker.svelte +25 -2
- package/components/ResourcePicker.svelte.d.ts +3 -0
- package/components/ResourceTypePicker.svelte +17 -29
- package/components/ResourceTypePicker.svelte.d.ts +1 -0
- package/components/RunForm.svelte +14 -15
- package/components/RunForm.svelte.d.ts +1 -1
- package/components/SchemaEditor.svelte +87 -71
- package/components/SchemaEditor.svelte.d.ts +2 -0
- package/components/SchemaEditorProperty.svelte +11 -0
- package/components/SchemaEditorProperty.svelte.d.ts +17 -0
- package/components/SchemaForm.svelte +21 -127
- package/components/SchemaForm.svelte.d.ts +3 -4
- package/components/SchemaModal.svelte +20 -33
- package/components/SchemaModal.svelte.d.ts +1 -1
- package/components/SchemaViewer.svelte +5 -7
- package/components/ScriptBuilder.svelte +40 -43
- package/components/ScriptEditor.svelte +76 -248
- package/components/ScriptPicker.svelte +13 -26
- package/components/ScriptPicker.svelte.d.ts +1 -1
- package/components/ScriptSchema.svelte +0 -5
- package/components/ShareModal.svelte +1 -1
- package/components/SharedBadge.svelte +12 -10
- package/components/StringTypeNarrowing.svelte +8 -4
- package/components/StringTypeNarrowing.svelte.d.ts +1 -0
- package/components/TableCustom.svelte +7 -9
- package/components/TableSimple.svelte +1 -1
- package/components/Toggle.svelte +8 -10
- package/components/Toggle.svelte.d.ts +5 -11
- package/components/Tooltip.svelte +3 -2
- package/components/VariableEditor.svelte +21 -6
- package/components/flows/CopyFirstStepSchema.svelte +7 -5
- package/components/flows/DynamicInputHelpBox.svelte +1 -1
- package/components/flows/FlowBox.svelte +3 -0
- package/components/flows/FlowBox.svelte.d.ts +23 -0
- package/components/flows/FlowBoxHeader.svelte +9 -0
- package/components/flows/FlowBoxHeader.svelte.d.ts +18 -0
- package/components/flows/FlowInput.svelte +20 -0
- package/components/flows/FlowInput.svelte.d.ts +14 -0
- package/components/flows/FlowInputs.svelte +7 -3
- package/components/flows/FlowModuleHeader.svelte +44 -41
- package/components/flows/FlowModuleHeader.svelte.d.ts +1 -1
- package/components/flows/FlowSettings.svelte +174 -0
- package/components/flows/FlowSettings.svelte.d.ts +21 -0
- package/components/flows/flowStore.d.ts +5 -2
- package/components/flows/flowStore.js +65 -9
- package/components/flows/pickers/FlowScriptPicker.svelte +6 -1
- package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -0
- package/components/flows/utils.d.ts +11 -11
- package/components/flows/utils.js +111 -64
- package/components/icons/AirtableIcon.svelte +17 -0
- package/components/icons/AirtableIcon.svelte.d.ts +17 -0
- package/components/icons/GCloudIcon.svelte +16 -0
- package/components/icons/GCloudIcon.svelte.d.ts +17 -0
- package/components/icons/GItlabIcon.svelte +16 -0
- package/components/icons/GItlabIcon.svelte.d.ts +17 -0
- package/components/icons/GSheetsIcon.svelte +16 -0
- package/components/icons/GSheetsIcon.svelte.d.ts +17 -0
- package/components/icons/GcalIcon.svelte +16 -0
- package/components/icons/GcalIcon.svelte.d.ts +17 -0
- package/components/icons/GdriveIcon.svelte +16 -0
- package/components/icons/GdriveIcon.svelte.d.ts +17 -0
- package/components/icons/GmailIcon.svelte +16 -0
- package/components/icons/GmailIcon.svelte.d.ts +17 -0
- package/components/icons/PostgresIcon.svelte +8 -49
- package/components/icons/Slack.svelte +9 -18
- package/components/icons/TogglIcon.svelte +59 -0
- package/components/icons/TogglIcon.svelte.d.ts +17 -0
- package/components/propertyPicker/ObjectViewer.svelte +35 -37
- package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
- package/components/propertyPicker/OverlayPropertyPicker.svelte +53 -53
- package/components/propertyPicker/OverlayPropertyPicker.svelte.d.ts +5 -2
- package/components/propertyPicker/PropPicker.svelte +13 -15
- package/components/propertyPicker/PropPicker.svelte.d.ts +1 -1
- package/components/propertyPicker/WarningMessage.svelte +14 -41
- package/components/propertyPicker/WarningMessage.svelte.d.ts +11 -8
- package/components/propertyPicker/utils.d.ts +1 -0
- package/components/propertyPicker/utils.js +25 -0
- package/gen/core/OpenAPI.js +1 -1
- package/gen/index.d.ts +12 -2
- package/gen/index.js +1 -2
- package/gen/models/CompletedJob.d.ts +1 -1
- package/gen/models/Flow.d.ts +3 -13
- package/gen/models/FlowMetadata.d.ts +9 -0
- package/gen/models/FlowMetadata.js +4 -0
- package/gen/models/FlowModuleValue.d.ts +5 -22
- package/gen/models/FlowModuleValue.js +1 -15
- package/gen/models/ForloopFlow.d.ts +8 -0
- package/gen/models/ForloopFlow.js +4 -0
- package/gen/models/InputTransform.d.ts +3 -12
- package/gen/models/InputTransform.js +1 -8
- package/gen/models/JavascriptTransform.d.ts +4 -0
- package/gen/models/JavascriptTransform.js +4 -0
- package/gen/models/MainArgSignature.d.ts +1 -1
- package/gen/models/NewSchedule.d.ts +1 -0
- package/gen/models/OpenFlow.d.ts +7 -0
- package/gen/models/OpenFlow.js +4 -0
- package/gen/models/OpenFlowWPath.d.ts +4 -0
- package/gen/models/OpenFlowWPath.js +4 -0
- package/gen/models/PathFlow.d.ts +4 -0
- package/gen/models/PathFlow.js +4 -0
- package/gen/models/PathScript.d.ts +4 -0
- package/gen/models/PathScript.js +4 -0
- package/gen/models/RawScript.d.ts +12 -0
- package/gen/models/RawScript.js +11 -0
- package/gen/models/Schedule.d.ts +1 -1
- package/gen/models/StaticTransform.d.ts +4 -0
- package/gen/models/StaticTransform.js +4 -0
- package/gen/models/TokenResponse.d.ts +3 -3
- package/gen/models/Usage.d.ts +5 -0
- package/gen/models/Usage.js +4 -0
- package/gen/models/User.d.ts +2 -0
- package/gen/schemas/$AuditLog.d.ts +32 -0
- package/gen/schemas/$AuditLog.js +35 -0
- package/gen/schemas/$CompletedJob.d.ts +98 -0
- package/gen/schemas/$CompletedJob.js +103 -0
- package/gen/schemas/$ContextualVariable.d.ts +16 -0
- package/gen/schemas/$ContextualVariable.js +19 -0
- package/gen/schemas/$CreateResource.d.ts +22 -0
- package/gen/schemas/$CreateResource.js +25 -0
- package/gen/schemas/$CreateVariable.d.ts +26 -0
- package/gen/schemas/$CreateVariable.js +29 -0
- package/gen/schemas/$CreateWorkspace.d.ts +20 -0
- package/gen/schemas/$CreateWorkspace.js +23 -0
- package/gen/schemas/$EditResource.d.ts +13 -0
- package/gen/schemas/$EditResource.js +16 -0
- package/gen/schemas/$EditResourceType.d.ts +10 -0
- package/gen/schemas/$EditResourceType.js +13 -0
- package/gen/schemas/$EditSchedule.d.ts +20 -0
- package/gen/schemas/$EditSchedule.js +23 -0
- package/gen/schemas/$EditVariable.d.ts +16 -0
- package/gen/schemas/$EditVariable.js +19 -0
- package/gen/schemas/$EditWorkspaceUser.d.ts +7 -0
- package/gen/schemas/$EditWorkspaceUser.js +10 -0
- package/gen/schemas/$Flow.d.ts +23 -0
- package/gen/schemas/$Flow.js +26 -0
- package/gen/schemas/$FlowMetadata.d.ts +31 -0
- package/gen/schemas/$FlowMetadata.js +34 -0
- package/gen/schemas/$FlowPreview.d.ts +80 -0
- package/gen/schemas/$FlowPreview.js +83 -0
- package/gen/schemas/$GlobalUserInfo.d.ts +26 -0
- package/gen/schemas/$GlobalUserInfo.js +29 -0
- package/gen/schemas/$Group.d.ts +23 -0
- package/gen/schemas/$Group.js +26 -0
- package/gen/schemas/$Job.d.ts +17 -0
- package/gen/schemas/$Job.js +20 -0
- package/gen/schemas/$ListableVariable.d.ts +35 -0
- package/gen/schemas/$ListableVariable.js +38 -0
- package/gen/schemas/$Login.d.ts +12 -0
- package/gen/schemas/$Login.js +15 -0
- package/gen/schemas/$MainArgSignature.d.ts +50 -0
- package/gen/schemas/$MainArgSignature.js +53 -0
- package/gen/schemas/$NewSchedule.d.ts +30 -0
- package/gen/schemas/$NewSchedule.js +33 -0
- package/gen/schemas/$NewToken.d.ts +11 -0
- package/gen/schemas/$NewToken.js +14 -0
- package/gen/schemas/$NewUser.d.ts +16 -0
- package/gen/schemas/$NewUser.js +19 -0
- package/gen/schemas/$Preview.d.ts +19 -0
- package/gen/schemas/$Preview.js +22 -0
- package/gen/schemas/$QueuedJob.d.ts +139 -0
- package/gen/schemas/$QueuedJob.js +144 -0
- package/gen/schemas/$Resource.d.ts +31 -0
- package/gen/schemas/$Resource.js +34 -0
- package/gen/schemas/$ResourceType.d.ts +17 -0
- package/gen/schemas/$ResourceType.js +20 -0
- package/gen/schemas/$Schedule.d.ts +47 -0
- package/gen/schemas/$Schedule.js +50 -0
- package/gen/schemas/$Script.d.ts +77 -0
- package/gen/schemas/$Script.js +80 -0
- package/gen/schemas/$ScriptArgs.d.ts +6 -0
- package/gen/schemas/$ScriptArgs.js +9 -0
- package/gen/schemas/$SlackToken.d.ts +24 -0
- package/gen/schemas/$SlackToken.js +27 -0
- package/gen/schemas/$TokenResponse.d.ts +23 -0
- package/gen/schemas/$TokenResponse.js +26 -0
- package/gen/schemas/$TruncatedToken.d.ts +25 -0
- package/gen/schemas/$TruncatedToken.js +28 -0
- package/gen/schemas/$Usage.d.ts +13 -0
- package/gen/schemas/$Usage.js +16 -0
- package/gen/schemas/$User.d.ts +42 -0
- package/gen/schemas/$User.js +45 -0
- package/gen/schemas/$UserWorkspaceList.d.ts +28 -0
- package/gen/schemas/$UserWorkspaceList.js +31 -0
- package/gen/schemas/$WorkerPing.d.ts +31 -0
- package/gen/schemas/$WorkerPing.js +34 -0
- package/gen/schemas/$Workspace.d.ts +19 -0
- package/gen/schemas/$Workspace.js +22 -0
- package/gen/schemas/$WorkspaceInvite.d.ts +16 -0
- package/gen/schemas/$WorkspaceInvite.js +19 -0
- package/gen/services/FlowService.d.ts +30 -16
- package/gen/services/FlowService.js +25 -0
- package/gen/services/JobService.d.ts +1 -1
- package/gen/services/ScriptService.d.ts +13 -8
- package/gen/services/WorkspaceService.d.ts +1 -1
- package/gen/services/WorkspaceService.js +1 -1
- package/infer.js +8 -1
- package/package.json +88 -16
- package/script_helpers.d.ts +1 -1
- package/script_helpers.js +11 -13
- package/sql.d.ts +89 -0
- package/sql.js +817 -0
- package/stores.d.ts +1 -1
- package/stores.js +0 -6
- package/utils.d.ts +26 -6
- package/utils.js +94 -7
- package/components/RadioButtonV2.svelte +0 -33
- package/components/RadioButtonV2.svelte.d.ts +0 -20
|
@@ -3,38 +3,57 @@ const apiTokenApps = {
|
|
|
3
3
|
airtable: {
|
|
4
4
|
img: 'airtable_connect.png',
|
|
5
5
|
instructions: 'Click on the top-right avatar -> Account -> Api'
|
|
6
|
+
},
|
|
7
|
+
discord_webhook: {
|
|
8
|
+
img: 'discord_webhook.png',
|
|
9
|
+
instructions: 'Server Settings -> Integration -> Webhooks',
|
|
10
|
+
key: 'webhook_url'
|
|
11
|
+
},
|
|
12
|
+
toggl: {
|
|
13
|
+
img: 'toggl_connect.png',
|
|
14
|
+
instructions: 'Go to https://track.toggl.com/profile -> API Token'
|
|
6
15
|
}
|
|
7
16
|
};
|
|
8
17
|
</script>
|
|
9
18
|
|
|
10
|
-
<script>import
|
|
11
|
-
import PageHeader from './PageHeader.svelte';
|
|
12
|
-
import { workspaceStore, userStore, oauthStore } from '../stores';
|
|
19
|
+
<script>import { oauthStore, userStore, workspaceStore } from '../stores';
|
|
13
20
|
import { faMinus, faPlus } from '@fortawesome/free-solid-svg-icons';
|
|
21
|
+
import IconedResourceType from './IconedResourceType.svelte';
|
|
22
|
+
import PageHeader from './PageHeader.svelte';
|
|
14
23
|
import { OauthService, ResourceService, VariableService } from '../gen';
|
|
15
|
-
import {
|
|
16
|
-
import
|
|
24
|
+
import { page } from '$app/stores';
|
|
25
|
+
import { sendUserToast, truncateRev } from '../utils';
|
|
26
|
+
import { createEventDispatcher } from 'svelte';
|
|
17
27
|
import Icon from 'svelte-awesome';
|
|
18
|
-
import
|
|
28
|
+
import Modal from './Modal.svelte';
|
|
19
29
|
import Password from './Password.svelte';
|
|
20
|
-
import
|
|
30
|
+
import Path from './Path.svelte';
|
|
21
31
|
let manual = false;
|
|
22
32
|
let value = '';
|
|
23
33
|
let valueToken;
|
|
24
34
|
let connects = {};
|
|
25
35
|
let connectsManual = [];
|
|
36
|
+
let key = 'token';
|
|
37
|
+
$: key = apiTokenApps[resource_type]?.key ?? 'token';
|
|
26
38
|
let scopes = [];
|
|
39
|
+
let extra_params = [];
|
|
27
40
|
let path;
|
|
28
41
|
let modal;
|
|
29
42
|
let resource_type = '';
|
|
30
43
|
let step = 1;
|
|
31
44
|
let no_back = false;
|
|
32
45
|
let pathError = '';
|
|
33
|
-
export function open() {
|
|
46
|
+
export async function open(rt) {
|
|
34
47
|
step = 1;
|
|
35
48
|
value = '';
|
|
36
|
-
resource_type = '';
|
|
37
49
|
no_back = false;
|
|
50
|
+
resource_type = rt ?? '';
|
|
51
|
+
await loadConnects();
|
|
52
|
+
const connect = connects[resource_type];
|
|
53
|
+
if (connect) {
|
|
54
|
+
scopes = connect.scopes;
|
|
55
|
+
extra_params = Object.entries(connect.extra_params ?? {});
|
|
56
|
+
}
|
|
38
57
|
modal.openModal();
|
|
39
58
|
}
|
|
40
59
|
export function openFromOauth(rt) {
|
|
@@ -61,7 +80,12 @@ async function next() {
|
|
|
61
80
|
step += 1;
|
|
62
81
|
}
|
|
63
82
|
else if (step == 1 && !manual) {
|
|
64
|
-
|
|
83
|
+
const url = new URL(`/api/oauth/connect/${resource_type}`, $page.url.origin);
|
|
84
|
+
url.searchParams.append('scopes', scopes.join('+'));
|
|
85
|
+
if (extra_params.length > 0) {
|
|
86
|
+
extra_params.forEach(([key, value]) => url.searchParams.append(key, value));
|
|
87
|
+
}
|
|
88
|
+
window.location.href = url.toString();
|
|
65
89
|
}
|
|
66
90
|
else {
|
|
67
91
|
let exists = await VariableService.existsVariable({
|
|
@@ -79,7 +103,7 @@ async function next() {
|
|
|
79
103
|
throw Error(`Resource at path ${path} already exists. Delete it or pick another path`);
|
|
80
104
|
}
|
|
81
105
|
let account = undefined;
|
|
82
|
-
if (valueToken
|
|
106
|
+
if (valueToken?.refresh_token != undefined && valueToken?.expires_in != undefined) {
|
|
83
107
|
account = Number(await OauthService.createAccount({
|
|
84
108
|
workspace: $workspaceStore,
|
|
85
109
|
requestBody: {
|
|
@@ -90,25 +114,28 @@ async function next() {
|
|
|
90
114
|
}
|
|
91
115
|
}));
|
|
92
116
|
}
|
|
117
|
+
const description = `${manual ? 'Token' : 'OAuth token'} for ${resource_type}`;
|
|
93
118
|
await VariableService.createVariable({
|
|
94
119
|
workspace: $workspaceStore,
|
|
95
120
|
requestBody: {
|
|
96
121
|
path,
|
|
97
122
|
value,
|
|
98
123
|
is_secret: true,
|
|
99
|
-
description
|
|
100
|
-
is_oauth:
|
|
124
|
+
description,
|
|
125
|
+
is_oauth: !manual,
|
|
101
126
|
account: account
|
|
102
127
|
}
|
|
103
128
|
});
|
|
129
|
+
const resourceValue = {};
|
|
130
|
+
resourceValue[key] = `$var:${path}`;
|
|
104
131
|
await ResourceService.createResource({
|
|
105
132
|
workspace: $workspaceStore,
|
|
106
133
|
requestBody: {
|
|
107
134
|
resource_type,
|
|
108
135
|
path,
|
|
109
|
-
value:
|
|
110
|
-
description
|
|
111
|
-
is_oauth:
|
|
136
|
+
value: resourceValue,
|
|
137
|
+
description,
|
|
138
|
+
is_oauth: !manual
|
|
112
139
|
}
|
|
113
140
|
});
|
|
114
141
|
dispatch('refresh');
|
|
@@ -122,14 +149,6 @@ async function back() {
|
|
|
122
149
|
}
|
|
123
150
|
}
|
|
124
151
|
const dispatch = createEventDispatcher();
|
|
125
|
-
$: {
|
|
126
|
-
if ($workspaceStore) {
|
|
127
|
-
loadResources();
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
onMount(() => {
|
|
131
|
-
loadConnects();
|
|
132
|
-
});
|
|
133
152
|
</script>
|
|
134
153
|
|
|
135
154
|
<Modal
|
|
@@ -137,19 +156,35 @@ onMount(() => {
|
|
|
137
156
|
on:close={() => {
|
|
138
157
|
dispatch('close')
|
|
139
158
|
}}
|
|
159
|
+
on:open={() => {
|
|
160
|
+
loadConnects()
|
|
161
|
+
loadResources()
|
|
162
|
+
}}
|
|
140
163
|
>
|
|
141
|
-
<div slot="title">Connect an
|
|
164
|
+
<div slot="title">Connect an App</div>
|
|
142
165
|
<div slot="content">
|
|
143
166
|
{#if step == 1}
|
|
167
|
+
{#if resource_type && !connects[resource_type] && !connectsManual.find((x) => x[0] == resource_type)}
|
|
168
|
+
<div class="bg-red-100 border-l-4 border-red-600 text-orange-700 p-4" role="alert">
|
|
169
|
+
<p class="font-bold">No app integration for {resource_type}</p>
|
|
170
|
+
<p>
|
|
171
|
+
The resource type "{resource_type}" seems to not have an app integration. You can still
|
|
172
|
+
create this resource manually by closing this modal and pressing: "Add a resource". You
|
|
173
|
+
can also contribute to windmill and add it as an app integration if relevant.
|
|
174
|
+
</p>
|
|
175
|
+
</div>
|
|
176
|
+
{/if}
|
|
144
177
|
<PageHeader title="OAuth apps" />
|
|
145
178
|
<div class="grid sm:grid-cols-2 md:grid-cols-3 gap-x-2 gap-y-1 items-center mb-2">
|
|
146
|
-
{#each Object.entries(connects) as [key, values]}
|
|
179
|
+
{#each Object.entries(connects).sort((a, b) => a[0].localeCompare(b[0])) as [key, values]}
|
|
147
180
|
<button
|
|
148
181
|
class="px-4 h-8 {key == resource_type ? 'item-button-selected' : 'item-button'}"
|
|
149
182
|
on:click={() => {
|
|
150
183
|
manual = false
|
|
151
184
|
resource_type = key
|
|
152
|
-
scopes = values
|
|
185
|
+
scopes = values.scopes
|
|
186
|
+
extra_params = Object.entries(values.extra_params ?? {})
|
|
187
|
+
|
|
153
188
|
dispatch('click')
|
|
154
189
|
}}
|
|
155
190
|
>
|
|
@@ -175,11 +210,39 @@ onMount(() => {
|
|
|
175
210
|
on:click={() => {
|
|
176
211
|
scopes = scopes.concat('')
|
|
177
212
|
}}>Add item <Icon data={faPlus} class="mb-1" /></button
|
|
178
|
-
><span class="ml-2">{(scopes ?? []).length} item(s
|
|
213
|
+
><span class="ml-2">{(scopes ?? []).length} item{(scopes ?? []).length > 1 ? 's' : ''}</span
|
|
214
|
+
>
|
|
215
|
+
{:else}
|
|
216
|
+
<p class="italic text-sm">Pick an OAuth app and customize the scopes here</p>
|
|
217
|
+
{/if}
|
|
218
|
+
<PageHeader title="Extra Params" primary={false} />
|
|
219
|
+
{#if !manual && resource_type != ''}
|
|
220
|
+
{#each extra_params as [k, v], i}
|
|
221
|
+
<div class="flex flex-row max-w-md">
|
|
222
|
+
<input type="text" bind:value={k} />
|
|
223
|
+
<input type="text" bind:value={v} />
|
|
224
|
+
|
|
225
|
+
<button
|
|
226
|
+
class="default-button-secondary mx-6"
|
|
227
|
+
on:click={() => {
|
|
228
|
+
extra_params = extra_params.filter((el) => el[0] != k)
|
|
229
|
+
}}><Icon data={faMinus} class="mb-1" /></button
|
|
230
|
+
>
|
|
231
|
+
</div>
|
|
232
|
+
{/each}
|
|
233
|
+
<button
|
|
234
|
+
class="default-button-secondary mt-1"
|
|
235
|
+
on:click={() => {
|
|
236
|
+
extra_params.push(['', ''])
|
|
237
|
+
extra_params = extra_params
|
|
238
|
+
}}>Add item <Icon data={faPlus} class="mb-1" /></button
|
|
239
|
+
><span class="ml-2"
|
|
240
|
+
>{(extra_params ?? []).length} item{(extra_params ?? []).length > 1 ? 's' : ''}</span
|
|
241
|
+
>
|
|
179
242
|
{:else}
|
|
180
|
-
<p class="italic text-sm">Pick an
|
|
243
|
+
<p class="italic text-sm">Pick an OAuth app and customize the extra parameters here</p>
|
|
181
244
|
{/if}
|
|
182
|
-
<PageHeader title="
|
|
245
|
+
<PageHeader title="Non OAuth apps" />
|
|
183
246
|
<div class="grid sm:grid-cols-2 md:grid-cols-3 gap-x-2 gap-y-1 items-center mb-2">
|
|
184
247
|
{#each connectsManual as [key, instructions]}
|
|
185
248
|
<button
|
|
@@ -256,23 +319,6 @@ onMount(() => {
|
|
|
256
319
|
</Modal>
|
|
257
320
|
|
|
258
321
|
<style>
|
|
259
|
-
.item-button {
|
|
260
|
-
padding-top: 0.25rem;
|
|
261
|
-
padding-bottom: 0.25rem;
|
|
262
|
-
border-width: 1px;
|
|
263
|
-
border-radius: 0.125rem
|
|
264
|
-
}
|
|
265
|
-
.item-button-selected {
|
|
266
|
-
padding-top: 0.25rem;
|
|
267
|
-
padding-bottom: 0.25rem;
|
|
268
|
-
border-width: 1px;
|
|
269
|
-
--tw-border-opacity: 1;
|
|
270
|
-
border-color: rgb(59 130 246 / var(--tw-border-opacity));
|
|
271
|
-
--tw-bg-opacity: 1;
|
|
272
|
-
background-color: rgb(239 246 255 / var(--tw-bg-opacity));
|
|
273
|
-
border-radius: 0.125rem
|
|
274
|
-
}
|
|
275
|
-
|
|
276
322
|
.selected:hover {
|
|
277
323
|
border-radius: 0.375rem;
|
|
278
324
|
border-width: 1px;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
2
|
declare const __propDef: {
|
|
3
3
|
props: {
|
|
4
|
-
open?: (() => void) | undefined;
|
|
4
|
+
open?: ((rt?: string) => Promise<void>) | undefined;
|
|
5
5
|
openFromOauth?: ((rt: string) => void) | undefined;
|
|
6
6
|
};
|
|
7
7
|
events: {
|
|
@@ -16,7 +16,7 @@ export declare type AppConnectProps = typeof __propDef.props;
|
|
|
16
16
|
export declare type AppConnectEvents = typeof __propDef.events;
|
|
17
17
|
export declare type AppConnectSlots = typeof __propDef.slots;
|
|
18
18
|
export default class AppConnect extends SvelteComponentTyped<AppConnectProps, AppConnectEvents, AppConnectSlots> {
|
|
19
|
-
get open(): () => void
|
|
19
|
+
get open(): (rt?: string | undefined) => Promise<void>;
|
|
20
20
|
get openFromOauth(): (rt: string) => void;
|
|
21
21
|
}
|
|
22
22
|
export {};
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import Modal from './Modal.svelte';
|
|
3
3
|
import Tooltip from './Tooltip.svelte';
|
|
4
4
|
import json from 'svelte-highlight/languages/json';
|
|
5
|
-
import github from 'svelte-highlight/styles/github';
|
|
6
5
|
import { Highlight } from 'svelte-highlight';
|
|
7
6
|
import { ResourceService } from '../gen';
|
|
8
7
|
import { workspaceStore } from '../stores';
|
|
@@ -18,10 +17,6 @@ async function getResource(path) {
|
|
|
18
17
|
let asJson = JSON.stringify(value, null, 4);
|
|
19
18
|
</script>
|
|
20
19
|
|
|
21
|
-
<svelte:head>
|
|
22
|
-
{@html github}
|
|
23
|
-
</svelte:head>
|
|
24
|
-
|
|
25
20
|
<Modal bind:this={resourceViewer}>
|
|
26
21
|
<div slot="title">{resource.path}</div>
|
|
27
22
|
<div slot="content">
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
<script>import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
1
|
+
<script>import { slide } from 'svelte/transition';
|
|
2
|
+
import { faArrowRotateLeft, faChevronDown, faChevronUp, faMinus, faPlus } from '@fortawesome/free-solid-svg-icons';
|
|
3
|
+
import { setInputCat as computeInputCat } from '../utils';
|
|
4
|
+
import { Button, Tooltip } from 'flowbite-svelte';
|
|
5
|
+
import { createEventDispatcher } from 'svelte';
|
|
5
6
|
import Icon from 'svelte-awesome';
|
|
6
|
-
import
|
|
7
|
-
import ObjectTypeNarrowing from './ObjectTypeNarrowing.svelte';
|
|
8
|
-
import ObjectResourceInput from './ObjectResourceInput.svelte';
|
|
7
|
+
import Editor from './Editor.svelte';
|
|
9
8
|
import FieldHeader from './FieldHeader.svelte';
|
|
10
|
-
import
|
|
11
|
-
import
|
|
9
|
+
import ObjectResourceInput from './ObjectResourceInput.svelte';
|
|
10
|
+
import ObjectTypeNarrowing from './ObjectTypeNarrowing.svelte';
|
|
11
|
+
import ResourcePicker from './ResourcePicker.svelte';
|
|
12
|
+
import StringTypeNarrowing from './StringTypeNarrowing.svelte';
|
|
12
13
|
export let label = '';
|
|
13
14
|
export let value;
|
|
14
15
|
export let defaultValue = undefined;
|
|
15
16
|
export let description = '';
|
|
16
17
|
export let format = '';
|
|
17
|
-
export let contentEncoding =
|
|
18
|
+
export let contentEncoding = undefined;
|
|
18
19
|
export let type = undefined;
|
|
19
20
|
export let required = false;
|
|
20
21
|
export let pattern = undefined;
|
|
@@ -26,13 +27,13 @@ export let disabled = false;
|
|
|
26
27
|
export let editableSchema = false;
|
|
27
28
|
export let itemsType = undefined;
|
|
28
29
|
export let displayHeader = true;
|
|
29
|
-
export let numberAsString = false;
|
|
30
30
|
let seeEditable = enum_ != undefined || pattern != undefined;
|
|
31
31
|
const dispatch = createEventDispatcher();
|
|
32
32
|
$: minHeight = `${1 + minRows * 1.2}em`;
|
|
33
33
|
$: maxHeight = maxRows ? `${1 + maxRows * 1.2}em` : `auto`;
|
|
34
34
|
$: validateInput(pattern, value);
|
|
35
35
|
let error = '';
|
|
36
|
+
export let editor = undefined;
|
|
36
37
|
let rawValue = undefined;
|
|
37
38
|
$: {
|
|
38
39
|
if (rawValue) {
|
|
@@ -107,7 +108,8 @@ $: {
|
|
|
107
108
|
value = defaultValue;
|
|
108
109
|
}
|
|
109
110
|
}
|
|
110
|
-
export let inputCat =
|
|
111
|
+
export let inputCat = 'string';
|
|
112
|
+
$: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncoding);
|
|
111
113
|
</script>
|
|
112
114
|
|
|
113
115
|
<div class="flex flex-col w-full">
|
|
@@ -122,20 +124,18 @@ export let inputCat = computeInputCat(type, format, itemsType?.type, enum_, cont
|
|
|
122
124
|
on:click={() => {
|
|
123
125
|
seeEditable = !seeEditable
|
|
124
126
|
}}
|
|
125
|
-
>Customize argument<Icon
|
|
126
|
-
class="ml-2"
|
|
127
|
-
data={seeEditable ? faChevronUp : faChevronDown}
|
|
128
|
-
scale={0.7}
|
|
129
|
-
/></span
|
|
130
127
|
>
|
|
128
|
+
Customize argument
|
|
129
|
+
<Icon class="ml-2" data={seeEditable ? faChevronUp : faChevronDown} scale={0.7} />
|
|
130
|
+
</span>
|
|
131
131
|
|
|
132
132
|
{#if seeEditable}
|
|
133
133
|
<div transition:slide class="mt-2">
|
|
134
|
-
<label class="text-gray-700"
|
|
135
|
-
|
|
134
|
+
<label class="text-gray-700">
|
|
135
|
+
Description
|
|
136
136
|
<textarea rows="1" bind:value={description} placeholder="Edit description" />
|
|
137
137
|
{#if type == 'string' && !contentEncoding && format != 'date-time'}
|
|
138
|
-
<StringTypeNarrowing bind:format bind:pattern bind:enum_ />
|
|
138
|
+
<StringTypeNarrowing bind:format bind:pattern bind:enum_ bind:contentEncoding />
|
|
139
139
|
{:else if type == 'object'}
|
|
140
140
|
<ObjectTypeNarrowing bind:format />
|
|
141
141
|
{:else if type == 'array'}
|
|
@@ -163,8 +163,8 @@ export let inputCat = computeInputCat(type, format, itemsType?.type, enum_, cont
|
|
|
163
163
|
{error === '' ? '...' : error}
|
|
164
164
|
</div>
|
|
165
165
|
</div>
|
|
166
|
-
<div class="
|
|
167
|
-
{#if inputCat == 'number'
|
|
166
|
+
<div class="flex space-x-1">
|
|
167
|
+
{#if inputCat == 'number'}
|
|
168
168
|
<input
|
|
169
169
|
{disabled}
|
|
170
170
|
type="number"
|
|
@@ -188,40 +188,52 @@ export let inputCat = computeInputCat(type, format, itemsType?.type, enum_, cont
|
|
|
188
188
|
<span> Not set</span>
|
|
189
189
|
{/if}
|
|
190
190
|
{:else if inputCat == 'list'}
|
|
191
|
-
|
|
192
|
-
<div
|
|
193
|
-
{#
|
|
194
|
-
<
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
type
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
191
|
+
<div>
|
|
192
|
+
<div>
|
|
193
|
+
{#each value ?? [] as v}
|
|
194
|
+
<div class="flex flex-row max-w-md mt-1">
|
|
195
|
+
{#if itemsType?.type == 'number'}
|
|
196
|
+
<input type="number" bind:value={v} />
|
|
197
|
+
{:else if itemsType?.type == 'string' && itemsType?.contentEncoding == 'base64'}
|
|
198
|
+
<input
|
|
199
|
+
type="file"
|
|
200
|
+
class="my-6"
|
|
201
|
+
on:change={(x) => fileChanged(x, (val) => (v = val))}
|
|
202
|
+
multiple={false}
|
|
203
|
+
/>
|
|
204
|
+
{:else}
|
|
205
|
+
<input type="text" bind:value={v} />
|
|
206
|
+
{/if}
|
|
207
|
+
<button
|
|
208
|
+
class="default-button-secondary mx-6"
|
|
209
|
+
on:click={() => {
|
|
210
|
+
value = value.filter((el) => el != v)
|
|
211
|
+
if (value.length == 0) {
|
|
212
|
+
value = undefined
|
|
213
|
+
}
|
|
214
|
+
}}
|
|
215
|
+
>
|
|
216
|
+
<Icon data={faMinus} class="mb-1" />
|
|
217
|
+
</button>
|
|
218
|
+
</div>
|
|
219
|
+
{/each}
|
|
214
220
|
</div>
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
221
|
+
<button
|
|
222
|
+
class="default-button-secondary mt-1"
|
|
223
|
+
on:click={() => {
|
|
224
|
+
if (value == undefined) {
|
|
225
|
+
value = []
|
|
226
|
+
}
|
|
227
|
+
value = value.concat('')
|
|
228
|
+
}}
|
|
229
|
+
>
|
|
230
|
+
<Icon data={faPlus} class="mr-2" />
|
|
231
|
+
Add item
|
|
232
|
+
</button>
|
|
233
|
+
<span class="ml-2">
|
|
234
|
+
{(value ?? []).length} item{(value ?? []).length > 1 ? 's' : ''}
|
|
235
|
+
</span>
|
|
236
|
+
</div>
|
|
225
237
|
{:else if inputCat == 'resource-object'}
|
|
226
238
|
<ObjectResourceInput {format} bind:value />
|
|
227
239
|
{:else if inputCat == 'object'}
|
|
@@ -242,6 +254,17 @@ export let inputCat = computeInputCat(type, format, itemsType?.type, enum_, cont
|
|
|
242
254
|
</select>
|
|
243
255
|
{:else if inputCat == 'date'}
|
|
244
256
|
<input class="inline-block" type="datetime-local" bind:value />
|
|
257
|
+
{:else if inputCat == 'sql'}
|
|
258
|
+
<div class="border rounded mb-4 w-full border-gray-700">
|
|
259
|
+
<Editor
|
|
260
|
+
on:focus={() => dispatch('focus')}
|
|
261
|
+
on:blur={() => dispatch('blur')}
|
|
262
|
+
bind:this={editor}
|
|
263
|
+
lang="sql"
|
|
264
|
+
bind:code={value}
|
|
265
|
+
class="two-lines-editor"
|
|
266
|
+
/>
|
|
267
|
+
</div>
|
|
245
268
|
{:else if inputCat == 'base64'}
|
|
246
269
|
<input
|
|
247
270
|
type="file"
|
|
@@ -258,6 +281,8 @@ export let inputCat = computeInputCat(type, format, itemsType?.type, enum_, cont
|
|
|
258
281
|
/>
|
|
259
282
|
{:else if inputCat == 'string'}
|
|
260
283
|
<textarea
|
|
284
|
+
on:focus={() => dispatch('focus')}
|
|
285
|
+
on:blur={() => dispatch('blur')}
|
|
261
286
|
{disabled}
|
|
262
287
|
style="height: {minHeight}; max-height: {maxHeight}"
|
|
263
288
|
class="col-span-10 {valid
|
|
@@ -268,18 +293,20 @@ export let inputCat = computeInputCat(type, format, itemsType?.type, enum_, cont
|
|
|
268
293
|
on:input={() => dispatch('input', { rawValue: value, isRaw: false })}
|
|
269
294
|
/>
|
|
270
295
|
{/if}
|
|
271
|
-
{#if !required}
|
|
272
|
-
<
|
|
273
|
-
<
|
|
274
|
-
{disabled}
|
|
275
|
-
class="default-button-secondary items-center leading-4 py-0 my-px px-1 float-right"
|
|
296
|
+
{#if !required && inputCat != 'resource-object'}
|
|
297
|
+
<Tooltip placement="bottom" content="Reset to default value">
|
|
298
|
+
<Button
|
|
276
299
|
on:click={() => (value = undefined)}
|
|
277
|
-
|
|
300
|
+
{disabled}
|
|
301
|
+
color="alternative"
|
|
302
|
+
size="sm"
|
|
303
|
+
class="h-8"
|
|
278
304
|
>
|
|
279
|
-
|
|
305
|
+
<Icon data={faArrowRotateLeft} />
|
|
306
|
+
</Button>
|
|
307
|
+
</Tooltip>
|
|
280
308
|
{/if}
|
|
309
|
+
<slot name="actions" />
|
|
281
310
|
</div>
|
|
282
311
|
</div>
|
|
283
312
|
</div>
|
|
284
|
-
|
|
285
|
-
<style></style>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
2
|
import { type InputCat } from '../utils';
|
|
3
|
+
import Editor from './Editor.svelte';
|
|
3
4
|
declare const __propDef: {
|
|
4
5
|
props: {
|
|
5
6
|
label?: string | undefined;
|
|
@@ -7,7 +8,7 @@ declare const __propDef: {
|
|
|
7
8
|
defaultValue?: any;
|
|
8
9
|
description?: string | undefined;
|
|
9
10
|
format?: string | undefined;
|
|
10
|
-
contentEncoding?:
|
|
11
|
+
contentEncoding?: 'base64' | 'binary' | undefined;
|
|
11
12
|
type?: string | undefined;
|
|
12
13
|
required?: boolean | undefined;
|
|
13
14
|
pattern?: undefined | string;
|
|
@@ -22,16 +23,20 @@ declare const __propDef: {
|
|
|
22
23
|
contentEncoding?: "base64" | undefined;
|
|
23
24
|
} | undefined;
|
|
24
25
|
displayHeader?: boolean | undefined;
|
|
25
|
-
|
|
26
|
+
editor?: Editor | undefined;
|
|
26
27
|
evalValueToRaw?: (() => void) | undefined;
|
|
27
28
|
inputCat?: InputCat | undefined;
|
|
28
29
|
};
|
|
29
30
|
events: {
|
|
30
31
|
input: CustomEvent<any>;
|
|
32
|
+
focus: CustomEvent<any>;
|
|
33
|
+
blur: CustomEvent<any>;
|
|
31
34
|
} & {
|
|
32
35
|
[evt: string]: CustomEvent<any>;
|
|
33
36
|
};
|
|
34
|
-
slots: {
|
|
37
|
+
slots: {
|
|
38
|
+
actions: {};
|
|
39
|
+
};
|
|
35
40
|
};
|
|
36
41
|
export declare type ArgInputProps = typeof __propDef.props;
|
|
37
42
|
export declare type ArgInputEvents = typeof __propDef.events;
|
package/components/Button.svelte
CHANGED
|
@@ -56,13 +56,13 @@ const dispatch = createEventDispatcher();
|
|
|
56
56
|
.delete:hover,
|
|
57
57
|
.archive:hover {
|
|
58
58
|
--tw-bg-opacity: 1;
|
|
59
|
-
background-color: rgb(
|
|
59
|
+
background-color: rgb(224 36 36 / var(--tw-bg-opacity))
|
|
60
60
|
}
|
|
61
61
|
.delete,
|
|
62
62
|
.archive {
|
|
63
63
|
font-weight: 400;
|
|
64
64
|
--tw-text-opacity: 1;
|
|
65
|
-
color: rgb(
|
|
65
|
+
color: rgb(224 36 36 / var(--tw-text-opacity))
|
|
66
66
|
}
|
|
67
67
|
.delete:hover,
|
|
68
68
|
.archive:hover {
|
|
@@ -73,7 +73,7 @@ const dispatch = createEventDispatcher();
|
|
|
73
73
|
.archive {
|
|
74
74
|
border-radius: 0.25rem;
|
|
75
75
|
--tw-border-opacity: 1;
|
|
76
|
-
border-color: rgb(
|
|
76
|
+
border-color: rgb(224 36 36 / var(--tw-border-opacity))
|
|
77
77
|
}
|
|
78
78
|
.delete:hover,
|
|
79
79
|
.archive:hover {
|
|
@@ -85,7 +85,7 @@ const dispatch = createEventDispatcher();
|
|
|
85
85
|
.list:hover,
|
|
86
86
|
.share:hover {
|
|
87
87
|
--tw-bg-opacity: 1;
|
|
88
|
-
background-color: rgb(
|
|
88
|
+
background-color: rgb(63 131 248 / var(--tw-bg-opacity));
|
|
89
89
|
--tw-text-opacity: 1;
|
|
90
90
|
color: rgb(255 255 255 / var(--tw-text-opacity))
|
|
91
91
|
}</style>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<script>import { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons';
|
|
2
|
+
import Icon from 'svelte-awesome';
|
|
3
|
+
export let open = false;
|
|
4
|
+
export let text;
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<button class="text-gray-600 underline" on:click={() => (open = !open)}>
|
|
8
|
+
{text} <Icon data={open ? faChevronUp : faChevronDown} scale={0.5} />
|
|
9
|
+
</button>
|
|
10
|
+
{#if open}
|
|
11
|
+
<div><slot /></div>
|
|
12
|
+
{/if}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
open?: boolean | undefined;
|
|
5
|
+
text: string;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {
|
|
11
|
+
default: {};
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export declare type CollapseLinkProps = typeof __propDef.props;
|
|
15
|
+
export declare type CollapseLinkEvents = typeof __propDef.events;
|
|
16
|
+
export declare type CollapseLinkSlots = typeof __propDef.slots;
|
|
17
|
+
export default class CollapseLink extends SvelteComponentTyped<CollapseLinkProps, CollapseLinkEvents, CollapseLinkSlots> {
|
|
18
|
+
}
|
|
19
|
+
export {};
|