windmill-components 1.352.9 → 1.362.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/assets/app.css +8 -45
- package/package/components/ApiConnectForm.svelte +1 -0
- package/package/components/ArgInput.svelte +5 -1
- package/package/components/ChangeInstanceUsername.svelte +20 -12
- package/package/components/ContentSearchInner.svelte +359 -0
- package/package/components/{ContentSearch.svelte.d.ts → ContentSearchInner.svelte.d.ts} +9 -5
- package/package/components/CustomPopover.svelte +73 -0
- package/package/components/CustomPopover.svelte.d.ts +29 -0
- package/package/components/DateTimeInput.svelte +29 -3
- package/package/components/DateTimeInput.svelte.d.ts +4 -0
- package/package/components/Dev.svelte +8 -3
- package/package/components/DurationMs.svelte +2 -2
- package/package/components/FlowBuilder.svelte +122 -24
- package/package/components/FlowBuilder.svelte.d.ts +1 -0
- package/package/components/FlowGraphViewerStep.svelte +2 -2
- package/package/components/FlowJobResult.svelte +5 -3
- package/package/components/FlowStatusViewer.svelte +4 -3
- package/package/components/FlowStatusViewerInner.svelte +265 -160
- package/package/components/FlowStatusViewerInner.svelte.d.ts +15 -2
- package/package/components/HighlightTheme.svelte +75 -77
- package/package/components/InputTransformForm.svelte +2 -0
- package/package/components/JobArgs.svelte +59 -44
- package/package/components/JobArgs.svelte.d.ts +2 -0
- package/package/components/LightweightArgInput.svelte +27 -2
- package/package/components/Path.svelte +3 -8
- package/package/components/Popover.svelte +1 -1
- package/package/components/ResourceEditor.svelte +3 -2
- package/package/components/ResourceEditorDrawer.svelte +4 -1
- package/package/components/ResourcePicker.svelte +1 -0
- package/package/components/RunChart.svelte +6 -3
- package/package/components/RunChart.svelte.d.ts +1 -0
- package/package/components/RunForm.svelte +24 -23
- package/package/components/RunForm.svelte.d.ts +0 -2
- package/package/components/SavedInputs.svelte +50 -39
- package/package/components/ScheduleEditorInner.svelte +26 -4
- package/package/components/ScriptBuilder.svelte +47 -22
- package/package/components/ScriptBuilder.svelte.d.ts +1 -0
- package/package/components/SearchItems.svelte +5 -4
- package/package/components/Summary.svelte +74 -0
- package/package/components/Summary.svelte.d.ts +16 -0
- package/package/components/apps/components/display/AppMarkdown.svelte +3 -2
- package/package/components/apps/components/display/AppMenu.svelte +2 -2
- package/package/components/apps/components/display/AppNavbar.svelte +94 -0
- package/package/components/apps/components/display/AppNavbar.svelte.d.ts +24 -0
- package/package/components/apps/components/display/AppNavbarItem.svelte +146 -0
- package/package/components/apps/components/display/AppNavbarItem.svelte.d.ts +27 -0
- package/package/components/apps/components/display/ResolveNavbarItemPath.svelte +21 -0
- package/package/components/apps/components/display/ResolveNavbarItemPath.svelte.d.ts +20 -0
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +16 -0
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +12 -16
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +5 -0
- package/package/components/apps/components/display/table/AppAggridTable.svelte +28 -6
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +68 -43
- package/package/components/apps/components/inputs/AppDateSelect.svelte +284 -0
- package/package/components/apps/components/inputs/AppDateSelect.svelte.d.ts +21 -0
- package/package/components/apps/components/inputs/AppDateTimeInput.svelte +2 -0
- package/package/components/apps/components/inputs/AppFileInput.svelte +22 -27
- package/package/components/apps/components/inputs/AppFileInput.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppTextInput.svelte +1 -1
- package/package/components/apps/components/layout/AppDecisionTree.svelte +32 -30
- package/package/components/apps/components/layout/AppModal.svelte +17 -6
- package/package/components/apps/editor/AppDeploymentHistory.svelte +2 -3
- package/package/components/apps/editor/AppDeploymentHistory.svelte.d.ts +3 -2
- package/package/components/apps/editor/AppEditor.svelte +9 -2
- package/package/components/apps/editor/AppEditorHeader.svelte +7 -10
- package/package/components/apps/editor/AppPreview.svelte +12 -3
- package/package/components/apps/editor/AppPreview.svelte.d.ts +2 -0
- package/package/components/apps/editor/DecisionTreeDebug.svelte +92 -68
- package/package/components/apps/editor/DeploymentHistory.svelte +0 -2
- package/package/components/apps/editor/appUtils.d.ts +1 -0
- package/package/components/apps/editor/appUtils.js +17 -0
- package/package/components/apps/editor/component/Component.svelte +23 -0
- package/package/components/apps/editor/component/components.d.ts +205 -3
- package/package/components/apps/editor/component/components.js +160 -1
- package/package/components/apps/editor/component/default-codes.js +13 -13
- package/package/components/apps/editor/component/sets.js +4 -2
- package/package/components/apps/editor/componentsPanel/ComponentList.svelte +12 -12
- package/package/components/apps/editor/componentsPanel/cssUtils.js +39 -3
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +6 -0
- package/package/components/apps/editor/contextPanel/ComponentOutput.svelte +2 -2
- package/package/components/apps/editor/contextPanel/ContextPanel.svelte +6 -0
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +11 -0
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +4 -0
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +21 -8
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +64 -20
- package/package/components/apps/editor/settingsPanel/ContextVariables.svelte +48 -15
- package/package/components/apps/editor/settingsPanel/ContextVariables.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +25 -5
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte +2 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/DocLink.svelte +33 -0
- package/package/components/apps/editor/settingsPanel/DocLink.svelte.d.ts +19 -0
- package/package/components/apps/editor/settingsPanel/GridNavbar.svelte +192 -0
- package/package/components/apps/editor/settingsPanel/GridNavbar.svelte.d.ts +18 -0
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +2 -2
- package/package/components/apps/editor/settingsPanel/RefreshDatabaseStudioTable.svelte +17 -0
- package/package/components/apps/editor/settingsPanel/RefreshDatabaseStudioTable.svelte.d.ts +16 -0
- package/package/components/apps/editor/settingsPanel/TableActions.svelte +81 -38
- package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +12 -5
- package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +11 -12
- package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +4 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +4 -1
- package/package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +7 -1
- package/package/components/apps/inputType.d.ts +2 -2
- package/package/components/apps/svelte-select/lib/Select.svelte +2 -3
- package/package/components/apps/types.d.ts +3 -0
- package/package/components/auditLogs/AuditLogsTable.svelte +2 -2
- package/package/components/common/CloseButton.svelte +10 -10
- package/package/components/common/CloseButton.svelte.d.ts +6 -14
- package/package/components/common/calendarPicker/CalendarPicker.svelte +5 -0
- package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +2 -0
- package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +7 -1
- package/package/components/common/fileInput/FileInput.svelte +2 -0
- package/package/components/common/fileInput/FileInput.svelte.d.ts +1 -0
- package/package/components/common/popup/Popup.svelte +4 -3
- package/package/components/common/popup/Popup.svelte.d.ts +1 -0
- package/package/components/common/table/AppRow.svelte +3 -10
- package/package/components/common/table/FlowRow.svelte +12 -1
- package/package/components/copilot/IteratorGen.svelte +1 -1
- package/package/components/copilot/PredicateGen.svelte +1 -1
- package/package/components/copilot/StepInputGen.svelte +8 -3
- package/package/components/copilot/StepInputsGen.svelte +5 -2
- package/package/components/details/WebhooksPanel.svelte +32 -1
- package/package/components/details/WebhooksPanel.svelte.d.ts +2 -11
- package/package/components/flows/FlowHistory.svelte +208 -0
- package/package/components/flows/FlowHistory.svelte.d.ts +21 -0
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte +1 -1
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte +1 -1
- package/package/components/flows/content/FlowEditorPanel.svelte +1 -1
- package/package/components/flows/content/FlowLoop.svelte +23 -26
- package/package/components/flows/content/FlowModuleComponent.svelte +2 -18
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +10 -4
- package/package/components/flows/content/FlowModuleHeader.svelte +3 -4
- package/package/components/flows/content/FlowModuleScript.svelte +1 -1
- package/package/components/flows/content/FlowModuleSleep.svelte +1 -0
- package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
- package/package/components/flows/content/SuspendDrawer.svelte +7 -7
- package/package/components/flows/flowStateUtils.js +2 -1
- package/package/components/flows/flowStore.js +1 -1
- package/package/components/flows/header/FlowImportExportMenu.svelte +3 -16
- package/package/components/flows/header/FlowImportExportMenu.svelte.d.ts +4 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +69 -0
- package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +22 -0
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +7 -4
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
- package/package/components/flows/map/MapItem.svelte +20 -0
- package/package/components/flows/map/MapItem.svelte.d.ts +9 -0
- package/package/components/flows/map/VirtualItem.svelte +4 -2
- package/package/components/flows/map/VirtualItem.svelte.d.ts +1 -0
- package/package/components/flows/previousResults.d.ts +9 -0
- package/package/components/flows/previousResults.js +42 -8
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +2 -0
- package/package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +1 -0
- package/package/components/flows/types.d.ts +1 -1
- package/package/components/graph/FlowGraph.svelte +80 -42
- package/package/components/graph/FlowGraph.svelte.d.ts +1 -0
- package/package/components/graph/model.d.ts +6 -1
- package/package/components/graph/svelvet/container/controllers/middleware.js +4 -4
- package/package/components/graph/svelvet/container/views/GraphView.svelte +2 -0
- package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +24 -25
- package/package/components/graph/util.d.ts +1 -1
- package/package/components/graph/util.js +1 -2
- package/package/components/home/ItemsList.svelte +22 -19
- package/package/components/jobs/JobPreview.svelte +11 -2
- package/package/components/propertyPicker/PropPicker.svelte +30 -0
- package/package/components/propertyPicker/PropPickerResult.svelte +14 -1
- package/package/components/propertyPicker/PropPickerResult.svelte.d.ts +1 -0
- package/package/components/runs/JobLoader.svelte +21 -8
- package/package/components/runs/JobLoader.svelte.d.ts +2 -0
- package/package/components/runs/JobPreview.svelte +5 -1
- package/package/components/runs/RunRow.svelte +12 -8
- package/package/components/runs/RunsFilter.svelte +2 -4
- package/package/components/runs/RunsFilter.svelte.d.ts +0 -1
- package/package/components/runs/RunsTable.svelte +63 -29
- package/package/components/runs/RunsTable.svelte.d.ts +1 -0
- package/package/components/schema/EditableSchemaWrapper.svelte +9 -1
- package/package/components/schema/PropertyEditor.svelte +1 -1
- package/package/components/search/GlobalSearchModal.svelte +559 -0
- package/package/components/search/GlobalSearchModal.svelte.d.ts +17 -0
- package/package/components/search/QuickMenuItem.svelte +76 -0
- package/package/components/search/QuickMenuItem.svelte.d.ts +27 -0
- package/package/components/sidebar/MenuButton.svelte +11 -0
- package/package/components/sidebar/MenuButton.svelte.d.ts +4 -0
- package/package/components/sidebar/changelogs.js +35 -0
- package/package/components/wizards/AppPicker.svelte +68 -0
- package/package/components/wizards/AppPicker.svelte.d.ts +17 -0
- package/package/components/wizards/NavbarWizard.svelte +131 -0
- package/package/components/wizards/NavbarWizard.svelte.d.ts +19 -0
- package/package/defaults.d.ts +1 -1
- package/package/defaults.js +1 -1
- package/package/es6.d.ts.txt +370 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +42 -3
- package/package/gen/schemas.gen.js +42 -3
- package/package/gen/services.gen.d.ts +80 -5
- package/package/gen/services.gen.js +149 -8
- package/package/gen/types.gen.d.ts +265 -11
- package/package/inferArgSig.js +4 -0
- package/package/script_helpers.d.ts +3 -3
- package/package/script_helpers.js +46 -22
- package/package/stores.d.ts +1 -1
- package/package/stores.js +1 -1
- package/package/utils.d.ts +7 -23
- package/package/utils.js +54 -33
- package/package/windmill_fetch.d.ts.txt +6 -6
- package/package.json +3 -11
- package/package/components/ContentSearch.svelte +0 -355
|
@@ -138,7 +138,7 @@ let ccDrawer;
|
|
|
138
138
|
<ListItem title={`${title}`} subtitle={`(${components.length})`}>
|
|
139
139
|
<div class="flex flex-wrap gap-3 py-2">
|
|
140
140
|
{#each components as item (item)}
|
|
141
|
-
<div class="w-
|
|
141
|
+
<div class="w-[64px] relative">
|
|
142
142
|
{#if DEPRECATED_COMPONENTS[item]}
|
|
143
143
|
<div
|
|
144
144
|
class="absolute -top-2 -right-2 bg-gray-100 text-gray-900 dark:bg-gray-800 dark:text-gray-100 rounded-md py-0.5 px-1 flex flex-row gap-1 items-center"
|
|
@@ -166,7 +166,7 @@ let ccDrawer;
|
|
|
166
166
|
})
|
|
167
167
|
}}
|
|
168
168
|
title={componentsRecord[item].name}
|
|
169
|
-
class="cursor-move transition-all border w-
|
|
169
|
+
class="cursor-move transition-all border w-[64px] shadow-sm h-16 p-2 flex flex-col gap-2 items-center
|
|
170
170
|
justify-center bg-surface rounded-md hover:bg-blue-50 dark:hover:bg-blue-900 duration-200 hover:border-blue-500"
|
|
171
171
|
>
|
|
172
172
|
<svelte:component this={componentsRecord[item].icon} class="text-primary" />
|
|
@@ -178,11 +178,11 @@ let ccDrawer;
|
|
|
178
178
|
{/each}
|
|
179
179
|
{#if presets}
|
|
180
180
|
{#each presets as presetItem (presetItem)}
|
|
181
|
-
<div class="w-
|
|
181
|
+
<div class="w-[64px]">
|
|
182
182
|
<button
|
|
183
183
|
on:click={() => addPresetComponent(presetItem)}
|
|
184
184
|
title={presetsRecord[presetItem].name}
|
|
185
|
-
class="transition-all border w-
|
|
185
|
+
class="transition-all border w-[64px] shadow-sm h-16 p-2 flex flex-col gap-2 items-center
|
|
186
186
|
justify-center bg-surface rounded-md hover:bg-blue-50 dark:hover:bg-blue-900 duration-200 hover:border-blue-500"
|
|
187
187
|
>
|
|
188
188
|
<svelte:component
|
|
@@ -205,13 +205,13 @@ let ccDrawer;
|
|
|
205
205
|
<div class="flex flex-wrap gap-3 py-2">
|
|
206
206
|
{#if groups}
|
|
207
207
|
{#each groups as group (group.path)}
|
|
208
|
-
<div class="w-
|
|
208
|
+
<div class="w-[64px]">
|
|
209
209
|
<button
|
|
210
210
|
on:click={() => {
|
|
211
211
|
addGroup(group)
|
|
212
212
|
}}
|
|
213
213
|
title={group.name}
|
|
214
|
-
class="transition-all border w-
|
|
214
|
+
class="transition-all border w-[64px] shadow-sm h-16 p-2 flex flex-col gap-2 items-center
|
|
215
215
|
justify-center bg-surface rounded-md hover:bg-blue-50 dark:hover:bg-blue-900 duration-200 hover:border-blue-500"
|
|
216
216
|
>
|
|
217
217
|
<LayoutDashboard class="text-secondary" />
|
|
@@ -222,13 +222,13 @@ let ccDrawer;
|
|
|
222
222
|
</div>
|
|
223
223
|
{/each}
|
|
224
224
|
{/if}
|
|
225
|
-
<div class="w-
|
|
225
|
+
<div class="w-[64px]">
|
|
226
226
|
<button
|
|
227
227
|
on:click={() => {
|
|
228
228
|
addNewGroup()
|
|
229
229
|
}}
|
|
230
230
|
title=""
|
|
231
|
-
class="transition-all border w-
|
|
231
|
+
class="transition-all border w-[64px] shadow-sm h-16 p-2 flex flex-col gap-2 items-center
|
|
232
232
|
justify-center bg-surface rounded-md hover:bg-blue-50 dark:hover:bg-blue-900 duration-200 hover:border-blue-500"
|
|
233
233
|
>
|
|
234
234
|
<Plus class="text-secondary" />
|
|
@@ -241,13 +241,13 @@ let ccDrawer;
|
|
|
241
241
|
<div class="flex flex-wrap gap-3 py-2">
|
|
242
242
|
{#if customComponents}
|
|
243
243
|
{#each customComponents as cc (cc.path)}
|
|
244
|
-
<div class="w-
|
|
244
|
+
<div class="w-[64px]">
|
|
245
245
|
<button
|
|
246
246
|
on:click={() => {
|
|
247
247
|
addCustomComponent(cc)
|
|
248
248
|
}}
|
|
249
249
|
title={cc.name}
|
|
250
|
-
class="transition-all border w-
|
|
250
|
+
class="transition-all border w-[64px] shadow-sm h-16 p-2 flex flex-col gap-2 items-center
|
|
251
251
|
justify-center bg-surface rounded-md hover:bg-blue-50 dark:hover:bg-blue-900 duration-200 hover:border-blue-500"
|
|
252
252
|
>
|
|
253
253
|
<LayoutDashboard class="text-secondary" />
|
|
@@ -258,7 +258,7 @@ let ccDrawer;
|
|
|
258
258
|
</div>
|
|
259
259
|
{/each}
|
|
260
260
|
{/if}
|
|
261
|
-
<div class="w-
|
|
261
|
+
<div class="w-[64px]">
|
|
262
262
|
<button
|
|
263
263
|
on:click={() => {
|
|
264
264
|
if (!$enterpriseLicense) {
|
|
@@ -268,7 +268,7 @@ let ccDrawer;
|
|
|
268
268
|
}
|
|
269
269
|
}}
|
|
270
270
|
title=""
|
|
271
|
-
class="transition-all border w-
|
|
271
|
+
class="transition-all border w-[64px] shadow-sm h-16 p-2 flex flex-col gap-2 items-center
|
|
272
272
|
justify-center bg-surface rounded-md hover:bg-blue-50 dark:hover:bg-blue-900 duration-200 hover:border-blue-500"
|
|
273
273
|
>
|
|
274
274
|
<Plus class="text-secondary" />
|
|
@@ -322,7 +322,13 @@ export const customisationByComponent = [
|
|
|
322
322
|
variables: []
|
|
323
323
|
},
|
|
324
324
|
{
|
|
325
|
-
components: [
|
|
325
|
+
components: [
|
|
326
|
+
'aggridcomponent',
|
|
327
|
+
'aggridcomponentee',
|
|
328
|
+
'aggridinfinitecomponent',
|
|
329
|
+
'aggridinfinitecomponentee',
|
|
330
|
+
'dbexplorercomponent'
|
|
331
|
+
],
|
|
326
332
|
selectors: [
|
|
327
333
|
{ selector: '.wm-aggrid-container', comment: 'Ag grid container', customCssKey: 'container' }
|
|
328
334
|
],
|
|
@@ -354,7 +360,7 @@ export const customisationByComponent = [
|
|
|
354
360
|
variables: []
|
|
355
361
|
},
|
|
356
362
|
{
|
|
357
|
-
components: ['fileinputcomponent'],
|
|
363
|
+
components: ['fileinputcomponent', 's3fileinputcomponent'],
|
|
358
364
|
selectors: [
|
|
359
365
|
{ selector: '.wm-file-input', comment: 'File input component', customCssKey: 'input' }
|
|
360
366
|
],
|
|
@@ -517,7 +523,7 @@ export const customisationByComponent = [
|
|
|
517
523
|
variables: []
|
|
518
524
|
},
|
|
519
525
|
{
|
|
520
|
-
components: ['agchartscomponent'],
|
|
526
|
+
components: ['agchartscomponent', 'agchartscomponentee'],
|
|
521
527
|
selectors: [{ selector: '.wm-agchart', comment: 'AgCharts', customCssKey: 'container' }],
|
|
522
528
|
variables: []
|
|
523
529
|
},
|
|
@@ -739,6 +745,36 @@ export const customisationByComponent = [
|
|
|
739
745
|
}
|
|
740
746
|
],
|
|
741
747
|
root: '.multiselect'
|
|
748
|
+
},
|
|
749
|
+
{
|
|
750
|
+
components: ['alertcomponent'],
|
|
751
|
+
selectors: [
|
|
752
|
+
{
|
|
753
|
+
selector: 'wm-alert-card-container',
|
|
754
|
+
comment: 'Alert container',
|
|
755
|
+
customCssKey: 'container'
|
|
756
|
+
}
|
|
757
|
+
],
|
|
758
|
+
variables: []
|
|
759
|
+
},
|
|
760
|
+
{
|
|
761
|
+
components: ['decisiontreecomponent'],
|
|
762
|
+
selectors: [
|
|
763
|
+
{
|
|
764
|
+
selector: 'wm-decision-tree',
|
|
765
|
+
comment: 'Decision tree container',
|
|
766
|
+
customCssKey: 'container'
|
|
767
|
+
}
|
|
768
|
+
],
|
|
769
|
+
variables: []
|
|
770
|
+
},
|
|
771
|
+
{
|
|
772
|
+
components: ['menucomponent'],
|
|
773
|
+
selectors: [
|
|
774
|
+
{ selector: '.wm-menu-button', comment: 'Menu button', customCssKey: 'button' },
|
|
775
|
+
{ selector: '.wm-menu-button-container', comment: 'Menu button container' }
|
|
776
|
+
],
|
|
777
|
+
variables: []
|
|
742
778
|
}
|
|
743
779
|
];
|
|
744
780
|
export const allClasses = customisationByComponent
|
|
@@ -694,5 +694,11 @@ export const quickStyleProperties = {
|
|
|
694
694
|
icon: containerDefaultProps,
|
|
695
695
|
title: containerDefaultProps,
|
|
696
696
|
description: containerDefaultProps
|
|
697
|
+
},
|
|
698
|
+
navbarcomponent: {
|
|
699
|
+
container: containerDefaultProps
|
|
700
|
+
},
|
|
701
|
+
dateselectcomponent: {
|
|
702
|
+
input: inputDefaultProps
|
|
697
703
|
}
|
|
698
704
|
};
|
|
@@ -15,7 +15,7 @@ export let expanded = false;
|
|
|
15
15
|
const { connectingInput } = getContext('AppViewerContext');
|
|
16
16
|
const name = getComponentNameById(gridItem.id);
|
|
17
17
|
$: nameOverrides =
|
|
18
|
-
gridItem
|
|
18
|
+
gridItem?.data?.type === 'decisiontreecomponent'
|
|
19
19
|
? gridItem.data.nodes.map((n, i) => `${n.label} (Tab index ${i})`)
|
|
20
20
|
: undefined;
|
|
21
21
|
function getComponentNameById(componentId) {
|
|
@@ -32,7 +32,7 @@ function getComponentNameById(componentId) {
|
|
|
32
32
|
return 'Table action';
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
$: subGrids = Array.from({ length: gridItem.data
|
|
35
|
+
$: subGrids = Array.from({ length: gridItem.data?.numberOfSubgrids ?? 0 }).map((_, i) => `${gridItem.id}-${i}`);
|
|
36
36
|
</script>
|
|
37
37
|
|
|
38
38
|
<OutputHeader id={gridItem.id} name={getComponentNameById(gridItem.id)} {first} {nested}>
|
|
@@ -7,12 +7,18 @@ import ComponentOutputViewer from './ComponentOutputViewer.svelte';
|
|
|
7
7
|
import BackgroundScriptsOutput from './components/BackgroundScriptsOutput.svelte';
|
|
8
8
|
import OutputHeader from './components/OutputHeader.svelte';
|
|
9
9
|
import { ClearableInput } from '../../../common';
|
|
10
|
+
import DocLink from '../settingsPanel/DocLink.svelte';
|
|
10
11
|
const { connectingInput, app } = getContext('AppViewerContext');
|
|
11
12
|
const { search } = getContext('ContextPanel');
|
|
12
13
|
let hasState = false;
|
|
13
14
|
</script>
|
|
14
15
|
|
|
15
16
|
<PanelSection noPadding titlePadding="px-2 pt-2" title="Outputs">
|
|
17
|
+
<svelte:fragment slot="action">
|
|
18
|
+
<div class="p-0.5">
|
|
19
|
+
<DocLink docLink="https://www.windmill.dev/docs/apps/outputs" />
|
|
20
|
+
</div>
|
|
21
|
+
</svelte:fragment>
|
|
16
22
|
<div
|
|
17
23
|
class={classNames(
|
|
18
24
|
'bg-surface w-full h-full z-30 overflow-auto',
|
|
@@ -4,6 +4,7 @@ import { ChevronDown, ChevronUp, Pointer } from 'lucide-svelte';
|
|
|
4
4
|
import { getContext } from 'svelte';
|
|
5
5
|
import { allsubIds, findGridItem } from '../../appUtils';
|
|
6
6
|
import IdEditor from './IdEditor.svelte';
|
|
7
|
+
import DocLink from '../../settingsPanel/DocLink.svelte';
|
|
7
8
|
export let id;
|
|
8
9
|
export let name;
|
|
9
10
|
export let first = false;
|
|
@@ -227,6 +228,16 @@ function processRunnable(from, to, runnable) {
|
|
|
227
228
|
{/if}
|
|
228
229
|
</div>
|
|
229
230
|
<div class="text-2xs font-bold flex flex-row gap-2 items-center truncate">
|
|
231
|
+
{#if ['ctx', 'state'].includes(id)}
|
|
232
|
+
<DocLink
|
|
233
|
+
docLink={id === 'state'
|
|
234
|
+
? 'https://www.windmill.dev/docs/apps/outputs#state'
|
|
235
|
+
: id === 'ctx'
|
|
236
|
+
? 'https://www.windmill.dev/docs/apps/outputs#app-context'
|
|
237
|
+
: ''}
|
|
238
|
+
size="xs2"
|
|
239
|
+
/>
|
|
240
|
+
{/if}
|
|
230
241
|
{name}
|
|
231
242
|
<div class={classNames('bg-surface-secondary rounded-sm')}>
|
|
232
243
|
{#if !open}
|
|
@@ -9,6 +9,7 @@ import AppTutorials from '../../../AppTutorials.svelte';
|
|
|
9
9
|
import { tutorialsToDo } from '../../../../stores';
|
|
10
10
|
import { ignoredTutorials } from '../../../tutorials/ignoredTutorials';
|
|
11
11
|
import { tutorialInProgress } from '../../../../tutorialUtils';
|
|
12
|
+
import DocLink from '../settingsPanel/DocLink.svelte';
|
|
12
13
|
const PREFIX = 'script-selector-';
|
|
13
14
|
const { app, selectedComponent } = getContext('AppViewerContext');
|
|
14
15
|
const { selectedComponentInEditor } = getContext('AppEditorContext');
|
|
@@ -64,6 +65,9 @@ let appTutorials = undefined;
|
|
|
64
65
|
</script>
|
|
65
66
|
|
|
66
67
|
<PanelSection title="Runnables" id="app-editor-runnable-panel">
|
|
68
|
+
<svelte:fragment slot="action">
|
|
69
|
+
<DocLink docLink="https://www.windmill.dev/docs/apps/app-runnable-panel#creating-a-runnable" />
|
|
70
|
+
</svelte:fragment>
|
|
67
71
|
<div class="w-full flex flex-col gap-6 py-1">
|
|
68
72
|
<div>
|
|
69
73
|
<div class="flex flex-col gap-2 w-full">
|
|
@@ -6,6 +6,7 @@ import { dragHandle, dragHandleZone } from '@windmill-labs/svelte-dnd-action';
|
|
|
6
6
|
import { generateRandomString, pluralize } from '../../../../utils';
|
|
7
7
|
import Toggle from '../../../Toggle.svelte';
|
|
8
8
|
import QuickAddColumn from './QuickAddColumn.svelte';
|
|
9
|
+
import RefreshDatabaseStudioTable from './RefreshDatabaseStudioTable.svelte';
|
|
9
10
|
export let componentInput;
|
|
10
11
|
export let subFieldType = undefined;
|
|
11
12
|
export let selectOptions = undefined;
|
|
@@ -191,11 +192,20 @@ function handleFinalize(e) {
|
|
|
191
192
|
const reorderedValues = items.map((item) => item.value);
|
|
192
193
|
componentInput.value = reorderedValues;
|
|
193
194
|
}
|
|
194
|
-
let items = (
|
|
195
|
-
|
|
196
|
-
.
|
|
197
|
-
|
|
198
|
-
|
|
195
|
+
let items = getItems(componentInput);
|
|
196
|
+
function getItems(componentInput) {
|
|
197
|
+
return (Array.isArray(componentInput.value) ? componentInput.value : [])
|
|
198
|
+
.filter((x) => x != undefined)
|
|
199
|
+
.map((item) => {
|
|
200
|
+
return { value: item, id: generateRandomString() };
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
function clearTableOnComponentReset(value) {
|
|
204
|
+
if (Array.isArray(value) && value.length === 0 && items.length > 0) {
|
|
205
|
+
items = [];
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
$: subFieldType === 'db-explorer' && clearTableOnComponentReset(componentInput?.value);
|
|
199
209
|
$: items != undefined && handleItemsChange();
|
|
200
210
|
function handleItemsChange() {
|
|
201
211
|
componentInput.value = items.map((item) => item.value).filter((item) => item != undefined);
|
|
@@ -280,11 +290,14 @@ let raw = false;
|
|
|
280
290
|
{/if}
|
|
281
291
|
{#if subFieldType === 'db-explorer'}
|
|
282
292
|
{#if componentInput.loading}
|
|
283
|
-
<div class="flex flex-row gap-2 w-full items-center
|
|
284
|
-
<
|
|
285
|
-
|
|
293
|
+
<div class="flex flex-row gap-2 w-full items-center">
|
|
294
|
+
<div class="flex flex-row gap-2 w-full items-center text-xs">
|
|
295
|
+
<Loader2 class="animate-spin" size={14} />
|
|
296
|
+
Loading columns defintions...
|
|
297
|
+
</div>
|
|
286
298
|
</div>
|
|
287
299
|
{/if}
|
|
300
|
+
<RefreshDatabaseStudioTable {id} />
|
|
288
301
|
{/if}
|
|
289
302
|
{#if subFieldType !== 'db-explorer'}
|
|
290
303
|
<Button size="xs" color="light" startIcon={{ icon: Plus }} on:click={() => addElementByType()}>
|
|
@@ -15,18 +15,19 @@ import TemplateEditor from '../../../TemplateEditor.svelte';
|
|
|
15
15
|
import { ccomponents, components } from '../component';
|
|
16
16
|
import CssProperty from '../componentsPanel/CssProperty.svelte';
|
|
17
17
|
import GridTab from './GridTab.svelte';
|
|
18
|
-
import { deleteGridItem } from '../appUtils';
|
|
18
|
+
import { deleteGridItem, isTableAction } from '../appUtils';
|
|
19
19
|
import GridPane from './GridPane.svelte';
|
|
20
20
|
import { slide } from 'svelte/transition';
|
|
21
21
|
import { push } from '../../../../history';
|
|
22
22
|
import StylePanel from './StylePanel.svelte';
|
|
23
|
-
import { ChevronLeft,
|
|
23
|
+
import { ChevronLeft, ArrowBigUp, ArrowLeft } from 'lucide-svelte';
|
|
24
24
|
import GridCondition from './GridCondition.svelte';
|
|
25
25
|
import { isTriggerable } from './script/utils';
|
|
26
26
|
import { inferDeps } from '../appUtilsInfer';
|
|
27
27
|
import EvalV2InputEditor from './inputEditor/EvalV2InputEditor.svelte';
|
|
28
28
|
import GridGroup from './GridGroup.svelte';
|
|
29
29
|
import { secondaryMenuLeft } from './secondaryMenu';
|
|
30
|
+
import DocLink from './DocLink.svelte';
|
|
30
31
|
import ComponentControl from './ComponentControl.svelte';
|
|
31
32
|
import GridAgGridLicenseKey from './GridAgGridLicenseKey.svelte';
|
|
32
33
|
import ComponentPanelDataSource from './ComponentPanelDataSource.svelte';
|
|
@@ -36,6 +37,10 @@ import GridAgChartsLicenseKe from './GridAgChartsLicenseKe.svelte';
|
|
|
36
37
|
import Toggle from '../../../Toggle.svelte';
|
|
37
38
|
import ContextVariables from './ContextVariables.svelte';
|
|
38
39
|
import EventHandlers from './EventHandlers.svelte';
|
|
40
|
+
import GridNavbar from './GridNavbar.svelte';
|
|
41
|
+
import Badge from '../../../common/badge/Badge.svelte';
|
|
42
|
+
import { twMerge } from 'tailwind-merge';
|
|
43
|
+
import Popover from '../../../Popover.svelte';
|
|
39
44
|
export let componentSettings = undefined;
|
|
40
45
|
export let onDelete = undefined;
|
|
41
46
|
export let noGrid = false;
|
|
@@ -133,22 +138,54 @@ function transformToFrontend() {
|
|
|
133
138
|
|
|
134
139
|
<svelte:window on:keydown={keydown} />
|
|
135
140
|
|
|
141
|
+
{#if componentSettings?.item?.id && isTableAction(componentSettings?.item?.id, $app)}
|
|
142
|
+
<div
|
|
143
|
+
class="flex items-center px-3 py-2 bg-surface border-b text-xs font-semibold gap-2 justify-between"
|
|
144
|
+
>
|
|
145
|
+
<div class="flex flex-row items-center gap-2">
|
|
146
|
+
<Popover>
|
|
147
|
+
<svelte:fragment slot="text">
|
|
148
|
+
<div class="flex flex-row gap-1"> Back to table component </div>
|
|
149
|
+
</svelte:fragment>
|
|
150
|
+
<Button
|
|
151
|
+
iconOnly
|
|
152
|
+
startIcon={{
|
|
153
|
+
icon: ArrowLeft
|
|
154
|
+
}}
|
|
155
|
+
size="xs"
|
|
156
|
+
btnClasses={twMerge(
|
|
157
|
+
'p-1 text-gray-300 hover:!text-gray-600 dark:text-gray-500 dark:hover:!text-gray-200 bg-transparent'
|
|
158
|
+
)}
|
|
159
|
+
on:click={() => {
|
|
160
|
+
const tableId = componentSettings?.item?.id?.split?.('_')?.[0]
|
|
161
|
+
|
|
162
|
+
if (tableId) {
|
|
163
|
+
$selectedComponent = [tableId]
|
|
164
|
+
}
|
|
165
|
+
}}
|
|
166
|
+
color="light"
|
|
167
|
+
/>
|
|
168
|
+
</Popover>
|
|
169
|
+
|
|
170
|
+
<div class="flex flex-row gap-2 items-center">
|
|
171
|
+
Table action of table
|
|
172
|
+
<Badge color="indigo">{componentSettings?.item?.id.split('_')[0]}</Badge>
|
|
173
|
+
</div>
|
|
174
|
+
</div>
|
|
175
|
+
|
|
176
|
+
<DocLink
|
|
177
|
+
docLink="https://www.windmill.dev/docs/apps/app_configuration_settings/aggrid_table#table-actions"
|
|
178
|
+
/>
|
|
179
|
+
</div>
|
|
180
|
+
{/if}
|
|
181
|
+
|
|
136
182
|
{#if componentSettings?.item?.data}
|
|
137
183
|
{@const component = componentSettings.item.data}
|
|
138
|
-
<div class="flex justify-between items-center px-3 py-
|
|
184
|
+
<div class="flex justify-between items-center px-3 py-1 bg-surface-secondary">
|
|
139
185
|
<div class="text-xs text-primary font-semibold"
|
|
140
186
|
>{components[componentSettings.item.data.type]?.name ?? 'Unknown'}</div
|
|
141
187
|
>
|
|
142
|
-
<
|
|
143
|
-
href={components[componentSettings.item.data.type]?.documentationLink}
|
|
144
|
-
target="_blank"
|
|
145
|
-
class="text-frost-500 dark:text-frost-300 font-semibold text-xs"
|
|
146
|
-
>
|
|
147
|
-
<div class="flex flex-row gap-2">
|
|
148
|
-
See documentation
|
|
149
|
-
<ExternalLink size="16" />
|
|
150
|
-
</div>
|
|
151
|
-
</a>
|
|
188
|
+
<DocLink docLink={components[componentSettings.item.data.type]?.documentationLink} />
|
|
152
189
|
</div>
|
|
153
190
|
|
|
154
191
|
<div class="flex min-h-[calc(100%-32px)] flex-col min-w-[150px] w-full divide-y">
|
|
@@ -165,16 +202,19 @@ function transformToFrontend() {
|
|
|
165
202
|
id={'component-input'}
|
|
166
203
|
>
|
|
167
204
|
<svelte:fragment slot="action">
|
|
168
|
-
|
|
169
|
-
<
|
|
205
|
+
<div class="flex flex-row gap-1 justify-center items-center">
|
|
206
|
+
<DocLink
|
|
207
|
+
docLink={'https://www.windmill.dev/docs/apps/app-runnable-panel#creating-a-runnable'}
|
|
208
|
+
/>
|
|
209
|
+
<div
|
|
170
210
|
class={classNames(
|
|
171
|
-
'text-white px-2 text-2xs py-0.5 font-bold rounded-sm
|
|
211
|
+
'text-white px-2 text-2xs py-0.5 font-bold rounded-sm',
|
|
172
212
|
'bg-indigo-500'
|
|
173
213
|
)}
|
|
174
214
|
>
|
|
175
215
|
{`${component.id}`}
|
|
176
|
-
</
|
|
177
|
-
|
|
216
|
+
</div>
|
|
217
|
+
</div>
|
|
178
218
|
</svelte:fragment>
|
|
179
219
|
|
|
180
220
|
{#if componentSettings.item.data.componentInput}
|
|
@@ -250,7 +290,8 @@ function transformToFrontend() {
|
|
|
250
290
|
{/if}
|
|
251
291
|
</div>
|
|
252
292
|
{/if}
|
|
253
|
-
|
|
293
|
+
|
|
294
|
+
<ContextVariables type={component.type} id={component.id} />
|
|
254
295
|
|
|
255
296
|
{#key $stateId}
|
|
256
297
|
{#if componentSettings.item.data.componentInput?.type === 'runnable'}
|
|
@@ -293,6 +334,9 @@ function transformToFrontend() {
|
|
|
293
334
|
|
|
294
335
|
<ComponentControl type={component.type} />
|
|
295
336
|
|
|
337
|
+
{#if componentSettings.item.data.type === 'navbarcomponent'}
|
|
338
|
+
<GridNavbar bind:navbarItems={componentSettings.item.data.navbarItems} id={component.id} />
|
|
339
|
+
{/if}
|
|
296
340
|
{#if componentSettings.item.data.type === 'tabscomponent'}
|
|
297
341
|
<GridTab
|
|
298
342
|
bind:tabs={componentSettings.item.data.tabs}
|
|
@@ -375,7 +419,7 @@ function transformToFrontend() {
|
|
|
375
419
|
size="xs"
|
|
376
420
|
variant="border"
|
|
377
421
|
startIcon={{ icon: ChevronLeft }}
|
|
378
|
-
on:click={() => secondaryMenuLeft.toggle(StylePanel, {})}
|
|
422
|
+
on:click={() => secondaryMenuLeft.toggle(StylePanel, { type: 'style' })}
|
|
379
423
|
>
|
|
380
424
|
Show
|
|
381
425
|
</Button>
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
<script>import Popover from '../../../Popover.svelte';
|
|
2
2
|
import Tooltip from '../../../Tooltip.svelte';
|
|
3
|
+
import { getContext } from 'svelte';
|
|
4
|
+
import { dfs, findGridItem } from '../appUtils';
|
|
3
5
|
export let type;
|
|
6
|
+
export let id;
|
|
7
|
+
const { app } = getContext('AppViewerContext');
|
|
4
8
|
const tables = [
|
|
5
9
|
'aggridcomponent',
|
|
6
10
|
'aggridcomponentee',
|
|
@@ -9,30 +13,59 @@ const tables = [
|
|
|
9
13
|
'aggridinfinitecomponentee'
|
|
10
14
|
];
|
|
11
15
|
const contextVariables = [];
|
|
16
|
+
function addContextVariable(label, description) {
|
|
17
|
+
if (!contextVariables.some((variable) => variable.label === label)) {
|
|
18
|
+
contextVariables.push({ label, description });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
12
21
|
if (tables.includes(type)) {
|
|
13
|
-
|
|
14
|
-
label: 'row',
|
|
15
|
-
description: 'The current row of a table. Row is an object with keys index and value.'
|
|
16
|
-
});
|
|
22
|
+
addContextVariable('row', 'The current row of a table. Row is an object with keys index and value.');
|
|
17
23
|
}
|
|
18
24
|
else if (type === 's3fileinputcomponent' || type === 'fileinputcomponent') {
|
|
19
|
-
|
|
20
|
-
label: 'file',
|
|
21
|
-
description: 'The current file being processed.'
|
|
22
|
-
});
|
|
25
|
+
addContextVariable('file', 'The current file being processed.');
|
|
23
26
|
}
|
|
24
27
|
else if (type === 'containercomponent') {
|
|
25
|
-
|
|
26
|
-
label: 'group',
|
|
27
|
-
description: 'The group name of the container.'
|
|
28
|
-
});
|
|
28
|
+
addContextVariable('group', 'The group name of the container.');
|
|
29
29
|
}
|
|
30
30
|
else if (type === 'listcomponent') {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
addContextVariable('iter', 'The current iteration of the list. Iter is an object with keys index and value.');
|
|
32
|
+
}
|
|
33
|
+
function addGridItemContext(parentId) {
|
|
34
|
+
if (!parentId)
|
|
35
|
+
return;
|
|
36
|
+
const gridItem = findGridItem($app, parentId);
|
|
37
|
+
addParentContextVariable(gridItem);
|
|
38
|
+
}
|
|
39
|
+
function processParents(parents) {
|
|
40
|
+
parents.forEach((parentId) => {
|
|
41
|
+
if (parentId) {
|
|
42
|
+
const parsedParentId = parentId?.includes('-') ? parentId.split('-')[0] : parentId;
|
|
43
|
+
addGridItemContext(parsedParentId);
|
|
44
|
+
}
|
|
34
45
|
});
|
|
35
46
|
}
|
|
47
|
+
function findParentsContextVariables(id) {
|
|
48
|
+
if (!id)
|
|
49
|
+
return;
|
|
50
|
+
const allParents = dfs($app.grid, id, $app.subgrids ?? {});
|
|
51
|
+
if (!allParents)
|
|
52
|
+
return;
|
|
53
|
+
// Remove last element as it is the current component
|
|
54
|
+
allParents.pop();
|
|
55
|
+
processParents(allParents);
|
|
56
|
+
}
|
|
57
|
+
findParentsContextVariables(id);
|
|
58
|
+
function addParentContextVariable(parent) {
|
|
59
|
+
if (parent?.data?.type === 'containercomponent') {
|
|
60
|
+
addContextVariable('group', 'The group name of the container.');
|
|
61
|
+
}
|
|
62
|
+
else if (parent?.data?.type === 'listcomponent') {
|
|
63
|
+
addContextVariable('iter', 'The current iteration of the list. Iter is an object with keys index and value.');
|
|
64
|
+
}
|
|
65
|
+
else if (parent?.data?.type && tables.includes(parent?.data?.type)) {
|
|
66
|
+
addContextVariable('row', 'The current row of a table. Row is an object with keys index and value.');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
36
69
|
</script>
|
|
37
70
|
|
|
38
71
|
{#if contextVariables.length > 0}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
<script>import { Button, Drawer, DrawerContent } from '../../../common';
|
|
1
|
+
<script>import { Alert, Button, Drawer, DrawerContent } from '../../../common';
|
|
2
2
|
import { Network, Plus, Trash } from 'lucide-svelte';
|
|
3
3
|
import { Pane, Splitpanes } from 'svelte-splitpanes';
|
|
4
|
-
import { setContext } from 'svelte';
|
|
4
|
+
import { getContext, setContext } from 'svelte';
|
|
5
5
|
import InputsSpecEditor from './InputsSpecEditor.svelte';
|
|
6
6
|
import Section from '../../../Section.svelte';
|
|
7
7
|
import { writable } from 'svelte/store';
|
|
@@ -9,6 +9,7 @@ import DecisionTreePreview from './decisionTree/DecisionTreePreview.svelte';
|
|
|
9
9
|
import { addNewBranch, removeNode } from './decisionTree/utils';
|
|
10
10
|
import Label from '../../../Label.svelte';
|
|
11
11
|
import { debounce } from '../../../../utils';
|
|
12
|
+
import Badge from '../../../common/badge/Badge.svelte';
|
|
12
13
|
export let component;
|
|
13
14
|
export let nodes;
|
|
14
15
|
export let rebuildOnChange = undefined;
|
|
@@ -16,6 +17,7 @@ let drawer = undefined;
|
|
|
16
17
|
let paneWidth = 0;
|
|
17
18
|
let paneHeight = 0;
|
|
18
19
|
let renderCount = 0;
|
|
20
|
+
const { debuggingComponents } = getContext('AppViewerContext');
|
|
19
21
|
const selectedNodeId = writable(undefined);
|
|
20
22
|
$: selectedNode = nodes?.find((node) => node.id == $selectedNodeId);
|
|
21
23
|
setContext('DecisionTreeEditor', { selectedNodeId });
|
|
@@ -57,6 +59,11 @@ setContext('DecisionTreeEditor', { selectedNodeId });
|
|
|
57
59
|
variant="border"
|
|
58
60
|
on:click={() => {
|
|
59
61
|
nodes = removeNode(nodes, selectedNode)
|
|
62
|
+
|
|
63
|
+
$debuggingComponents = Object.fromEntries(
|
|
64
|
+
Object.entries($debuggingComponents).filter(([key]) => key !== component.id)
|
|
65
|
+
)
|
|
66
|
+
|
|
60
67
|
renderCount++
|
|
61
68
|
}}
|
|
62
69
|
disabled={selectedNode?.next?.length > 1 || nodes.length == 1}
|
|
@@ -87,9 +94,9 @@ setContext('DecisionTreeEditor', { selectedNodeId });
|
|
|
87
94
|
<div class="grow relative">
|
|
88
95
|
<InputsSpecEditor
|
|
89
96
|
key={`condition-${selectedNode.id}-${index}`}
|
|
90
|
-
customTitle={
|
|
91
|
-
|
|
92
|
-
|
|
97
|
+
customTitle={index === 0
|
|
98
|
+
? 'Goes to the default branch'
|
|
99
|
+
: `${index > 0 ? 'Otherwise ' : ''}Goes to branch ${index}`}
|
|
93
100
|
bind:componentInput={subNode.condition}
|
|
94
101
|
id={selectedNode.id}
|
|
95
102
|
userInputEnabled={false}
|
|
@@ -105,10 +112,23 @@ setContext('DecisionTreeEditor', { selectedNodeId });
|
|
|
105
112
|
displayType={false}
|
|
106
113
|
fixedOverflowWidgets={false}
|
|
107
114
|
/>
|
|
115
|
+
<div class="flex flex-row gap-1 mt-2">
|
|
116
|
+
<Badge>
|
|
117
|
+
{`Next node id: ${subNode.id}`}
|
|
118
|
+
</Badge>
|
|
119
|
+
<Badge color="indigo">
|
|
120
|
+
{`Next tab index: ${nodes?.findIndex((node) => node.id == subNode.id)}`}
|
|
121
|
+
</Badge>
|
|
122
|
+
</div>
|
|
108
123
|
</div>
|
|
109
124
|
</div>
|
|
110
125
|
{/if}
|
|
111
126
|
{/each}
|
|
127
|
+
|
|
128
|
+
<Alert type="info" class="mt-4" title="Multiple branches" size="xs">
|
|
129
|
+
The conditions above are evaluated in order. The first condition that is met will
|
|
130
|
+
be the branch that is taken.
|
|
131
|
+
</Alert>
|
|
112
132
|
{/if}
|
|
113
133
|
{#key selectedNode.id}
|
|
114
134
|
{#if selectedNode.allowed}
|
|
@@ -11,6 +11,7 @@ export let selected = false;
|
|
|
11
11
|
export let canDelete = true;
|
|
12
12
|
export let canAddBranch = true;
|
|
13
13
|
export let index;
|
|
14
|
+
export let darkMode;
|
|
14
15
|
let open = false;
|
|
15
16
|
const dispatch = createEventDispatcher();
|
|
16
17
|
const { selectedNodeId } = getContext('DecisionTreeEditor');
|
|
@@ -24,7 +25,7 @@ $: selected = $selectedNodeId === node.id;
|
|
|
24
25
|
selected ? 'outline outline-2 outline-offset-2 outline-gray-600' : '',
|
|
25
26
|
'flex flex-row gap-2 items-center justify-between'
|
|
26
27
|
)}
|
|
27
|
-
style="width: 275px; height: 34px; background-color: {getStateColor(undefined)};"
|
|
28
|
+
style="width: 275px; height: 34px; background-color: {getStateColor(undefined, darkMode)};"
|
|
28
29
|
on:click={() => {
|
|
29
30
|
selected = true
|
|
30
31
|
dispatch('select', node.id)
|