windmill-components 1.511.0 → 1.522.0
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/components/AppConnectInner.svelte.d.ts +1 -1
- package/package/components/ArgInput.svelte +56 -18
- package/package/components/ArgInput.svelte.d.ts +2 -10
- package/package/components/AssignableTagsInner.svelte +5 -0
- package/package/components/AuthSettings.svelte +4 -2
- package/package/components/AuthSettings.svelte.d.ts +1 -0
- package/package/components/DBManagerDrawer.svelte +154 -151
- package/package/components/DBManagerDrawer.svelte.d.ts +2 -2
- package/package/components/DBTable.svelte +3 -3
- package/package/components/DBTable.svelte.d.ts +1 -0
- package/package/components/DBTableEditor.svelte +7 -7
- package/package/components/DBTableEditor.svelte.d.ts +1 -1
- package/package/components/DeployWorkspace.svelte +1 -1
- package/package/components/DisplayResult.svelte +34 -8
- package/package/components/DisplayResult.svelte.d.ts +4 -1
- package/package/components/DynSelect.svelte +58 -34
- package/package/components/DynSelect.svelte.d.ts +3 -11
- package/package/components/EditableSchemaForm.svelte +126 -6
- package/package/components/EditableSchemaForm.svelte.d.ts +5 -1
- package/package/components/Editor.svelte +1 -1
- package/package/components/EditorBar.svelte +82 -4
- package/package/components/ErrorOrRecoveryHandler.svelte +76 -8
- package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +2 -1
- package/package/components/ExploreAssetButton.svelte +14 -4
- package/package/components/ExploreAssetButton.svelte.d.ts +1 -0
- package/package/components/FlowJobResult.svelte +3 -3
- package/package/components/FlowJobResult.svelte.d.ts +1 -0
- package/package/components/FlowPreviewContent.svelte +9 -0
- package/package/components/FlowPreviewContent.svelte.d.ts +3 -0
- package/package/components/FlowPreviewResult.svelte +4 -1
- package/package/components/FlowPreviewResult.svelte.d.ts +1 -0
- package/package/components/FlowStatusViewer.svelte +2 -1
- package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
- package/package/components/FlowStatusViewerInner.svelte +23 -3
- package/package/components/FlowStatusViewerInner.svelte.d.ts +10 -1
- package/package/components/FolderEditor.svelte +1 -1
- package/package/components/GitDiffPreview.svelte +14 -18
- package/package/components/GitDiffPreview.svelte.d.ts +2 -8
- package/package/components/GitHubAppIntegration.svelte +3 -1
- package/package/components/IdEditorInput.svelte +25 -22
- package/package/components/IdEditorInput.svelte.d.ts +11 -23
- package/package/components/InstanceSetting.svelte +7 -2
- package/package/components/InstanceSettings.svelte +1 -0
- package/package/components/JobLoader.svelte +48 -5
- package/package/components/JobLoader.svelte.d.ts +7 -2
- package/package/components/Login.svelte +8 -2
- package/package/components/MemoryFootprintViewer.svelte +1 -1
- package/package/components/ModulePreviewResultViewer.svelte +2 -2
- package/package/components/MoveDrawer.svelte.d.ts +2 -2
- package/package/components/NextcloudSetting.svelte +84 -0
- package/package/components/NextcloudSetting.svelte.d.ts +7 -0
- package/package/components/ObjectResourceInput.svelte +3 -2
- package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
- package/package/components/ParqetCsvTableRenderer.svelte +1 -1
- package/package/components/ResourceEditor.svelte +1 -1
- package/package/components/ResourcePicker.svelte +8 -1
- package/package/components/ResourcePicker.svelte.d.ts +1 -0
- package/package/components/ResultStreamDisplay.svelte +5 -0
- package/package/components/ResultStreamDisplay.svelte.d.ts +5 -0
- package/package/components/RunForm.svelte +9 -1
- package/package/components/SchemaForm.svelte +2 -2
- package/package/components/SchemaForm.svelte.d.ts +2 -10
- package/package/components/ScriptBuilder.svelte +13 -8
- package/package/components/ScriptBuilder.svelte.d.ts +1 -1
- package/package/components/ScriptEditor.svelte.d.ts +1 -1
- package/package/components/ScriptWrapper.svelte +1 -1
- package/package/components/ShareModal.svelte.d.ts +1 -1
- package/package/components/SimpleAgTable.svelte +2 -0
- package/package/components/SimpleAgTable.svelte.d.ts +2 -0
- package/package/components/SqlRepl.svelte +21 -7
- package/package/components/SqlRepl.svelte.d.ts +2 -2
- package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
- package/package/components/WorkerTagSelect.svelte +70 -1
- package/package/components/apps/components/display/AppDisplayComponent.svelte +13 -1
- package/package/components/apps/components/display/AppText.svelte +2 -2
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +8 -1
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +5 -4
- package/package/components/apps/components/display/dbtable/queries/count.js +11 -1
- package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +1 -1
- package/package/components/apps/components/display/dbtable/queries/createTable.js +3 -3
- package/package/components/apps/components/display/dbtable/queries/delete.js +7 -0
- package/package/components/apps/components/display/dbtable/queries/insert.js +2 -0
- package/package/components/apps/components/display/dbtable/queries/select.js +14 -0
- package/package/components/apps/components/display/dbtable/queries/update.js +7 -0
- package/package/components/apps/components/display/dbtable/utils.d.ts +6 -5
- package/package/components/apps/components/display/dbtable/utils.js +52 -28
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +1 -1
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +1 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/AppAggridTable.svelte +5 -4
- package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/utils.js +7 -4
- package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -2
- package/package/components/apps/components/helpers/RunnableComponent.svelte +4 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
- package/package/components/apps/components/inputs/AppS3FileInput.svelte +2 -2
- package/package/components/apps/components/layout/AppDecisionTree.svelte +1 -1
- package/package/components/apps/components/layout/AppStepper.svelte +1 -1
- package/package/components/apps/components/layout/AppTabs.svelte +1 -1
- package/package/components/apps/editor/AppEditorHeader.svelte +13 -2
- package/package/components/apps/editor/GridViewer.svelte +1 -0
- package/package/components/apps/editor/RunnableJobPanelInner.svelte +2 -1
- package/package/components/apps/editor/contextPanel/components/IdEditor.svelte +7 -7
- package/package/components/apps/editor/contextPanel/components/IdEditor.svelte.d.ts +7 -19
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +8 -12
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +3 -3
- package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +1 -3
- package/package/components/assets/AssetsDropdownButton.svelte +1 -1
- package/package/components/assets/JobAssetsViewer.svelte +2 -2
- package/package/components/assets/lib.js +4 -0
- package/package/components/auditLogs/AuditLogsFilters.svelte +7 -9
- package/package/components/common/button/Button.svelte +4 -3
- package/package/components/common/button/Button.svelte.d.ts +1 -0
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +6 -5
- package/package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +6 -11
- package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.d.ts +26 -0
- package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.js +50 -0
- package/package/components/common/modal/Modal.svelte +2 -5
- package/package/components/common/tabs/TabsV2.svelte +2 -1
- package/package/components/common/tabs/TabsV2.svelte.d.ts +1 -0
- package/package/components/copilot/chat/AIChatManager.svelte.js +61 -7
- package/package/components/copilot/chat/ContextTextarea.svelte +1 -1
- package/package/components/copilot/chat/script/core.js +28 -29
- package/package/components/copilot/chat/shared.d.ts +1 -1
- package/package/components/copilot/chat/shared.js +8 -2
- package/package/components/custom_ui.d.ts +3 -0
- package/package/components/dbOps.d.ts +20 -8
- package/package/components/dbOps.js +85 -40
- package/package/components/details/DetailPageHeader.svelte +0 -2
- package/package/components/flows/content/FlowInput.svelte +5 -0
- package/package/components/flows/content/FlowModuleComponent.svelte +1 -0
- package/package/components/flows/content/FlowModuleScript.svelte +0 -1
- package/package/components/flows/idUtils.js +2 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +3 -3
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +5 -0
- package/package/components/flows/map/InsertModuleButton.svelte +4 -1
- package/package/components/flows/propPicker/OutputBadge.svelte +5 -1
- package/package/components/flows/propPicker/OutputPickerInner.svelte +9 -5
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +6 -2
- package/package/components/flows/propPicker/StepHistory.svelte +4 -1
- package/package/components/git_sync/DetectionFlow.svelte +202 -0
- package/package/components/git_sync/DetectionFlow.svelte.d.ts +6 -0
- package/package/components/git_sync/GitSyncContext.svelte.d.ts +82 -0
- package/package/components/git_sync/GitSyncContext.svelte.js +461 -0
- package/package/components/git_sync/GitSyncModalManager.svelte +99 -0
- package/package/components/git_sync/GitSyncModalManager.svelte.d.ts +18 -0
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +339 -0
- package/package/components/git_sync/GitSyncRepositoryCard.svelte.d.ts +6 -0
- package/package/components/git_sync/GitSyncRepositoryList.svelte +17 -0
- package/package/components/git_sync/GitSyncRepositoryList.svelte.d.ts +18 -0
- package/package/components/git_sync/GitSyncSection.svelte +89 -0
- package/package/components/git_sync/GitSyncSection.svelte.d.ts +3 -0
- package/package/components/git_sync/GitSyncSuccessModal.svelte +58 -0
- package/package/components/git_sync/GitSyncSuccessModal.svelte.d.ts +7 -0
- package/package/components/git_sync/PullWorkspaceModal.svelte +575 -0
- package/package/components/git_sync/PullWorkspaceModal.svelte.d.ts +15 -0
- package/package/components/git_sync/PushWorkspaceModal.svelte +320 -0
- package/package/components/git_sync/PushWorkspaceModal.svelte.d.ts +12 -0
- package/package/components/graph/FlowGraphV2.svelte +5 -1
- package/package/components/graph/graphBuilder.svelte.js +1 -1
- package/package/components/graph/renderers/nodes/AssetNode.svelte +4 -4
- package/package/components/icons/AssetDucklakeIcon.svelte +28 -0
- package/package/components/icons/AssetDucklakeIcon.svelte.d.ts +9 -0
- package/package/components/icons/AssetGenericIcon.svelte +3 -0
- package/package/components/icons/DucklakeIcon.svelte +18 -0
- package/package/components/icons/DucklakeIcon.svelte.d.ts +6 -0
- package/package/components/instanceSettings.js +11 -3
- package/package/components/runs/JobPreview.svelte +2 -2
- package/package/components/runs/NoWorkerWithTagWarning.svelte +3 -3
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/schema/FlowPropertyEditor.svelte +3 -2
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/PropertyEditor.svelte +0 -2
- package/package/components/schema/PropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/SchemaFormDND.svelte +2 -1
- package/package/components/schema/SchemaFormDND.svelte.d.ts +2 -0
- package/package/components/scriptEditor/LogPanel.svelte +5 -3
- package/package/components/scriptEditor/LogPanel.svelte.d.ts +5 -1
- package/package/components/select/Select.svelte +7 -4
- package/package/components/select/Select.svelte.d.ts +5 -0
- package/package/components/select/SelectDropdown.svelte +2 -1
- package/package/components/select/SelectDropdown.svelte.d.ts +3 -0
- package/package/components/sidebar/changelogs.js +5 -0
- package/package/components/table/AutoDataTable.svelte +6 -4
- package/package/components/table/AutoDataTable.svelte.d.ts +1 -0
- package/package/components/table/DataTable.svelte +12 -10
- package/package/components/table/DataTable.svelte.d.ts +1 -0
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +2 -2
- package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte +1 -1
- package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte.d.ts +2 -1
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +50 -11
- package/package/components/triggers/gcp/utils.js +1 -0
- package/package/components/triggers/http/utils.js +1 -1
- package/package/components/triggers/kafka/utils.js +1 -1
- package/package/components/triggers/mqtt/utils.js +1 -1
- package/package/components/triggers/nats/utils.js +1 -1
- package/package/components/triggers/postgres/utils.js +1 -1
- package/package/components/triggers/sqs/utils.js +1 -1
- package/package/components/triggers/utils.js +2 -1
- package/package/components/triggers/webhook/WebhooksConfigSection.svelte +24 -26
- package/package/components/triggers/webhook/WebhooksPanel.svelte +1 -15
- package/package/components/triggers/websocket/utils.js +1 -1
- package/package/components/workspaceSettings/AISettings.svelte +52 -36
- package/package/components/workspaceSettings/DucklakeSettings.svelte +321 -0
- package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +23 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +122 -499
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +8 -10
- package/package/consts.js +2 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +33 -24
- package/package/gen/schemas.gen.js +36 -27
- package/package/gen/services.gen.d.ts +19 -1
- package/package/gen/services.gen.js +38 -0
- package/package/gen/types.gen.d.ts +103 -9
- package/package/git-sync.d.ts +36 -0
- package/package/git-sync.js +1 -0
- package/package/hub.d.ts +1 -0
- package/package/hubPaths.json +5 -2
- package/package/infer.js +3 -2
- package/package/script_helpers.d.ts +2 -2
- package/package/script_helpers.js +29 -11
- package/package/services/JobManager.d.ts +28 -0
- package/package/services/JobManager.js +114 -0
- package/package/stores.d.ts +1 -1
- package/package/utils.d.ts +18 -1
- package/package/utils.js +55 -2
- package/package.json +13 -12
- package/package/components/InitGitRepoPopover.svelte +0 -410
- package/package/components/InitGitRepoPopover.svelte.d.ts +0 -13
- package/package/components/PullGitRepoPopover.svelte +0 -355
- package/package/components/PullGitRepoPopover.svelte.d.ts +0 -18
- package/package/inferArgSig.d.ts +0 -35
- package/package/inferArgSig.js +0 -191
|
@@ -30,6 +30,6 @@ declare const AppConnectInner: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
|
30
30
|
loadResourceTypes: () => Promise<void>;
|
|
31
31
|
next: () => Promise<void>;
|
|
32
32
|
back: () => Promise<void>;
|
|
33
|
-
}, "step" | "disabled" | "
|
|
33
|
+
}, "step" | "disabled" | "manual" | "resourceType" | "isGoogleSignin">;
|
|
34
34
|
type AppConnectInner = InstanceType<typeof AppConnectInner>;
|
|
35
35
|
export default AppConnectInner;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">import { preventDefault, stopPropagation, createBubbler } from 'svelte/legacy';
|
|
2
2
|
const bubble = createBubbler();
|
|
3
3
|
import { setInputCat as computeInputCat, debounce, emptyString, getSchemaFromProperties } from '../utils';
|
|
4
|
-
import { DollarSign, Plus, X, Check, Loader2 } from 'lucide-svelte';
|
|
4
|
+
import { DollarSign, Plus, X, Check, Loader2, ExternalLink } from 'lucide-svelte';
|
|
5
5
|
import { createEventDispatcher, onDestroy, onMount, tick, untrack } from 'svelte';
|
|
6
6
|
import { fade } from 'svelte/transition';
|
|
7
7
|
import { Button, SecondsInput } from './common';
|
|
@@ -27,6 +27,7 @@ import DynSelect from './DynSelect.svelte';
|
|
|
27
27
|
import MultiSelect from './select/MultiSelect.svelte';
|
|
28
28
|
import { safeSelectItems } from './select/utils.svelte';
|
|
29
29
|
import S3ArgInput from './common/fileUpload/S3ArgInput.svelte';
|
|
30
|
+
import { base } from '../base';
|
|
30
31
|
let { label = '', value = $bindable(), defaultValue = $bindable(undefined), description = $bindable(undefined), format = $bindable(undefined), contentEncoding = undefined, type = undefined, oneOf = $bindable(undefined), required = false, pattern = $bindable(undefined), valid = $bindable(undefined), enum_ = $bindable(undefined), disabled = false, itemsType = $bindable(undefined), displayHeader = true, properties = $bindable(undefined), nestedRequired = undefined, autofocus = null, compact = false, password = false, pickForField = $bindable(undefined), variableEditor = undefined, itemPicker = undefined, noMargin = false, extra = {}, minW = true, prettifyHeader = false, resourceTypes, disablePortal = false, showSchemaExplorer = false, simpleTooltip = undefined, customErrorMessage = undefined, onlyMaskPassword = false, nullable = false, title = $bindable(undefined), placeholder = $bindable(undefined), order = $bindable(undefined), editor = $bindable(undefined), orderEditable = false, shouldDispatchChanges = false, noDefaultOnSelectFirst = false, helperScript = undefined, otherArgs = {}, lightHeader = false, diffStatus = undefined, hideNested = false, nestedParent = undefined, nestedClasses = '', displayType = true, css = undefined, appPath = undefined, computeS3ForceViewerPolicies = undefined, workspace = undefined, actions } = $props();
|
|
31
32
|
$effect(() => {
|
|
32
33
|
if (description == undefined) {
|
|
@@ -156,7 +157,7 @@ function evalValueToRaw() {
|
|
|
156
157
|
}
|
|
157
158
|
const newRawValue = value == undefined || value == null
|
|
158
159
|
? ''
|
|
159
|
-
: isObjectCat(inputCat)
|
|
160
|
+
: isObjectCat(inputCat) || (inputCat == 'list' && isListJson)
|
|
160
161
|
? JSON.stringify(value, null, 2)
|
|
161
162
|
: isRawStringEditor(inputCat)
|
|
162
163
|
? typeof value == 'string'
|
|
@@ -323,6 +324,32 @@ onDestroy(() => {
|
|
|
323
324
|
});
|
|
324
325
|
</script>
|
|
325
326
|
|
|
327
|
+
{#snippet variableInput()}
|
|
328
|
+
{#if variableEditor}
|
|
329
|
+
<div class="text-sm text-tertiary">
|
|
330
|
+
{#if value && typeof value == 'string' && value?.startsWith('$var:')}
|
|
331
|
+
Linked to variable <button
|
|
332
|
+
class="text-blue-500 underline"
|
|
333
|
+
onclick={() => variableEditor?.editVariable?.(value.slice(5))}>{value.slice(5)}</button
|
|
334
|
+
>
|
|
335
|
+
{/if}
|
|
336
|
+
</div>
|
|
337
|
+
{/if}
|
|
338
|
+
{/snippet}
|
|
339
|
+
{#snippet resourceInput()}
|
|
340
|
+
{#if variableEditor}
|
|
341
|
+
<div class="text-sm text-tertiary">
|
|
342
|
+
{#if value && typeof value == 'string' && value?.startsWith('$res:')}
|
|
343
|
+
Linked to resource <a
|
|
344
|
+
target="_blank"
|
|
345
|
+
href="{base}/resources#/resource/{value.slice(5)}"
|
|
346
|
+
class="text-blue-500 underline"
|
|
347
|
+
>{value.slice(5)} <span class="inline-block -mb-0.5"><ExternalLink size={14} /></span></a
|
|
348
|
+
>
|
|
349
|
+
{/if}
|
|
350
|
+
</div>
|
|
351
|
+
{/if}
|
|
352
|
+
{/snippet}
|
|
326
353
|
<!-- svelte-ignore a11y_autofocus -->
|
|
327
354
|
<div
|
|
328
355
|
class={twMerge(
|
|
@@ -510,7 +537,7 @@ onDestroy(() => {
|
|
|
510
537
|
onchange={(x) => fileChanged(x, (val) => (value[i] = val))}
|
|
511
538
|
multiple={false}
|
|
512
539
|
/>
|
|
513
|
-
{:else if itemsType?.type == 'object' && itemsType?.resourceType === undefined && itemsType?.properties === undefined}
|
|
540
|
+
{:else if itemsType?.type == 'object' && itemsType?.resourceType === undefined && itemsType?.properties === undefined && !(format?.startsWith('resource-') && resourceTypes?.includes(format.split('-')[1]))}
|
|
514
541
|
{#await import('./JsonEditor.svelte')}
|
|
515
542
|
<Loader2 class="animate-spin" />
|
|
516
543
|
{:then Module}
|
|
@@ -536,10 +563,16 @@ onDestroy(() => {
|
|
|
536
563
|
enum_={itemsType?.enum ?? []}
|
|
537
564
|
enumLabels={extra['enumLabels']}
|
|
538
565
|
/>
|
|
539
|
-
{:else if itemsType?.type == 'resource' && itemsType?.resourceType && resourceTypes?.includes(itemsType.resourceType)}
|
|
566
|
+
{:else if (itemsType?.type == 'resource' && itemsType?.resourceType && resourceTypes?.includes(itemsType.resourceType)) || (format?.startsWith('resource-') && resourceTypes?.includes(format.split('-')[1]))}
|
|
567
|
+
{@const resourceFormat =
|
|
568
|
+
itemsType?.type == 'resource' &&
|
|
569
|
+
itemsType.resourceType &&
|
|
570
|
+
resourceTypes.includes(itemsType.resourceType)
|
|
571
|
+
? `resource-${itemsType.resourceType}`
|
|
572
|
+
: format!}
|
|
540
573
|
<ObjectResourceInput
|
|
541
574
|
bind:value={value[i]}
|
|
542
|
-
format={
|
|
575
|
+
format={resourceFormat}
|
|
543
576
|
defaultValue={undefined}
|
|
544
577
|
/>
|
|
545
578
|
{:else if itemsType?.type == 'resource'}
|
|
@@ -591,6 +624,15 @@ onDestroy(() => {
|
|
|
591
624
|
>{itemsLimit}/{value.length}: Load 50 more...</button
|
|
592
625
|
>
|
|
593
626
|
{/if}
|
|
627
|
+
{:else if typeof value === 'string'}
|
|
628
|
+
{#if value.startsWith('$res:')}
|
|
629
|
+
{@render resourceInput()}
|
|
630
|
+
{:else}
|
|
631
|
+
<div class="text-red-500">
|
|
632
|
+
Invalid string value: "{value}", expected array. Click add item to turn it
|
|
633
|
+
into an array.
|
|
634
|
+
</div>
|
|
635
|
+
{/if}
|
|
594
636
|
{/if}
|
|
595
637
|
{/key}
|
|
596
638
|
</div>
|
|
@@ -607,7 +649,11 @@ onDestroy(() => {
|
|
|
607
649
|
if (itemsType?.type == 'number') {
|
|
608
650
|
value = value.concat(0)
|
|
609
651
|
} else if (
|
|
610
|
-
itemsType?.type == 'object'
|
|
652
|
+
(itemsType?.type == 'object' &&
|
|
653
|
+
!(
|
|
654
|
+
format?.startsWith('resource-') &&
|
|
655
|
+
resourceTypes?.includes(format.split('-')[1])
|
|
656
|
+
)) ||
|
|
611
657
|
(itemsType?.type == 'resource' &&
|
|
612
658
|
!(
|
|
613
659
|
itemsType?.resourceType && resourceTypes?.includes(itemsType?.resourceType)
|
|
@@ -647,7 +693,7 @@ onDestroy(() => {
|
|
|
647
693
|
{:else if inputCat == 'dynselect'}
|
|
648
694
|
<DynSelect
|
|
649
695
|
name={label}
|
|
650
|
-
|
|
696
|
+
{otherArgs}
|
|
651
697
|
{helperScript}
|
|
652
698
|
bind:value
|
|
653
699
|
entrypoint={format?.substring('dynselect_'.length) ?? ''}
|
|
@@ -657,6 +703,7 @@ onDestroy(() => {
|
|
|
657
703
|
{:else if inputCat == 'resource-object' && (resourceTypes == undefined || (format && format?.split('-').length > 1 && resourceTypes.includes(format?.substring('resource-'.length))))}
|
|
658
704
|
<!-- {JSON.stringify(value)} -->
|
|
659
705
|
<ObjectResourceInput
|
|
706
|
+
{disabled}
|
|
660
707
|
{defaultValue}
|
|
661
708
|
selectFirst={!noDefaultOnSelectFirst}
|
|
662
709
|
{disablePortal}
|
|
@@ -1057,17 +1104,8 @@ onDestroy(() => {
|
|
|
1057
1104
|
{/if}
|
|
1058
1105
|
{/if}
|
|
1059
1106
|
</div>
|
|
1060
|
-
{
|
|
1061
|
-
|
|
1062
|
-
{#if value && typeof value == 'string' && value?.startsWith('$var:')}
|
|
1063
|
-
Linked to variable <button
|
|
1064
|
-
class="text-blue-500 underline"
|
|
1065
|
-
onclick={() => variableEditor?.editVariable?.(value.slice(5))}
|
|
1066
|
-
>{value.slice(5)}</button
|
|
1067
|
-
>
|
|
1068
|
-
{/if}
|
|
1069
|
-
</div>
|
|
1070
|
-
{/if}
|
|
1107
|
+
{@render variableInput()}
|
|
1108
|
+
{@render resourceInput()}
|
|
1071
1109
|
</div>
|
|
1072
1110
|
{/if}
|
|
1073
1111
|
{@render actions?.()}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { EnumType, SchemaProperty } from '../common';
|
|
2
|
+
import { type DynamicSelect } from '../utils';
|
|
2
3
|
import type ItemPicker from './ItemPicker.svelte';
|
|
3
4
|
import type SimpleEditor from './SimpleEditor.svelte';
|
|
4
5
|
import type VariableEditor from './VariableEditor.svelte';
|
|
5
|
-
import type { Script } from '../gen';
|
|
6
6
|
import type { SchemaDiff } from './schema/schemaUtils.svelte';
|
|
7
7
|
import type { ComponentCustomCSS } from './apps/types';
|
|
8
8
|
interface Props {
|
|
@@ -58,15 +58,7 @@ interface Props {
|
|
|
58
58
|
orderEditable?: boolean;
|
|
59
59
|
shouldDispatchChanges?: boolean;
|
|
60
60
|
noDefaultOnSelectFirst?: boolean;
|
|
61
|
-
helperScript?:
|
|
62
|
-
type: 'inline';
|
|
63
|
-
path?: string;
|
|
64
|
-
lang: Script['language'];
|
|
65
|
-
code: string;
|
|
66
|
-
} | {
|
|
67
|
-
type: 'hash';
|
|
68
|
-
hash: string;
|
|
69
|
-
} | undefined;
|
|
61
|
+
helperScript?: DynamicSelect.HelperScript;
|
|
70
62
|
otherArgs?: Record<string, any>;
|
|
71
63
|
lightHeader?: boolean;
|
|
72
64
|
diffStatus?: SchemaDiff | undefined;
|
|
@@ -86,6 +86,11 @@ loadCustomTags();
|
|
|
86
86
|
>For tags specific to some workspaces, use <pre class="inline">tag(workspace1+workspace2)</pre
|
|
87
87
|
></span
|
|
88
88
|
>
|
|
89
|
+
<span class="text-2xs text-tertiary"
|
|
90
|
+
>To exclude 'workspace1' and 'workspace2' from a tag, use <pre
|
|
91
|
+
class="inline">tag(^workspace1^workspace2)</pre
|
|
92
|
+
></span
|
|
93
|
+
>
|
|
89
94
|
<span class="text-2xs text-tertiary"
|
|
90
95
|
>For dynamic tags based on the workspace, use <pre class="inline">$workspace</pre>, e.g:
|
|
91
96
|
<pre class="inline">tag-$workspace</pre></span
|
|
@@ -10,13 +10,14 @@ import AuthentikSetting from './AuthentikSetting.svelte';
|
|
|
10
10
|
import AutheliaSetting from './AutheliaSetting.svelte';
|
|
11
11
|
import KanidmSetting from './KanidmSetting.svelte';
|
|
12
12
|
import ZitadelSetting from './ZitadelSetting.svelte';
|
|
13
|
+
import NextcloudSetting from './NextcloudSetting.svelte';
|
|
13
14
|
import CustomOauth from './CustomOauth.svelte';
|
|
14
15
|
import { capitalize } from '../utils';
|
|
15
16
|
import Toggle from './Toggle.svelte';
|
|
16
17
|
import { ExternalLink, Plus } from 'lucide-svelte';
|
|
17
18
|
import AzureOauthSettings from './AzureOauthSettings.svelte';
|
|
18
19
|
import Tooltip from './Tooltip.svelte';
|
|
19
|
-
let { snowflakeAccountIdentifier = $bindable(), oauths = $bindable(), requirePreexistingUserForOauth = $bindable(), scim } = $props();
|
|
20
|
+
let { snowflakeAccountIdentifier = $bindable(), oauths = $bindable(), requirePreexistingUserForOauth = $bindable(), baseUrl, scim } = $props();
|
|
20
21
|
$effect(() => {
|
|
21
22
|
if (snowflakeAccountIdentifier == undefined) {
|
|
22
23
|
snowflakeAccountIdentifier = '';
|
|
@@ -97,8 +98,9 @@ let tab = $state('sso');
|
|
|
97
98
|
<AutheliaSetting bind:value={oauths['authelia']} />
|
|
98
99
|
<KanidmSetting bind:value={oauths['kanidm']} />
|
|
99
100
|
<ZitadelSetting bind:value={oauths['zitadel']} />
|
|
101
|
+
<NextcloudSetting bind:value={oauths['nextcloud']} {baseUrl} />
|
|
100
102
|
{#each Object.keys(oauths) as k}
|
|
101
|
-
{#if !['authelia', 'authentik', 'google', 'microsoft', 'github', 'gitlab', 'jumpcloud', 'okta', 'auth0', 'keycloak', 'slack', 'kanidm', 'zitadel'].includes(k) && 'login_config' in oauths[k]}
|
|
103
|
+
{#if !['authelia', 'authentik', 'google', 'microsoft', 'github', 'gitlab', 'jumpcloud', 'okta', 'auth0', 'keycloak', 'slack', 'kanidm', 'zitadel', 'nextcloud'].includes(k) && 'login_config' in oauths[k]}
|
|
102
104
|
{#if oauths[k]}
|
|
103
105
|
<div class="flex flex-col gap-2 pb-4">
|
|
104
106
|
<div class="flex flex-row items-center gap-2">
|
|
@@ -2,6 +2,7 @@ interface Props {
|
|
|
2
2
|
snowflakeAccountIdentifier?: string;
|
|
3
3
|
oauths?: Record<string, any>;
|
|
4
4
|
requirePreexistingUserForOauth?: boolean;
|
|
5
|
+
baseUrl?: string;
|
|
5
6
|
scim?: import('svelte').Snippet;
|
|
6
7
|
}
|
|
7
8
|
declare const AuthSettings: import("svelte").Component<Props, {}, "snowflakeAccountIdentifier" | "oauths" | "requirePreexistingUserForOauth">;
|
|
@@ -6,28 +6,33 @@ import { sendUserToast, sortArray } from '../utils';
|
|
|
6
6
|
import { ArrowLeft, Expand, Loader2, Minimize, RefreshCcw } from 'lucide-svelte';
|
|
7
7
|
import { dbSupportsSchemas, getDbSchemas, getLanguageByResourceType, loadAllTablesMetaData, loadTableMetaData } from './apps/components/display/dbtable/utils';
|
|
8
8
|
import DbManager from './DBManager.svelte';
|
|
9
|
-
import { dbDeleteTableActionWithPreviewScript, dbTableOpsWithPreviewScripts } from './dbOps';
|
|
9
|
+
import { dbDeleteTableActionWithPreviewScript, dbTableOpsWithPreviewScripts, getDucklakeSchema, wrapDucklakeQuery } from './dbOps';
|
|
10
10
|
import { makeCreateTableQuery } from './apps/components/display/dbtable/queries/createTable';
|
|
11
11
|
import { runScriptAndPollResult } from './jobs/utils';
|
|
12
12
|
import { Pane, Splitpanes } from 'svelte-splitpanes';
|
|
13
13
|
import SqlRepl from './SqlRepl.svelte';
|
|
14
14
|
import SimpleAgTable from './SimpleAgTable.svelte';
|
|
15
15
|
import { untrack } from 'svelte';
|
|
16
|
-
let
|
|
17
|
-
let
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
resourceType = _resourceType;
|
|
21
|
-
resourcePath = _resourcePath;
|
|
16
|
+
let input = $state();
|
|
17
|
+
let open = $derived(!!input);
|
|
18
|
+
export function openDrawer(nInput) {
|
|
19
|
+
input = nInput;
|
|
22
20
|
getSchema();
|
|
23
21
|
}
|
|
24
22
|
export function closeDrawer() {
|
|
25
|
-
|
|
26
|
-
resourcePath = undefined;
|
|
23
|
+
input = undefined;
|
|
27
24
|
refreshCount = 0;
|
|
28
25
|
refreshing = false;
|
|
29
26
|
}
|
|
30
|
-
let dbSchema = $derived(
|
|
27
|
+
let dbSchema = $derived(input && $dbSchemas[getDbSchemasPath(input)]);
|
|
28
|
+
function getDbSchemasPath(input) {
|
|
29
|
+
switch (input.type) {
|
|
30
|
+
case 'database':
|
|
31
|
+
return input.resourcePath;
|
|
32
|
+
case 'ducklake':
|
|
33
|
+
return 'ducklake://' + input.ducklake;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
31
36
|
// `refreshCount` is a derived state. `refreshing` is the source of truth
|
|
32
37
|
let refreshCount = $state(0);
|
|
33
38
|
$effect(() => {
|
|
@@ -46,25 +51,29 @@ $effect(() => {
|
|
|
46
51
|
expand = false;
|
|
47
52
|
});
|
|
48
53
|
async function getSchema() {
|
|
49
|
-
if (!
|
|
54
|
+
if (!input)
|
|
50
55
|
return;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
56
|
+
const dbSchemasPath = getDbSchemasPath(input);
|
|
57
|
+
if ($dbSchemas[dbSchemasPath] && !refreshing)
|
|
58
|
+
return;
|
|
59
|
+
const oldDbSchema = $dbSchemas[dbSchemasPath];
|
|
60
|
+
if (input.type == 'database') {
|
|
61
|
+
await getDbSchemas(input.resourceType, input.resourcePath, $workspaceStore, $dbSchemas, (message) => {
|
|
54
62
|
if (open)
|
|
55
63
|
sendUserToast(message, true);
|
|
56
64
|
});
|
|
57
|
-
// avoid infinite loop on error due to the way getDbSchemas is implemented
|
|
58
|
-
// and relying on an assignement side effect
|
|
59
|
-
if (oldDbSchema !== $dbSchemas[resourcePath])
|
|
60
|
-
$dbSchemas = $dbSchemas;
|
|
61
65
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
else if (input.type == 'ducklake') {
|
|
67
|
+
$dbSchemas[dbSchemasPath] = await getDucklakeSchema({
|
|
68
|
+
workspace: $workspaceStore,
|
|
69
|
+
ducklake: input.ducklake
|
|
70
|
+
});
|
|
67
71
|
}
|
|
72
|
+
// avoid infinite loop on error due to the way getDbSchemas is implemented
|
|
73
|
+
// and relying on an assignement side effect
|
|
74
|
+
if (oldDbSchema !== $dbSchemas[dbSchemasPath])
|
|
75
|
+
$dbSchemas = $dbSchemas;
|
|
76
|
+
refreshing = false;
|
|
68
77
|
}
|
|
69
78
|
let windowWidth = $state(window.innerWidth);
|
|
70
79
|
let replPanelSize = $state(36);
|
|
@@ -73,22 +82,22 @@ let replResultData = $state(undefined);
|
|
|
73
82
|
let cachedColDefs = {};
|
|
74
83
|
let cachedLastRefreshCount = 0;
|
|
75
84
|
async function getColDefs(tableKey) {
|
|
76
|
-
if (!resourcePath || !resourceType)
|
|
77
|
-
return [];
|
|
78
85
|
if (cachedLastRefreshCount !== refreshCount)
|
|
79
86
|
cachedColDefs = {};
|
|
80
87
|
cachedLastRefreshCount = refreshCount;
|
|
81
|
-
if (cachedColDefs[tableKey])
|
|
88
|
+
if (cachedColDefs[tableKey])
|
|
82
89
|
return cachedColDefs[tableKey];
|
|
83
|
-
|
|
90
|
+
if (!input)
|
|
91
|
+
return [];
|
|
84
92
|
try {
|
|
85
|
-
cachedColDefs =
|
|
86
|
-
(await loadAllTablesMetaData('$res:' + resourcePath, $workspaceStore, resourceType)) ??
|
|
87
|
-
cachedColDefs;
|
|
93
|
+
cachedColDefs = (await loadAllTablesMetaData($workspaceStore, input)) ?? cachedColDefs;
|
|
88
94
|
return cachedColDefs[tableKey];
|
|
89
95
|
}
|
|
90
96
|
catch (e) {
|
|
91
|
-
|
|
97
|
+
if (input?.type == 'ducklake')
|
|
98
|
+
throw 'Impossible that loadAllTablesMetaData fails for Ducklake';
|
|
99
|
+
// Query is not implemented for all dbs, need a fallback
|
|
100
|
+
const result = await loadTableMetaData(input, $workspaceStore, tableKey);
|
|
92
101
|
if (result)
|
|
93
102
|
cachedColDefs[tableKey] = result;
|
|
94
103
|
return result ?? [];
|
|
@@ -113,126 +122,120 @@ async function getColDefs(tableKey) {
|
|
|
113
122
|
preventEscape
|
|
114
123
|
on:close={closeDrawer}
|
|
115
124
|
>
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
{
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
{
|
|
150
|
-
{/
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
})}
|
|
164
|
-
dbTableActionsFactory={[
|
|
165
|
-
dbDeleteTableActionWithPreviewScript({
|
|
166
|
-
resourcePath,
|
|
167
|
-
resourceType,
|
|
168
|
-
workspace: $workspaceStore
|
|
169
|
-
})
|
|
170
|
-
]}
|
|
171
|
-
{refresh}
|
|
172
|
-
dbTableEditorPropsFactory={({ selectedSchemaKey }) => ({
|
|
173
|
-
resourceType: resourceType!,
|
|
174
|
-
previewSql: (values) =>
|
|
175
|
-
makeCreateTableQuery(values, resourceType!, selectedSchemaKey),
|
|
176
|
-
async onConfirm(values) {
|
|
177
|
-
await runScriptAndPollResult({
|
|
178
|
-
workspace: $workspaceStore,
|
|
179
|
-
requestBody: {
|
|
180
|
-
args: { database: '$res:' + resourcePath },
|
|
181
|
-
content: makeCreateTableQuery(values, resourceType!, selectedSchemaKey),
|
|
182
|
-
language: getLanguageByResourceType(resourceType!)
|
|
183
|
-
}
|
|
184
|
-
})
|
|
185
|
-
refresh()
|
|
186
|
-
}
|
|
125
|
+
<DrawerContent
|
|
126
|
+
title={replResultData ? 'Query Result' : 'Database Manager'}
|
|
127
|
+
on:close={() => {
|
|
128
|
+
if (replResultData) {
|
|
129
|
+
replResultData = undefined
|
|
130
|
+
} else {
|
|
131
|
+
closeDrawer()
|
|
132
|
+
}
|
|
133
|
+
}}
|
|
134
|
+
CloseIcon={replResultData ? ArrowLeft : undefined}
|
|
135
|
+
noPadding
|
|
136
|
+
>
|
|
137
|
+
{#if dbSchema && $workspaceStore && input}
|
|
138
|
+
{@const _input = input}
|
|
139
|
+
{@const dbType = input.type == 'database' ? input.resourceType : 'duckdb'}
|
|
140
|
+
<Splitpanes horizontal>
|
|
141
|
+
<Pane class="relative">
|
|
142
|
+
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
143
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
144
|
+
<div
|
|
145
|
+
class={'absolute inset-0 z-10 p-8 ' +
|
|
146
|
+
(replResultData
|
|
147
|
+
? 'bg-surface/90'
|
|
148
|
+
: 'transition-colors bg-transparent pointer-events-none select-none')}
|
|
149
|
+
onclick={(e) => {
|
|
150
|
+
// Only proceed if the click is directly on this div and not on the child elements
|
|
151
|
+
if (e.target === e.currentTarget) {
|
|
152
|
+
replResultData = undefined
|
|
153
|
+
}
|
|
154
|
+
}}
|
|
155
|
+
>
|
|
156
|
+
{#if replResultData}
|
|
157
|
+
{#key replResultData}
|
|
158
|
+
<SimpleAgTable data={replResultData} class="animate-zoom-in" />
|
|
159
|
+
{/key}
|
|
160
|
+
{/if}
|
|
161
|
+
</div>
|
|
162
|
+
<DbManager
|
|
163
|
+
dbSupportsSchemas={input.type == 'database' && dbSupportsSchemas(input.resourceType)}
|
|
164
|
+
{dbSchema}
|
|
165
|
+
{getColDefs}
|
|
166
|
+
dbTableOpsFactory={({ colDefs, tableKey }) =>
|
|
167
|
+
dbTableOpsWithPreviewScripts({
|
|
168
|
+
colDefs,
|
|
169
|
+
tableKey,
|
|
170
|
+
input: _input,
|
|
171
|
+
workspace: $workspaceStore
|
|
187
172
|
})}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
173
|
+
dbTableActionsFactory={[
|
|
174
|
+
dbDeleteTableActionWithPreviewScript({ input: _input, workspace: $workspaceStore })
|
|
175
|
+
]}
|
|
176
|
+
{refresh}
|
|
177
|
+
dbTableEditorPropsFactory={({ selectedSchemaKey }) => ({
|
|
178
|
+
dbType,
|
|
179
|
+
previewSql: (values) => makeCreateTableQuery(values, dbType, selectedSchemaKey),
|
|
180
|
+
async onConfirm(values) {
|
|
181
|
+
const dbArg =
|
|
182
|
+
input?.type === 'database' ? { database: '$res:' + input.resourcePath } : {}
|
|
183
|
+
const language = getLanguageByResourceType(dbType)
|
|
184
|
+
let query = makeCreateTableQuery(values, dbType, selectedSchemaKey)
|
|
185
|
+
if (input?.type === 'ducklake') query = wrapDucklakeQuery(query, input.ducklake)
|
|
186
|
+
await runScriptAndPollResult({
|
|
187
|
+
workspace: $workspaceStore,
|
|
188
|
+
requestBody: { args: dbArg, content: query, language }
|
|
189
|
+
})
|
|
190
|
+
refresh()
|
|
191
|
+
}
|
|
192
|
+
})}
|
|
193
|
+
/>
|
|
194
|
+
</Pane>
|
|
195
|
+
<Pane bind:size={replPanelSize} minSize={REPL_MIN_SIZE} class="relative">
|
|
196
|
+
<SqlRepl
|
|
197
|
+
{input}
|
|
198
|
+
onData={(data) => {
|
|
199
|
+
replResultData = data
|
|
200
|
+
}}
|
|
201
|
+
placeholderTableName={sortArray(
|
|
202
|
+
Object.keys(
|
|
203
|
+
dbSchema?.schema[
|
|
204
|
+
'public' in dbSchema?.schema
|
|
205
|
+
? 'public'
|
|
206
|
+
: 'dbo' in dbSchema?.schema
|
|
207
|
+
? 'dbo'
|
|
208
|
+
: Object.keys(dbSchema?.schema)?.[0]
|
|
209
|
+
]
|
|
210
|
+
)
|
|
211
|
+
)?.[0]}
|
|
212
|
+
/>
|
|
213
|
+
</Pane>
|
|
214
|
+
</Splitpanes>
|
|
215
|
+
{:else}
|
|
216
|
+
<Splitpanes>
|
|
217
|
+
<Pane class="relative flex justify-center items-center">
|
|
218
|
+
<Loader2 class="animate-spin" size={32} />
|
|
219
|
+
</Pane>
|
|
220
|
+
</Splitpanes>
|
|
221
|
+
{/if}
|
|
222
|
+
{#snippet actions()}
|
|
223
|
+
<Button
|
|
224
|
+
loading={refreshing}
|
|
225
|
+
on:click={() => refresh()}
|
|
226
|
+
startIcon={{ icon: RefreshCcw }}
|
|
227
|
+
size="xs"
|
|
228
|
+
color="light"
|
|
229
|
+
>
|
|
230
|
+
Refresh
|
|
231
|
+
</Button>
|
|
228
232
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
{/key}
|
|
233
|
+
<Button
|
|
234
|
+
on:click={() => (expand = !expand)}
|
|
235
|
+
startIcon={{ icon: expand ? Minimize : Expand }}
|
|
236
|
+
size="xs"
|
|
237
|
+
color="light"
|
|
238
|
+
/>
|
|
239
|
+
{/snippet}
|
|
240
|
+
</DrawerContent>
|
|
238
241
|
</Drawer>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type DbInput } from './dbOps';
|
|
2
2
|
declare const DbManagerDrawer: import("svelte").Component<Record<string, never>, {
|
|
3
|
-
openDrawer: (
|
|
3
|
+
openDrawer: (nInput: DbInput) => void;
|
|
4
4
|
closeDrawer: () => void;
|
|
5
5
|
}, "">;
|
|
6
6
|
type DbManagerDrawer = ReturnType<typeof DbManagerDrawer>;
|
|
@@ -10,6 +10,7 @@ import DebouncedInput from './apps/components/helpers/DebouncedInput.svelte';
|
|
|
10
10
|
import InsertRowDrawerButton from './apps/components/display/InsertRowDrawerButton.svelte';
|
|
11
11
|
import { deepEqual } from 'fast-equals';
|
|
12
12
|
import 'ag-grid-community/styles/ag-grid.css';
|
|
13
|
+
import 'ag-grid-community/styles/ag-theme-alpine.css';
|
|
13
14
|
import './apps/components/display/table/theme/windmill-theme.css';
|
|
14
15
|
import { untrack } from 'svelte';
|
|
15
16
|
let { dbTableOps } = $props();
|
|
@@ -46,7 +47,7 @@ function mountGrid() {
|
|
|
46
47
|
...(dbTableOps.onUpdate && {
|
|
47
48
|
defaultColDef: {
|
|
48
49
|
flex: 1,
|
|
49
|
-
minWidth:
|
|
50
|
+
minWidth: 150,
|
|
50
51
|
editable: true,
|
|
51
52
|
onCellValueChanged: (e) => {
|
|
52
53
|
if (!$workspaceStore)
|
|
@@ -65,7 +66,6 @@ function mountGrid() {
|
|
|
65
66
|
}
|
|
66
67
|
}),
|
|
67
68
|
onViewportChanged: (e) => ([firstRow, lastRow] = [e.firstRow, e.lastRow]),
|
|
68
|
-
infiniteInitialRowCount: 100,
|
|
69
69
|
cacheBlockSize: 100,
|
|
70
70
|
cacheOverflowSize: 10,
|
|
71
71
|
maxBlocksInCache: 20,
|
|
@@ -130,7 +130,7 @@ function updateGrid() {
|
|
|
130
130
|
{#if dbTableOps.onInsert}
|
|
131
131
|
<InsertRowDrawerButton
|
|
132
132
|
columnDefs={dbTableOps.colDefs ?? []}
|
|
133
|
-
dbType={dbTableOps.
|
|
133
|
+
dbType={dbTableOps.dbType}
|
|
134
134
|
onInsert={(values) => {
|
|
135
135
|
if (!$workspaceStore) return
|
|
136
136
|
dbTableOps.onInsert?.({ values }).then((result) => {
|