windmill-components 1.613.5 → 1.623.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/package/cancelable-promise-utils.js +4 -2
- package/package/components/ApiConnectForm.svelte +6 -0
- package/package/components/AppConnectDrawer.svelte +1 -0
- package/package/components/AppConnectInner.svelte +1 -0
- package/package/components/AuthSettings.svelte +3 -1
- package/package/components/BedrockCredentialsCheck.svelte +241 -0
- package/package/components/BedrockCredentialsCheck.svelte.d.ts +3 -0
- package/package/components/CenteredPage.svelte +2 -1
- package/package/components/CenteredPage.svelte.d.ts +1 -0
- package/package/components/CompareWorkspaces.svelte +74 -16
- package/package/components/DBManager.svelte +35 -31
- package/package/components/DBManager.svelte.d.ts +13 -3
- package/package/components/DBManagerContent.svelte +23 -62
- package/package/components/DBManagerContent.svelte.d.ts +37 -3
- package/package/components/DBManagerDrawer.svelte +7 -9
- package/package/components/DBTable.svelte +1 -1
- package/package/components/DBTable.svelte.d.ts +3 -1
- package/package/components/DBTableEditor.svelte +66 -49
- package/package/components/DBTableEditor.svelte.d.ts +1 -1
- package/package/components/DateInput.svelte +29 -35
- package/package/components/DateInput.svelte.d.ts +10 -11
- package/package/components/DedicatedWorkersSelector.svelte +569 -0
- package/package/components/DedicatedWorkersSelector.svelte.d.ts +8 -0
- package/package/components/DeployWorkspace.svelte +106 -29
- package/package/components/DropdownV2.svelte +2 -1
- package/package/components/DropdownV2.svelte.d.ts +1 -0
- package/package/components/Editor.svelte +1 -10
- package/package/components/FlowGraphViewer.svelte +5 -2
- package/package/components/FlowGraphViewer.svelte.d.ts +2 -0
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
- package/package/components/FlowStatusViewerInner.svelte +6 -3
- package/package/components/ForkWorkspaceBanner.svelte +16 -0
- package/package/components/InfiniteList.svelte +27 -20
- package/package/components/InfiniteList.svelte.d.ts +2 -0
- package/package/components/JobLoader.svelte.d.ts +1 -1
- package/package/components/Login.svelte +6 -0
- package/package/components/NextcloudSetting.svelte +1 -1
- package/package/components/OAuthSetting.svelte +12 -23
- package/package/components/PocketIdSetting.svelte +82 -0
- package/package/components/PocketIdSetting.svelte.d.ts +6 -0
- package/package/components/ResourceEditor.svelte +4 -4
- package/package/components/ResourcePicker.svelte +1 -0
- package/package/components/RunForm.svelte +9 -17
- package/package/components/RunForm.svelte.d.ts +0 -1
- package/package/components/RunsPage.svelte +34 -0
- package/package/components/SavedInputsPicker.svelte +1 -1
- package/package/components/SavedInputsV2.svelte +35 -36
- package/package/components/Section.svelte +1 -1
- package/package/components/Star.svelte +8 -12
- package/package/components/Star.svelte.d.ts +6 -19
- package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
- package/package/components/TimeAgo.svelte +49 -7
- package/package/components/TimeAgo.svelte.d.ts +1 -0
- package/package/components/Toast.svelte +5 -1
- package/package/components/WorkerGroup.svelte +35 -20
- package/package/components/WorkerGroup.svelte.d.ts +1 -0
- package/package/components/apps/components/display/InsertRowDrawerButton.svelte +1 -1
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +2 -1
- package/package/components/apps/components/display/dbtable/dbFeatures.d.ts +9 -0
- package/package/components/apps/components/display/dbtable/dbFeatures.js +32 -0
- package/package/components/apps/components/display/dbtable/metadata.d.ts +3 -3
- package/package/components/apps/components/display/dbtable/metadata.js +120 -130
- package/package/components/apps/components/display/dbtable/queries/alterTable.js +13 -5
- package/package/components/apps/components/display/dbtable/queries/alterTable.test.js +1 -1
- package/package/components/apps/components/display/dbtable/queries/createTable.js +2 -0
- package/package/components/apps/components/display/dbtable/queries/relationalKeys.d.ts +1 -3
- package/package/components/apps/components/display/dbtable/queries/relationalKeys.js +41 -42
- package/package/components/apps/components/display/dbtable/tableEditor.js +18 -0
- package/package/components/apps/components/display/dbtable/utils.d.ts +1 -8
- package/package/components/apps/components/display/dbtable/utils.js +27 -34
- package/package/components/apps/components/display/table/AppAggridTable.svelte +8 -0
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +9 -9
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte.d.ts +1 -1
- package/package/components/apps/components/inputs/AppMultiSelectV2.svelte +2 -4
- package/package/components/assets/AssetsDropdownButton.svelte +1 -1
- package/package/components/assets/AssetsUsageDrawer.svelte +98 -27
- package/package/components/assets/AssetsUsageDrawer.svelte.d.ts +5 -6
- package/package/components/assets/lib.d.ts +3 -2
- package/package/components/assets/lib.js +3 -1
- package/package/components/common/CloseButton.svelte +2 -1
- package/package/components/common/CloseButton.svelte.d.ts +1 -0
- package/package/components/common/badge/CountBadge.svelte +4 -3
- package/package/components/common/badge/CountBadge.svelte.d.ts +1 -0
- package/package/components/common/button/Button.svelte +1 -1
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +2 -1
- package/package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +1 -0
- package/package/components/common/drawer/Drawer.svelte +4 -1
- package/package/components/common/drawer/DrawerContent.svelte +6 -3
- package/package/components/common/drawer/DrawerContent.svelte.d.ts +1 -0
- package/package/components/common/modal/Modal2.svelte +1 -0
- package/package/components/common/table/AppRow.svelte +4 -1
- package/package/components/common/table/FlowRow.svelte +4 -1
- package/package/components/common/table/RawAppRow.svelte +4 -1
- package/package/components/common/table/Row.svelte +11 -21
- package/package/components/common/table/Row.svelte.d.ts +4 -20
- package/package/components/common/table/RowIcon.svelte +6 -2
- package/package/components/common/table/RowIcon.svelte.d.ts +1 -1
- package/package/components/common/table/ScriptRow.svelte +4 -1
- package/package/components/copilot/autocomplete/Autocompletor.d.ts +1 -1
- package/package/components/copilot/autocomplete/Autocompletor.js +4 -4
- package/package/components/copilot/autocomplete/request.js +13 -9
- package/package/components/copilot/chat/script/core.js +5 -4
- package/package/components/copilot/lib.js +2 -9
- package/package/components/copilot/utils.d.ts +5 -0
- package/package/components/copilot/utils.js +8 -0
- package/package/components/dbOps.d.ts +1 -1
- package/package/components/dbOps.js +2 -2
- package/package/components/details/DetailPageHeader.svelte +21 -7
- package/package/components/details/DetailPageHeader.svelte.d.ts +2 -1
- package/package/components/details/DetailPageLayout.svelte +10 -1
- package/package/components/details/DetailPageLayout.svelte.d.ts +1 -0
- package/package/components/flows/conversations/FlowConversationsSidebar.svelte +79 -77
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +1 -1
- package/package/components/graph/FlowGraphV2.svelte +7 -1
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +41 -24
- package/package/components/home/ItemsList.svelte +2 -1
- package/package/components/home/treeViewUtils.js +1 -1
- package/package/components/icons/NextcloudIcon.svelte +3 -2
- package/package/components/icons/NextcloudIcon.svelte.d.ts +2 -0
- package/package/components/icons/PocketIdIcon.svelte +9 -0
- package/package/components/icons/PocketIdIcon.svelte.d.ts +9 -0
- package/package/components/icons/index.js +3 -1
- package/package/components/instanceSettings.d.ts +1 -1
- package/package/components/instanceSettings.js +1 -0
- package/package/components/raw_apps/RawAppDataTableDrawer.svelte +1 -3
- package/package/components/raw_apps/datatableUtils.svelte.js +1 -1
- package/package/components/schema/EditableSchemaWrapper.svelte +2 -2
- package/package/components/select/MultiSelect.svelte +1 -1
- package/package/components/select/SelectDropdown.svelte +15 -3
- package/package/components/settings/ChangeWorkspaceId.svelte +8 -7
- package/package/components/settings/CreateToken.svelte +3 -3
- package/package/components/settings/WorkspaceUserSettings.svelte +6 -5
- package/package/components/sidebar/MenuButton.svelte +13 -5
- package/package/components/sidebar/MultiplayerMenu.svelte +2 -2
- package/package/components/sidebar/SidebarContent.svelte +32 -4
- package/package/components/sidebar/UserMenu.svelte +2 -2
- package/package/components/table/DataTable.svelte +6 -2
- package/package/components/table/DataTable.svelte.d.ts +1 -0
- package/package/components/triggers/AddTriggersButton.svelte +17 -4
- package/package/components/triggers/TriggersEditor.svelte +4 -0
- package/package/components/triggers/TriggersWrapper.svelte +14 -0
- package/package/components/triggers/native/NativeTriggerEditor.svelte +379 -0
- package/package/components/triggers/native/NativeTriggerEditor.svelte.d.ts +26 -0
- package/package/components/triggers/native/NativeTriggerTable.svelte +155 -0
- package/package/components/triggers/native/NativeTriggerTable.svelte.d.ts +16 -0
- package/package/components/triggers/native/NativeTriggersPanel.svelte +40 -0
- package/package/components/triggers/native/NativeTriggersPanel.svelte.d.ts +15 -0
- package/package/components/triggers/native/services/nextcloud/NextcloudTriggerForm.svelte +104 -0
- package/package/components/triggers/native/services/nextcloud/NextcloudTriggerForm.svelte.d.ts +18 -0
- package/package/components/triggers/native/utils.d.ts +74 -0
- package/package/components/triggers/native/utils.js +152 -0
- package/package/components/triggers/triggers.svelte.d.ts +2 -1
- package/package/components/triggers/triggers.svelte.js +36 -8
- package/package/components/triggers/utils.js +18 -5
- package/package/components/triggers.d.ts +1 -1
- package/package/components/workspaceSettings/AISettings.svelte +2 -1
- package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte +1 -0
- package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +3 -1
- package/package/components/workspaceSettings/DataTableSettings.svelte +2 -1
- package/package/components/workspaceSettings/DucklakeSettings.svelte +8 -3
- package/package/components/workspaceSettings/OAuthClientConfig.svelte +180 -0
- package/package/components/workspaceSettings/OAuthClientConfig.svelte.d.ts +14 -0
- package/package/components/workspaceSettings/StorageSettings.svelte +7 -2
- package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +302 -0
- package/package/components/workspaceSettings/WorkspaceIntegrations.svelte.d.ts +3 -0
- package/package/consts.js +0 -2
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +384 -3
- package/package/gen/schemas.gen.js +390 -3
- package/package/gen/services.gen.d.ts +200 -13
- package/package/gen/services.gen.js +383 -24
- package/package/gen/types.gen.d.ts +884 -94
- package/package/hub.js +2 -2
- package/package/hubPaths.json +1 -1
- package/package/refreshUser.d.ts +5 -1
- package/package/refreshUser.js +20 -30
- package/package/storeUtils.js +2 -0
- package/package/svelte5Utils.svelte.d.ts +61 -0
- package/package/svelte5Utils.svelte.js +170 -0
- package/package/utils.js +3 -0
- package/package.json +4 -6
- package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +0 -2
- package/dist/sharedUtils/base.d.ts +0 -1
- package/dist/sharedUtils/cloud.d.ts +0 -1
- package/dist/sharedUtils/common.d.ts +0 -111
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +0 -5
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +0 -5
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +0 -5
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +0 -13
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +0 -11
- package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +0 -95
- package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +0 -6
- package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +0 -7
- package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +0 -33
- package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +0 -10
- package/dist/sharedUtils/components/apps/editor/component/components.d.ts +0 -5371
- package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +0 -3
- package/dist/sharedUtils/components/apps/editor/component/index.d.ts +0 -3
- package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +0 -7
- package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +0 -3
- package/dist/sharedUtils/components/apps/gridUtils.d.ts +0 -14
- package/dist/sharedUtils/components/apps/inputType.d.ts +0 -178
- package/dist/sharedUtils/components/apps/rx.d.ts +0 -29
- package/dist/sharedUtils/components/apps/sharedTypes.d.ts +0 -21
- package/dist/sharedUtils/components/apps/types.d.ts +0 -274
- package/dist/sharedUtils/components/assets/lib.d.ts +0 -25
- package/dist/sharedUtils/components/common/alert/model.d.ts +0 -2
- package/dist/sharedUtils/components/common/badge/model.d.ts +0 -8
- package/dist/sharedUtils/components/common/button/model.d.ts +0 -45
- package/dist/sharedUtils/components/common/fileInput/model.d.ts +0 -1
- package/dist/sharedUtils/components/common/index.d.ts +0 -24
- package/dist/sharedUtils/components/common/skeleton/model.d.ts +0 -21
- package/dist/sharedUtils/components/dbTypes.d.ts +0 -14
- package/dist/sharedUtils/components/diff_drawer.d.ts +0 -26
- package/dist/sharedUtils/components/ducklake.d.ts +0 -1
- package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +0 -7
- package/dist/sharedUtils/components/icons/index.d.ts +0 -101
- package/dist/sharedUtils/components/random_positive_adjetive.d.ts +0 -1
- package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +0 -10
- package/dist/sharedUtils/components/raw_apps/utils.d.ts +0 -15
- package/dist/sharedUtils/components/triggers/email/utils.d.ts +0 -4
- package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/http/utils.d.ts +0 -11
- package/dist/sharedUtils/components/triggers/kafka/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/nats/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +0 -8
- package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +0 -32
- package/dist/sharedUtils/components/triggers/utils.d.ts +0 -80
- package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers.d.ts +0 -20
- package/dist/sharedUtils/gen/core/ApiError.d.ts +0 -10
- package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +0 -13
- package/dist/sharedUtils/gen/core/ApiResult.d.ts +0 -7
- package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +0 -26
- package/dist/sharedUtils/gen/core/OpenAPI.d.ts +0 -27
- package/dist/sharedUtils/gen/core/request.d.ts +0 -29
- package/dist/sharedUtils/gen/index.d.ts +0 -6
- package/dist/sharedUtils/gen/schemas.gen.d.ts +0 -7036
- package/dist/sharedUtils/gen/services.gen.d.ts +0 -6047
- package/dist/sharedUtils/gen/types.gen.d.ts +0 -21881
- package/dist/sharedUtils/history.svelte.d.ts +0 -9
- package/dist/sharedUtils/hub.d.ts +0 -49
- package/dist/sharedUtils/jsr.json +0 -6
- package/dist/sharedUtils/lib.d.ts +0 -5
- package/dist/sharedUtils/lib.es.js +0 -1588
- package/dist/sharedUtils/package.json +0 -12
- package/dist/sharedUtils/schema.d.ts +0 -3
- package/dist/sharedUtils/stores.d.ts +0 -97
- package/dist/sharedUtils/svelte5Utils.svelte.d.ts +0 -80
- package/dist/sharedUtils/toast.d.ts +0 -8
- package/dist/sharedUtils/utils.d.ts +0 -265
|
@@ -75,7 +75,6 @@ const selectedId = $derived(selectionManager.getSelectedId());
|
|
|
75
75
|
const noteEditorContext = getNoteEditorContext();
|
|
76
76
|
// Function to calculate extra gap needed for notes below the lowest flow nodes
|
|
77
77
|
function calculateNoteGap(notes) {
|
|
78
|
-
console.log('calculateNoteGap', notes);
|
|
79
78
|
if (!notes || notes.length === 0) {
|
|
80
79
|
return 0;
|
|
81
80
|
}
|
|
@@ -404,6 +403,9 @@ async function updateStores() {
|
|
|
404
403
|
...graph.edges
|
|
405
404
|
];
|
|
406
405
|
await tick();
|
|
406
|
+
updateHeight();
|
|
407
|
+
}
|
|
408
|
+
function updateHeight() {
|
|
407
409
|
if (nodes.length === 0) {
|
|
408
410
|
height = minHeight;
|
|
409
411
|
}
|
|
@@ -413,6 +415,10 @@ async function updateStores() {
|
|
|
413
415
|
height = Math.max(maxBottom - minY, minHeight);
|
|
414
416
|
}
|
|
415
417
|
}
|
|
418
|
+
$effect(() => {
|
|
419
|
+
minHeight;
|
|
420
|
+
untrack(() => updateHeight());
|
|
421
|
+
});
|
|
416
422
|
const nodeTypes = {
|
|
417
423
|
input2: InputNode,
|
|
418
424
|
module: ModuleNode,
|
|
@@ -11,28 +11,38 @@ import { twMerge } from 'tailwind-merge';
|
|
|
11
11
|
import SchedulePollIcon from '../../../icons/SchedulePollIcon.svelte';
|
|
12
12
|
import TriggerLabel from '../../../triggers/TriggerLabel.svelte';
|
|
13
13
|
import CountBadge from '../../../common/badge/CountBadge.svelte';
|
|
14
|
+
import NextcloudIcon from '../../../icons/NextcloudIcon.svelte';
|
|
14
15
|
const { triggersState, triggersCount } = getContext('TriggerContext');
|
|
15
16
|
let { selected, showOnlyWithCount,
|
|
16
17
|
// @ts-ignore - This is an output-only prop used with bind:
|
|
17
18
|
numberOfTriggers = $bindable(0), small = true, vertical = false, limit, showDraft = true, onSelect } = $props();
|
|
18
19
|
let menuOpen = $state(false);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
20
|
+
let availableNativeServices = $state([]);
|
|
21
|
+
let triggerTypeConfig = $derived(() => {
|
|
22
|
+
const baseConfig = {
|
|
23
|
+
webhook: { icon: Webhook, countKey: 'webhook_count' },
|
|
24
|
+
schedule: { icon: Calendar, countKey: 'schedule_count' },
|
|
25
|
+
http: { icon: Route, countKey: 'http_routes_count' },
|
|
26
|
+
websocket: { icon: Unplug, countKey: 'websocket_count' },
|
|
27
|
+
postgres: { icon: Database, countKey: 'postgres_count' },
|
|
28
|
+
kafka: { icon: KafkaIcon, countKey: 'kafka_count', disabled: !$enterpriseLicense },
|
|
29
|
+
default_email: { icon: Mail, countKey: 'default_email_count' },
|
|
30
|
+
email: { icon: Mail, countKey: 'email_count' },
|
|
31
|
+
nats: { icon: NatsIcon, countKey: 'nats_count', disabled: !$enterpriseLicense },
|
|
32
|
+
mqtt: { icon: MqttIcon, countKey: 'mqtt_count', disabled: !$enterpriseLicense },
|
|
33
|
+
sqs: { icon: AwsIcon, countKey: 'sqs_count', disabled: !$enterpriseLicense },
|
|
34
|
+
gcp: { icon: GoogleCloudIcon, countKey: 'gcp_count', disabled: !$enterpriseLicense },
|
|
35
|
+
poll: { icon: SchedulePollIcon },
|
|
36
|
+
cli: { icon: Terminal },
|
|
37
|
+
nextcloud: { icon: NextcloudIcon, countKey: 'nextcloud_count' }
|
|
38
|
+
};
|
|
39
|
+
// Add native trigger services that are available
|
|
40
|
+
for (const { service, icon } of availableNativeServices) {
|
|
41
|
+
baseConfig[service] = { icon };
|
|
42
|
+
}
|
|
43
|
+
return baseConfig;
|
|
44
|
+
});
|
|
45
|
+
let allTypes = $derived([
|
|
36
46
|
'webhook',
|
|
37
47
|
'schedule',
|
|
38
48
|
'http',
|
|
@@ -46,8 +56,9 @@ const allTypes = [
|
|
|
46
56
|
'gcp',
|
|
47
57
|
'email',
|
|
48
58
|
'poll',
|
|
49
|
-
'cli'
|
|
50
|
-
|
|
59
|
+
'cli',
|
|
60
|
+
'nextcloud'
|
|
61
|
+
]);
|
|
51
62
|
function camelCaseToWords(s) {
|
|
52
63
|
const result = s.replace(/([A-Z])/g, ' $1');
|
|
53
64
|
return result.charAt(0).toUpperCase() + result.slice(1).toLowerCase();
|
|
@@ -77,10 +88,10 @@ let allTriggerTypes = $derived.by(() => {
|
|
|
77
88
|
const types = !noTriggers ? Object.keys(triggersGrouped) : allTypes;
|
|
78
89
|
//filter out types if showOnlyTriggersWithCount is true and there are no triggers for that type
|
|
79
90
|
return types.filter((type) => (!showOnlyTriggersWithCount ||
|
|
80
|
-
((triggerTypeConfig[type]
|
|
81
|
-
($triggersCount?.[triggerTypeConfig[type].countKey] ?? 0)) ||
|
|
91
|
+
((triggerTypeConfig()[type]?.countKey &&
|
|
92
|
+
($triggersCount?.[triggerTypeConfig()[type].countKey] ?? 0)) ||
|
|
82
93
|
0) > 0) &&
|
|
83
|
-
!triggerTypeConfig[type]
|
|
94
|
+
!triggerTypeConfig()[type]?.disabled);
|
|
84
95
|
});
|
|
85
96
|
let triggersToDisplay = $derived(limit ? allTriggerTypes.slice(0, limit) : allTriggerTypes);
|
|
86
97
|
let extraTriggers = $derived(limit && allTriggerTypes.length > limit
|
|
@@ -187,7 +198,10 @@ $effect(() => {
|
|
|
187
198
|
</Menubar>
|
|
188
199
|
|
|
189
200
|
{#snippet triggerButton({ type, isSelected, meltElement = undefined, singleItem = false })}
|
|
190
|
-
{@const { icon: SvelteComponent, countKey } = triggerTypeConfig[type]
|
|
201
|
+
{@const { icon: SvelteComponent, countKey } = triggerTypeConfig()[type] || {
|
|
202
|
+
icon: Database,
|
|
203
|
+
countKey: undefined
|
|
204
|
+
}}
|
|
191
205
|
|
|
192
206
|
<MeltButton
|
|
193
207
|
aiId={`trigger-button-${type}`}
|
|
@@ -228,7 +242,10 @@ $effect(() => {
|
|
|
228
242
|
{/snippet}
|
|
229
243
|
|
|
230
244
|
{#snippet simpleTriggerItem({ item, type })}
|
|
231
|
-
{@const { icon: SvelteComponent, countKey } = triggerTypeConfig[type]
|
|
245
|
+
{@const { icon: SvelteComponent, countKey } = triggerTypeConfig()[type] || {
|
|
246
|
+
icon: Database,
|
|
247
|
+
countKey: undefined
|
|
248
|
+
}}
|
|
232
249
|
<MenuItem {item} class={itemClass}>
|
|
233
250
|
<div class="flex flex-row items-center gap-2">
|
|
234
251
|
<SvelteComponent size={14} />
|
|
@@ -46,7 +46,7 @@ export function groupItems(items) {
|
|
|
46
46
|
if ('folderName' in a && 'username' in b) {
|
|
47
47
|
return 1;
|
|
48
48
|
}
|
|
49
|
-
return (a['username'] ?? a['folderName']).localeCompare(b['username'] ?? b['folderName']);
|
|
49
|
+
return (a['username'] ?? a['folderName'] ?? '').localeCompare(b['username'] ?? b['folderName']);
|
|
50
50
|
});
|
|
51
51
|
sortGroup(root);
|
|
52
52
|
return root;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts">"use strict";
|
|
2
|
-
let { size = undefined, height: heightProp = 24, width: widthProp = 24 } = $props();
|
|
2
|
+
let { size = undefined, height: heightProp = 24, width: widthProp = 24, color = undefined, class: clazz = '' } = $props();
|
|
3
3
|
const { width, height } = $derived(size ? { width: size, height: size } : { width: widthProp, height: heightProp });
|
|
4
4
|
</script>
|
|
5
5
|
|
|
@@ -9,7 +9,8 @@ const { width, height } = $derived(size ? { width: size, height: size } : { widt
|
|
|
9
9
|
{width}
|
|
10
10
|
{height}
|
|
11
11
|
xmlns="http://www.w3.org/2000/svg"
|
|
12
|
-
|
|
12
|
+
class={clazz}
|
|
13
|
+
fill={color ?? 'currentColor'}
|
|
13
14
|
>
|
|
14
15
|
<path
|
|
15
16
|
d="M12.018 6.537c-2.5 0-4.6 1.712-5.241 4.015-.56-1.232-1.793-2.105-3.225-2.105A3.569 3.569 0 0 0 0 12a3.569 3.569 0 0 0 3.552 3.553c1.432 0 2.664-.874 3.224-2.106.641 2.304 2.742 4.016 5.242 4.016 2.487 0 4.576-1.693 5.231-3.977.569 1.21 1.783 2.067 3.198 2.067A3.568 3.568 0 0 0 24 12a3.569 3.569 0 0 0-3.553-3.553c-1.416 0-2.63.858-3.199 2.067-.654-2.284-2.743-3.978-5.23-3.977zm0 2.085c1.878 0 3.378 1.5 3.378 3.378 0 1.878-1.5 3.378-3.378 3.378A3.362 3.362 0 0 1 8.641 12c0-1.878 1.5-3.378 3.377-3.378zm-8.466 1.91c.822 0 1.467.645 1.467 1.468s-.644 1.467-1.467 1.468A1.452 1.452 0 0 1 2.085 12c0-.823.644-1.467 1.467-1.467zm16.895 0c.823 0 1.468.645 1.468 1.468s-.645 1.468-1.468 1.468A1.452 1.452 0 0 1 18.98 12c0-.823.644-1.467 1.467-1.467z"
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<script lang="ts">"use strict";
|
|
2
|
+
let { size = undefined, height: heightProp = 24, width: widthProp = 24, class: clazz = '' } = $props();
|
|
3
|
+
const { width, height } = $derived(size ? { width: size, height: size } : { width: widthProp, height: heightProp });
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" {width} {height} class={clazz}>
|
|
7
|
+
<circle cx="256" cy="256" r="256" fill="#fff"/>
|
|
8
|
+
<path d="M268.6 102.4c64.4 0 116.8 52.4 116.8 116.7 0 25.3-8 49.4-23 69.6-14.8 19.9-35 34.3-58.4 41.7l-6.5 2-15.5-76.2 4.3-2c14-6.7 23-21.1 23-36.6 0-22.4-18.2-40.6-40.6-40.6S228 195.2 228 217.6c0 15.5 9 29.8 23 36.6l4.2 2-25 153.4h-69.5V102.4z" fill="#191919"/>
|
|
9
|
+
</svg>
|
|
@@ -103,6 +103,7 @@ import ApifyIcon from './ApifyIcon.svelte';
|
|
|
103
103
|
import McpIcon from './McpIcon.svelte';
|
|
104
104
|
import SageIcon from './SageIcon.svelte';
|
|
105
105
|
import ZohoIcon from './ZohoIcon.svelte';
|
|
106
|
+
import PocketIdIcon from './PocketIdIcon.svelte';
|
|
106
107
|
export const APP_TO_ICON_COMPONENT = {
|
|
107
108
|
postgresql: PostgresIcon,
|
|
108
109
|
mysql: Mysql,
|
|
@@ -210,6 +211,7 @@ export const APP_TO_ICON_COMPONENT = {
|
|
|
210
211
|
mqtt: MqttIcon,
|
|
211
212
|
apify: ApifyIcon,
|
|
212
213
|
mcp: McpIcon,
|
|
213
|
-
zoho: ZohoIcon
|
|
214
|
+
zoho: ZohoIcon,
|
|
215
|
+
pocketid: PocketIdIcon
|
|
214
216
|
}; // to generate correct svelte package types
|
|
215
217
|
export { AirtableIcon, DbIcon, DiscordIcon, GcalIcon, GCloudIcon, GdriveIcon, GithubIcon, GitlabIcon, GmailIcon, GSheetsIcon, HttpIcon, Mail, MastodonIcon, MatrixIcon, Mysql, PostgresIcon, S3Icon, Slack, TogglIcon, WindmillIcon, WindmillIcon2, SchedulePollIcon, MailchimpIcon, SendgridIcon, LinkedinIcon, HubspotIcon, TelegramIcon, StripeIcon, DatadogIcon, FunkwhaleIcon, GdocsIcon, FaunadbIcon, ClickhouseIcon, OpenaiIcon, AwsIcon, BcryptIcon, GoogleIcon, HackernewsIcon, MongodbIcon, RedditIcon, SupabaseIcon, WebdavIcon, ZammadIcon, NextcloudIcon, SendflakeIcon, SurrealdbIcon, ActivitypubIcon, AwsEcrIcon, CalcomIcon, ClickupIcon, CloudflareIcon, FirebaseIcon, GoogleFormsIcon, JiraIcon, NotionIcon, PineconeIcon, RssIcon, ShopifyIcon, TypeformIcon, BigQueryIcon, OracleDBIcon, GraphqlIcon, NocoDbIcon, AzureIcon, MicrosoftIcon, OktaIcon, Auth0Icon, AuthentikIcon, AutheliaIcon, KanidmIcon, AsanaIcon, BitbucketIcon, DynatraceIcon, EdgeDbIcon, GitIcon, ZendeskIcon, TwilioIcon, TrelloIcon, ResendIcon, PushoverIcon, QuickbooksIcon, MsTeamsIcon, MailgunIcon, IpinfoIcon, GoogleCloudIcon, CaCertificate, CurrencyApiIcon, VismaIcon, JumpCloudIcon, KeycloakIcon, ZitadelIcon, XeroIcon, KafkaIcon, NatsIcon, MqttIcon, ApifyIcon, McpIcon, ZohoIcon };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ButtonType } from './common/button/model';
|
|
2
|
-
export declare const OTEL_TRACING_PROXY_LANGUAGES: readonly ["python3", "deno", "bun", "go", "bash", "rust", "csharp", "nu", "ruby"];
|
|
2
|
+
export declare const OTEL_TRACING_PROXY_LANGUAGES: readonly ["nativets", "python3", "deno", "bun", "go", "bash", "rust", "csharp", "nu", "ruby"];
|
|
3
3
|
export interface Setting {
|
|
4
4
|
label: string;
|
|
5
5
|
description?: string;
|
|
@@ -14,7 +14,6 @@ let selectedDatatable = $state(undefined);
|
|
|
14
14
|
// For DB manager
|
|
15
15
|
let dbManagerContent = $state();
|
|
16
16
|
let hasReplResult = $state(false);
|
|
17
|
-
let isRefreshing = $state(false);
|
|
18
17
|
let windowWidth = $state(window.innerWidth);
|
|
19
18
|
let expand = $state(false);
|
|
20
19
|
// Multi-select mode: selected tables
|
|
@@ -136,7 +135,6 @@ const canAdd = $derived(selectedDatatable && selectedTables.length > 0);
|
|
|
136
135
|
bind:this={dbManagerContent}
|
|
137
136
|
input={dbInput}
|
|
138
137
|
bind:hasReplResult
|
|
139
|
-
bind:isRefreshing
|
|
140
138
|
bind:selectedSchemaKey
|
|
141
139
|
bind:selectedTableKey
|
|
142
140
|
multiSelectMode={true}
|
|
@@ -184,7 +182,7 @@ const canAdd = $derived(selectedDatatable && selectedTables.length > 0);
|
|
|
184
182
|
</Button>
|
|
185
183
|
|
|
186
184
|
<Button
|
|
187
|
-
loading={
|
|
185
|
+
loading={dbManagerContent?.isLoading() ?? false}
|
|
188
186
|
on:click={() => dbManagerContent?.refresh()}
|
|
189
187
|
startIcon={{ icon: RefreshCcw }}
|
|
190
188
|
size="xs"
|
|
@@ -36,7 +36,7 @@ export function createSchemasResource(getDatatable) {
|
|
|
36
36
|
let dbSchema = schemas[resourcePath];
|
|
37
37
|
if (!dbSchema) {
|
|
38
38
|
try {
|
|
39
|
-
await getDbSchemas('postgresql', resourcePath, workspace,
|
|
39
|
+
schemas[resourcePath] = await getDbSchemas('postgresql', resourcePath, workspace, (msg) => console.error('Schema error:', msg));
|
|
40
40
|
dbSchema = get(dbSchemas)[resourcePath];
|
|
41
41
|
}
|
|
42
42
|
catch (e) {
|
|
@@ -111,9 +111,9 @@ let suggestedFileExtensions = $state([
|
|
|
111
111
|
{#if resourceIsTextFile}
|
|
112
112
|
<label
|
|
113
113
|
for="format-extension"
|
|
114
|
-
class="text-
|
|
114
|
+
class="text-xs font-semibold text-emphasis whitespace-nowrap flex items-center gap-4"
|
|
115
115
|
>
|
|
116
|
-
File extension
|
|
116
|
+
File extension:
|
|
117
117
|
<Select
|
|
118
118
|
autofocus
|
|
119
119
|
items={safeSelectItems(suggestedFileExtensions)}
|
|
@@ -90,7 +90,7 @@ export function getFilteredInputText() {
|
|
|
90
90
|
{#if allowClear && !hideMainClearBtn && !!value?.length}
|
|
91
91
|
<CloseButton
|
|
92
92
|
noBg
|
|
93
|
-
class="
|
|
93
|
+
class="ml-2 remove-all bg-transparent text-hint"
|
|
94
94
|
small
|
|
95
95
|
on:close={(e) => (clearValue(), e.stopPropagation())}
|
|
96
96
|
/>
|
|
@@ -3,6 +3,8 @@ import ConditionalPortal from '../common/drawer/ConditionalPortal.svelte';
|
|
|
3
3
|
import { untrack } from 'svelte';
|
|
4
4
|
import { twMerge } from 'tailwind-merge';
|
|
5
5
|
import { PlusIcon } from 'lucide-svelte';
|
|
6
|
+
import { useReducedMotion } from '../../svelte5Utils.svelte';
|
|
7
|
+
import { watch } from 'runed';
|
|
6
8
|
let { processedItems: _processedItems, value, filterText, listAutoWidth = true, disabled, disablePortal = false, open, noItemsMsg = 'No items found', class: className = '', ulClass = '', itemLabelWrapperClasses = '', itemButtonWrapperClasses = '', header, getInputRect, onSelectValue, startSnippet, endSnippet, bottomSnippet } = $props();
|
|
7
9
|
let processedItems = $derived(!filterText
|
|
8
10
|
? _processedItems
|
|
@@ -10,6 +12,7 @@ let processedItems = $derived(!filterText
|
|
|
10
12
|
let listEl = $state();
|
|
11
13
|
let dropdownPos = $state(computeDropdownPos());
|
|
12
14
|
let keyArrowPos = $state();
|
|
15
|
+
let reducedMotion = useReducedMotion();
|
|
13
16
|
function computeDropdownPos() {
|
|
14
17
|
if (!getInputRect || !listEl)
|
|
15
18
|
return { width: 0, height: 0, x: 0, y: 0, isBelow: true };
|
|
@@ -47,13 +50,20 @@ $effect(() => {
|
|
|
47
50
|
// Also CSS transitions are smoother because they do not rely on JS / animation frames
|
|
48
51
|
let uiState = $state({ domExists: open, visible: open, timeout: null });
|
|
49
52
|
let initial = true;
|
|
50
|
-
|
|
51
|
-
let isOpen = open && !disabled;
|
|
53
|
+
watch(() => open && !disabled, (isOpen) => {
|
|
52
54
|
untrack(() => {
|
|
53
55
|
if (initial) {
|
|
54
56
|
initial = false;
|
|
55
57
|
return;
|
|
56
58
|
}
|
|
59
|
+
if (reducedMotion.val) {
|
|
60
|
+
uiState = {
|
|
61
|
+
domExists: open && !disabled,
|
|
62
|
+
visible: open && !disabled,
|
|
63
|
+
timeout: null
|
|
64
|
+
};
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
57
67
|
if (uiState.timeout)
|
|
58
68
|
clearTimeout(uiState.timeout);
|
|
59
69
|
uiState = {
|
|
@@ -102,6 +112,7 @@ $effect(() => {
|
|
|
102
112
|
{#if uiState.domExists}
|
|
103
113
|
<div
|
|
104
114
|
class={twMerge(
|
|
115
|
+
open ? 'select-dropdown-open' : 'select-dropdown-closed',
|
|
105
116
|
disablePortal ? 'absolute z-[5002]' : 'fixed z-[10000]',
|
|
106
117
|
'text-primary text-sm select-none',
|
|
107
118
|
dropdownPos.isBelow ? '' : 'flex flex-col justify-end',
|
|
@@ -114,7 +125,8 @@ $effect(() => {
|
|
|
114
125
|
>
|
|
115
126
|
<div
|
|
116
127
|
class={twMerge(
|
|
117
|
-
'overflow-clip rounded-md drop-shadow-base
|
|
128
|
+
'overflow-clip rounded-md drop-shadow-base',
|
|
129
|
+
!reducedMotion.val ? 'transition-height' : '',
|
|
118
130
|
dropdownPos.isBelow ? '' : 'flex flex-col justify-end'
|
|
119
131
|
)}
|
|
120
132
|
style="height: {uiState.visible ? dropdownPos.height : 0}px;"
|
|
@@ -38,7 +38,7 @@ async function renameWorkspace() {
|
|
|
38
38
|
}
|
|
39
39
|
});
|
|
40
40
|
open = false;
|
|
41
|
-
sendUserToast(`
|
|
41
|
+
sendUserToast(`Moved workspace to ${newName}. Old workspace archived. Reloading...`);
|
|
42
42
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
43
43
|
window.location.href = '/workspace_settings?tab=general&workspace=' + newId;
|
|
44
44
|
}
|
|
@@ -76,12 +76,13 @@ export let open = false;
|
|
|
76
76
|
|
|
77
77
|
<Modal bind:open title="Change workspace ID">
|
|
78
78
|
<div class="flex flex-col gap-4">
|
|
79
|
-
<Alert type="
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
79
|
+
<Alert type="warning" title="What happens">
|
|
80
|
+
<ul class="list-disc list-inside text-xs mt-1 space-y-1">
|
|
81
|
+
<li>All content (scripts, flows, apps, resources, etc.) moves to the new ID</li>
|
|
82
|
+
<li>Old workspace is archived with completed jobs, logs, and audit history</li>
|
|
83
|
+
<li>Running jobs will be canceled</li>
|
|
84
|
+
</ul>
|
|
85
|
+
<p class="text-xs mt-2">Remember to update webhook URLs and CLI sync config afterward.</p>
|
|
85
86
|
</Alert>
|
|
86
87
|
<p class="text-secondary text-xs"
|
|
87
88
|
>Current ID <br /> <span class="text-emphasis">{$workspaceStore ?? ''}</span></p
|
|
@@ -16,7 +16,7 @@ import TextInput from '../text_input/TextInput.svelte';
|
|
|
16
16
|
import Select from '../select/Select.svelte';
|
|
17
17
|
import { mcpEndpointTools } from '../../mcpEndpointTools';
|
|
18
18
|
import InfoIcon from 'lucide-svelte/icons/info';
|
|
19
|
-
let { showMcpMode = false, defaultNewTokenWorkspace, scopes, onTokenCreated, newTokenLabel = $bindable(undefined) } = $props();
|
|
19
|
+
let { showMcpMode = false, defaultNewTokenWorkspace, scopes, onTokenCreated, newTokenLabel = $bindable(undefined), displayCreateToken = true } = $props();
|
|
20
20
|
// MCP clients do not allow names longer than 60 characters, here we use 55 because final tool name server side will add ~5 characters
|
|
21
21
|
const MAX_PATH_LENGTH = 55;
|
|
22
22
|
let newToken = $state(undefined);
|
|
@@ -628,11 +628,11 @@ function clearAllEndpoints() {
|
|
|
628
628
|
</div>
|
|
629
629
|
</div>
|
|
630
630
|
|
|
631
|
-
{#if newToken}
|
|
631
|
+
{#if newToken && displayCreateToken}
|
|
632
632
|
<TokenDisplay token={newToken} />
|
|
633
633
|
{/if}
|
|
634
634
|
|
|
635
|
-
{#if newMcpToken}
|
|
635
|
+
{#if newMcpToken && displayCreateToken}
|
|
636
636
|
<TokenDisplay token={newMcpToken} mcpUrl={`${mcpBaseUrl}${newMcpToken}`} />
|
|
637
637
|
{/if}
|
|
638
638
|
</div>
|
|
@@ -72,11 +72,12 @@ function canConvertToGroup(user) {
|
|
|
72
72
|
}
|
|
73
73
|
async function loadSettings() {
|
|
74
74
|
const settings = await WorkspaceService.getSettings({ workspace: $workspaceStore });
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
75
|
+
const autoInvite = settings.auto_invite;
|
|
76
|
+
auto_invite_domain = autoInvite?.enabled ? (autoInvite?.domain ?? '*') : undefined;
|
|
77
|
+
operatorOnly = autoInvite?.operator ?? false;
|
|
78
|
+
autoAdd = autoInvite?.mode === 'add';
|
|
79
|
+
autoAddInstanceGroups = autoInvite?.instance_groups || [];
|
|
80
|
+
autoAddInstanceGroupsRoles = autoInvite?.instance_groups_roles || {};
|
|
80
81
|
}
|
|
81
82
|
let getUsagePromise = undefined;
|
|
82
83
|
let usage = $state(undefined);
|
|
@@ -60,16 +60,24 @@ const Element = href ? 'a' : 'button';
|
|
|
60
60
|
>
|
|
61
61
|
{#if icon}
|
|
62
62
|
{@const SvelteComponent = icon}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
{#if color}
|
|
64
|
+
<svg width="26" height="26" viewBox="0 0 26 26" class="flex-shrink-0 -ml-[5px]">
|
|
65
|
+
<circle cx="13" cy="13" r="13" fill={color} />
|
|
66
|
+
<foreignObject x="5" y="5" width="16" height="16">
|
|
67
|
+
<SvelteComponent
|
|
68
|
+
size={16}
|
|
69
|
+
class={twMerge(sidebarClasses.text, 'transition-colors', iconClasses)}
|
|
70
|
+
{...iconProps}
|
|
71
|
+
/>
|
|
72
|
+
</foreignObject>
|
|
73
|
+
</svg>
|
|
74
|
+
{:else}
|
|
67
75
|
<SvelteComponent
|
|
68
76
|
size={16}
|
|
69
77
|
class={twMerge('flex-shrink-0', sidebarClasses.text, 'transition-colors', iconClasses)}
|
|
70
78
|
{...iconProps}
|
|
71
79
|
/>
|
|
72
|
-
|
|
80
|
+
{/if}
|
|
73
81
|
{/if}
|
|
74
82
|
|
|
75
83
|
<div class="flex flex-col text-left grow min-w-0">
|
|
@@ -89,12 +89,12 @@ function showActivity(url) {
|
|
|
89
89
|
title={user}
|
|
90
90
|
>
|
|
91
91
|
<span class="text-sm font-medium leading-none text-white"
|
|
92
|
-
>{user
|
|
92
|
+
>{user?.substring(0, 2).toLocaleUpperCase()}</span
|
|
93
93
|
>
|
|
94
94
|
</span>
|
|
95
95
|
<div class="flex flex-col">
|
|
96
96
|
<span class="text-xs text-primary truncate">{user}</span>
|
|
97
|
-
<span class="text-2xs text-secondary truncate">{showActivity(url)}</span>
|
|
97
|
+
<span class="text-2xs text-secondary truncate">{showActivity(url ?? '')}</span>
|
|
98
98
|
</div>
|
|
99
99
|
</div>
|
|
100
100
|
{/each}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { superadmin, usedTriggerKinds, userStore, workspaceStore, isCriticalAlertsUIOpen, enterpriseLicense, devopsRole, tutorialsToDo, skippedAll } from '../../stores';
|
|
3
3
|
import { syncTutorialsTodos } from '../../tutorialUtils';
|
|
4
4
|
import { SIDEBAR_SHOW_SCHEDULES } from '../../consts';
|
|
5
|
-
import { BookOpen,
|
|
5
|
+
import { BookOpen, ServerCog, Boxes, Calendar, DollarSign, Eye, Logs, FolderCog, FolderOpen, Github, GraduationCap, HelpCircle, Home, LogOut, Newspaper, Play, Route, Settings, UserCog, Plus, Unplug, AlertCircle, Database, Pyramid, Trash2, MailIcon } from 'lucide-svelte';
|
|
6
6
|
import UserMenu from './UserMenu.svelte';
|
|
7
7
|
import DiscordIcon from '../icons/brands/Discord.svelte';
|
|
8
8
|
import { WorkspaceService } from '../../gen';
|
|
@@ -20,6 +20,7 @@ import KafkaIcon from '../icons/KafkaIcon.svelte';
|
|
|
20
20
|
import NatsIcon from '../icons/NatsIcon.svelte';
|
|
21
21
|
import MqttIcon from '../icons/MqttIcon.svelte';
|
|
22
22
|
import AwsIcon from '../icons/AwsIcon.svelte';
|
|
23
|
+
import { getAvailableNativeTriggerServices, getServiceConfig, getServiceIcon } from '../triggers/native/utils';
|
|
23
24
|
import { Menubar, Menu, MenuSingleItem, MenuItem, MeltButton } from '../meltComponents';
|
|
24
25
|
import MenuButton from './MenuButton.svelte';
|
|
25
26
|
import GoogleCloudIcon from '../icons/GoogleCloudIcon.svelte';
|
|
@@ -38,6 +39,23 @@ async function deleteFork() {
|
|
|
38
39
|
let hasNewChangelogs = $state(false);
|
|
39
40
|
let recentChangelogs = $state([]);
|
|
40
41
|
let lastOpened = localStorage.getItem('changelogsLastOpened');
|
|
42
|
+
let availableNativeServices = $state([]);
|
|
43
|
+
async function loadAvailableNativeTriggers() {
|
|
44
|
+
try {
|
|
45
|
+
const services = await getAvailableNativeTriggerServices($workspaceStore);
|
|
46
|
+
const serviceData = await Promise.all(services.map(async (service) => ({
|
|
47
|
+
service,
|
|
48
|
+
icon: await getServiceIcon(service),
|
|
49
|
+
config: getServiceConfig(service)
|
|
50
|
+
})));
|
|
51
|
+
availableNativeServices = serviceData;
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
console.error('Failed to load available native trigger services:', err);
|
|
55
|
+
availableNativeServices = [];
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
loadAvailableNativeTriggers();
|
|
41
59
|
onMount(async () => {
|
|
42
60
|
if (lastOpened) {
|
|
43
61
|
// @ts-ignore
|
|
@@ -255,6 +273,16 @@ let defaultExtraTriggerLinks = $derived([
|
|
|
255
273
|
aiDescription: 'Button to navigate to Email triggers'
|
|
256
274
|
}
|
|
257
275
|
]);
|
|
276
|
+
let nativeTriggerLinks = $derived(availableNativeServices.map(({ service, icon, config }) => ({
|
|
277
|
+
label: config?.serviceDisplayName || service,
|
|
278
|
+
href: `/native_triggers/${service}`,
|
|
279
|
+
icon: icon,
|
|
280
|
+
disabled: $userStore?.operator,
|
|
281
|
+
kind: service,
|
|
282
|
+
aiId: `sidebar-menu-link-${service}`,
|
|
283
|
+
aiDescription: `Button to navigate to ${config?.serviceDisplayName || service} triggers`
|
|
284
|
+
})));
|
|
285
|
+
let allTriggerLinks = $derived([...defaultExtraTriggerLinks, ...nativeTriggerLinks]);
|
|
258
286
|
let triggerMenuLinks = $derived([
|
|
259
287
|
{
|
|
260
288
|
label: 'Schedules',
|
|
@@ -264,9 +292,9 @@ let triggerMenuLinks = $derived([
|
|
|
264
292
|
aiId: 'sidebar-menu-link-schedules',
|
|
265
293
|
aiDescription: 'Button to navigate to schedules'
|
|
266
294
|
},
|
|
267
|
-
...
|
|
295
|
+
...allTriggerLinks.filter((link) => $usedTriggerKinds.includes(link.kind) || $page.url.pathname.includes(link.href))
|
|
268
296
|
]);
|
|
269
|
-
let extraTriggerLinks = $derived(
|
|
297
|
+
let extraTriggerLinks = $derived(allTriggerLinks.filter((link) => {
|
|
270
298
|
return !$page.url.pathname.includes(link.href) && !$usedTriggerKinds.includes(link.kind);
|
|
271
299
|
}));
|
|
272
300
|
let secondaryMenuLinks = $derived([
|
|
@@ -345,7 +373,7 @@ let secondaryMenuLinks = $derived([
|
|
|
345
373
|
{
|
|
346
374
|
label: 'Workers',
|
|
347
375
|
href: `${base}/workers`,
|
|
348
|
-
icon:
|
|
376
|
+
icon: ServerCog,
|
|
349
377
|
disabled: $userStore?.operator,
|
|
350
378
|
aiId: 'sidebar-menu-link-workers',
|
|
351
379
|
aiDescription: 'Button to navigate to workers'
|
|
@@ -4,7 +4,7 @@ import { userStore, usageStore, workspaceUsageStore, isPremiumStore, workspaceSt
|
|
|
4
4
|
import { USER_SETTINGS_HASH } from './settings';
|
|
5
5
|
import { isCloudHosted } from '../../cloud';
|
|
6
6
|
import { twMerge } from 'tailwind-merge';
|
|
7
|
-
import { Crown,
|
|
7
|
+
import { Crown, ServerCog, LogOut, Moon, Settings, Sun, User } from 'lucide-svelte';
|
|
8
8
|
import DarkModeObserver from '../DarkModeObserver.svelte';
|
|
9
9
|
import MenuButton from './MenuButton.svelte';
|
|
10
10
|
import { Menu, MenuItem } from '../meltComponents';
|
|
@@ -35,7 +35,7 @@ const itemClass = twMerge('text-secondary text-left font-normal text-xs ', 'flex
|
|
|
35
35
|
{#if $userStore?.is_admin}
|
|
36
36
|
Admin of this workspace <Crown size={14} />
|
|
37
37
|
{:else if $userStore?.operator}
|
|
38
|
-
Operator in this workspace <
|
|
38
|
+
Operator in this workspace <ServerCog size={14} />
|
|
39
39
|
{/if}
|
|
40
40
|
</span>
|
|
41
41
|
</div>
|
|
@@ -10,7 +10,7 @@ let footerHeight = $state(0);
|
|
|
10
10
|
let tableHeight = $state(0);
|
|
11
11
|
const dispatch = createEventDispatcher();
|
|
12
12
|
let tableContainer = $state();
|
|
13
|
-
let { paginated = false, currentPage = $bindable(1), showNext = true, showPrev = true, loadMore = 0, shouldLoadMore = false, rounded = true, size = 'md', perPage = $bindable(undefined), shouldHidePagination = false, noBorder = false, rowCount = undefined, hasMore = true, contentHeight = $bindable(0), tableFixed = false, infiniteScroll = undefined, neverShowLoader = false, loading = false, loadingMore = false, containerClass = '', children, emptyMessage } = $props();
|
|
13
|
+
let { paginated = false, currentPage = $bindable(1), showNext = true, showPrev = true, loadMore = 0, shouldLoadMore = false, rounded = true, size = 'md', perPage = $bindable(undefined), shouldHidePagination = false, noBorder = false, rowCount = undefined, hasMore = true, contentHeight = $bindable(0), tableFixed = false, infiniteScroll = undefined, neverShowLoader = false, loading = false, loadingMore = false, containerClass = '', children, emptyMessage, preventXOverflow = false } = $props();
|
|
14
14
|
setContext('datatable', {
|
|
15
15
|
size
|
|
16
16
|
});
|
|
@@ -69,7 +69,11 @@ $effect(() => {
|
|
|
69
69
|
bind:clientHeight={tableHeight}
|
|
70
70
|
>
|
|
71
71
|
<List justify="between" gap="none" hFull={true}>
|
|
72
|
-
<div
|
|
72
|
+
<div
|
|
73
|
+
class={twMerge('w-full overflow-auto h-fit', preventXOverflow ? 'overflow-x-hidden' : '')}
|
|
74
|
+
bind:this={tableContainer}
|
|
75
|
+
onscroll={handleScroll}
|
|
76
|
+
>
|
|
73
77
|
<table class={tableFixed ? 'table-fixed w-full' : 'min-w-full'}>
|
|
74
78
|
{@render children?.()}
|
|
75
79
|
</table>
|