windmill-components 1.444.2 → 1.447.4

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.
Files changed (229) hide show
  1. package/package/autosize.js +1 -1
  2. package/package/components/AppConnectInner.svelte +2 -1
  3. package/package/components/ArgInput.svelte +37 -24
  4. package/package/components/CapturesInputs.svelte +16 -0
  5. package/package/components/CapturesInputs.svelte.d.ts +21 -0
  6. package/package/components/Dev.svelte +7 -1
  7. package/package/components/EditableSchemaForm.svelte +369 -290
  8. package/package/components/EditableSchemaForm.svelte.d.ts +12 -2
  9. package/package/components/Editor.svelte +5 -7
  10. package/package/components/FirstStepInputs.svelte +111 -0
  11. package/package/components/FirstStepInputs.svelte.d.ts +17 -0
  12. package/package/components/FlowBuilder.svelte +28 -7
  13. package/package/components/FlowPreviewContent.svelte +72 -1
  14. package/package/components/FlowPreviewContent.svelte.d.ts +1 -0
  15. package/package/components/GfmMarkdown.svelte +93 -2
  16. package/package/components/HighlightCode.svelte +2 -0
  17. package/package/components/HistoricInputs.svelte +193 -0
  18. package/package/components/HistoricInputs.svelte.d.ts +20 -0
  19. package/package/components/InfiniteList.svelte +161 -0
  20. package/package/components/InfiniteList.svelte.d.ts +40 -0
  21. package/package/components/LightweightArgInput.svelte +19 -15
  22. package/package/components/MoveDrawer.svelte +2 -1
  23. package/package/components/Path.svelte +7 -1
  24. package/package/components/Path.svelte.d.ts +1 -1
  25. package/package/components/ResourcePicker.svelte +2 -1
  26. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  27. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  28. package/package/components/SaveInputsButton.svelte +53 -0
  29. package/package/components/SaveInputsButton.svelte.d.ts +24 -0
  30. package/package/components/SavedInputs.svelte +33 -61
  31. package/package/components/SavedInputsPicker.svelte +264 -0
  32. package/package/components/SavedInputsPicker.svelte.d.ts +20 -0
  33. package/package/components/ScheduleEditorInner.svelte +0 -1
  34. package/package/components/SchemaForm.svelte +22 -3
  35. package/package/components/ScriptBuilder.svelte +595 -562
  36. package/package/components/ScriptEditor.svelte +10 -3
  37. package/package/components/ScriptEditor.svelte.d.ts +5 -2
  38. package/package/components/ScriptSchema.svelte +1 -2
  39. package/package/components/Section.svelte +6 -4
  40. package/package/components/ShareModal.svelte.d.ts +2 -2
  41. package/package/components/SimpleEditor.svelte +39 -7
  42. package/package/components/SimpleEditor.svelte.d.ts +1 -4
  43. package/package/components/StringTypeNarrowing.svelte +3 -1
  44. package/package/components/TestConnection.svelte +5 -0
  45. package/package/components/TestJobLoader.svelte.d.ts +1 -1
  46. package/package/components/WorkerGroup.svelte +2 -1
  47. package/package/components/apps/components/inputs/AppS3FileInput.svelte +1 -0
  48. package/package/components/apps/editor/component/components.d.ts +79 -79
  49. package/package/components/apps/editor/component/default-codes.d.ts +1 -1
  50. package/package/components/apps/editor/component/default-codes.js +10 -10
  51. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +2 -1
  52. package/package/components/apps/inputType.d.ts +2 -2
  53. package/package/components/common/button/Button.svelte +10 -52
  54. package/package/components/common/button/PulseButton.svelte +81 -0
  55. package/package/components/common/button/PulseButton.svelte.d.ts +34 -0
  56. package/package/components/common/button/RoundIconButton.svelte +11 -0
  57. package/package/components/common/button/RoundIconButton.svelte.d.ts +19 -0
  58. package/package/components/common/button/model.d.ts +1 -0
  59. package/package/components/common/button/model.js +47 -0
  60. package/package/components/common/fileUpload/FileUpload.svelte +3 -1
  61. package/package/components/common/fileUpload/FileUpload.svelte.d.ts +1 -0
  62. package/package/components/common/languageIcons/LanguageIcon.svelte +3 -0
  63. package/package/components/common/layout/List.svelte +10 -4
  64. package/package/components/common/layout/List.svelte.d.ts +1 -0
  65. package/package/components/common/tabs/Tab.svelte +14 -1
  66. package/package/components/common/tabs/Tab.svelte.d.ts +1 -0
  67. package/package/components/copilot/ScriptGen.svelte +1 -1
  68. package/package/components/copilot/lib.js +1 -1
  69. package/package/components/copilot/prompts/edit.yaml +1 -1
  70. package/package/components/copilot/prompts/editPrompt.js +1 -1
  71. package/package/components/copilot/prompts/fix.yaml +1 -1
  72. package/package/components/copilot/prompts/fixPrompt.js +1 -1
  73. package/package/components/copilot/prompts/gen.yaml +1 -1
  74. package/package/components/copilot/prompts/genPrompt.js +1 -1
  75. package/package/components/custom_ui.d.ts +1 -0
  76. package/package/components/details/DetailPageDetailPanel.svelte +20 -19
  77. package/package/components/details/DetailPageDetailPanel.svelte.d.ts +4 -1
  78. package/package/components/details/DetailPageLayout.svelte +4 -1
  79. package/package/components/details/DetailPageLayout.svelte.d.ts +3 -0
  80. package/package/components/details/DetailPageTriggerPanel.svelte +84 -63
  81. package/package/components/details/DetailPageTriggerPanel.svelte.d.ts +3 -1
  82. package/package/components/details/EmailTriggerConfigSection.svelte +1 -1
  83. package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +2 -1
  84. package/package/components/details/EmailTriggerPanel.svelte +2 -0
  85. package/package/components/details/EmailTriggerPanel.svelte.d.ts +2 -0
  86. package/package/components/flows/FlowEditor.svelte +8 -2
  87. package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
  88. package/package/components/flows/common/FlowCard.svelte +12 -6
  89. package/package/components/flows/content/DynamicInputHelpBox.svelte +1 -0
  90. package/package/components/flows/content/FlowEditorPanel.svelte +15 -9
  91. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -0
  92. package/package/components/flows/content/FlowInput.svelte +449 -98
  93. package/package/components/flows/content/FlowInput.svelte.d.ts +2 -0
  94. package/package/components/flows/content/FlowInputEditor.svelte +46 -0
  95. package/package/components/flows/content/FlowInputEditor.svelte.d.ts +25 -0
  96. package/package/components/flows/content/FlowInputsQuick.svelte +1 -1
  97. package/package/components/flows/content/FlowLoop.svelte +192 -194
  98. package/package/components/flows/content/FlowModuleComponent.svelte +372 -382
  99. package/package/components/flows/content/FlowModuleMock.svelte +6 -7
  100. package/package/components/flows/content/FlowPathViewer.svelte +2 -1
  101. package/package/components/flows/content/FlowSettings.svelte +25 -3
  102. package/package/components/flows/content/FlowWhileLoop.svelte +97 -99
  103. package/package/components/flows/flowStore.d.ts +13 -0
  104. package/package/components/flows/flowStore.js +41 -0
  105. package/package/components/flows/header/FlowPreviewButtons.svelte +10 -4
  106. package/package/components/flows/header/FlowPreviewButtons.svelte.d.ts +4 -2
  107. package/package/components/flows/header/FlowYamlEditor.svelte +3 -0
  108. package/package/components/flows/map/FlowModuleSchemaItem.svelte +8 -58
  109. package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +67 -0
  110. package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte.d.ts +24 -0
  111. package/package/components/flows/map/FlowModuleSchemaMap.svelte +2 -2
  112. package/package/components/flows/pickers/FlowScriptPicker.svelte +1 -1
  113. package/package/components/flows/previousResults.d.ts +1 -1
  114. package/package/components/flows/previousResults.js +7 -2
  115. package/package/components/flows/types.d.ts +7 -0
  116. package/package/components/flows/utils.d.ts +1 -0
  117. package/package/components/flows/utils.js +3 -0
  118. package/package/components/graph/graphBuilder.js +1 -1
  119. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +22 -8
  120. package/package/components/graph/renderers/triggers/TriggersBadge.svelte.d.ts +1 -1
  121. package/package/components/icons/NatsIcon.svelte +19 -0
  122. package/package/components/icons/NatsIcon.svelte.d.ts +18 -0
  123. package/package/components/icons/OracleDBIcon.svelte +15 -0
  124. package/package/components/icons/OracleDBIcon.svelte.d.ts +25 -0
  125. package/package/components/icons/index.d.ts +7 -1
  126. package/package/components/icons/index.js +8 -2
  127. package/package/components/meltComponents/ButtonDropDown.svelte +32 -0
  128. package/package/components/meltComponents/ButtonDropDown.svelte.d.ts +27 -0
  129. package/package/components/meltComponents/Popover.svelte +7 -4
  130. package/package/components/meltComponents/Popover.svelte.d.ts +1 -0
  131. package/package/components/runs/RunsFilter.svelte +2 -2
  132. package/package/components/schema/AddPropertyFormV2.svelte +46 -0
  133. package/package/components/schema/AddPropertyFormV2.svelte.d.ts +18 -0
  134. package/package/components/schema/AddPropertyV2.svelte +151 -0
  135. package/package/components/schema/AddPropertyV2.svelte.d.ts +25 -0
  136. package/package/components/schema/EditableSchemaDrawer.svelte +17 -8
  137. package/package/components/schema/EditableSchemaWrapper.svelte +58 -14
  138. package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +0 -1
  139. package/package/components/schema/FlowPropertyEditor.svelte +8 -3
  140. package/package/components/schema/JobSchemaPicker.svelte +32 -0
  141. package/package/components/schema/JobSchemaPicker.svelte.d.ts +19 -0
  142. package/package/components/schema/PropertyEditor.svelte +9 -1
  143. package/package/components/schema/RunningJobSchemaPicker.svelte +67 -0
  144. package/package/components/schema/RunningJobSchemaPicker.svelte.d.ts +21 -0
  145. package/package/components/schema/SchemaFormDND.svelte +1 -1
  146. package/package/components/schema/SchemaPicker.svelte +92 -0
  147. package/package/components/schema/SchemaPicker.svelte.d.ts +23 -0
  148. package/package/components/schema/SchemaPickerRow.svelte +95 -0
  149. package/package/components/schema/SchemaPickerRow.svelte.d.ts +22 -0
  150. package/package/components/scriptEditor/LogPanel.svelte +1 -1
  151. package/package/components/settings/ChangeWorkspaceColor.svelte +103 -0
  152. package/package/components/settings/ChangeWorkspaceColor.svelte.d.ts +16 -0
  153. package/package/components/settings/ChangeWorkspaceId.svelte +1 -0
  154. package/package/components/settings/ChangeWorkspaceName.svelte +4 -0
  155. package/package/components/sidebar/MenuButton.svelte +5 -2
  156. package/package/components/sidebar/MenuButton.svelte.d.ts +1 -0
  157. package/package/components/sidebar/SidebarContent.svelte +8 -0
  158. package/package/components/sidebar/WorkspaceMenu.svelte +40 -21
  159. package/package/components/table/DataTable.svelte +43 -3
  160. package/package/components/table/DataTable.svelte.d.ts +2 -0
  161. package/package/components/table/Head.svelte +1 -1
  162. package/package/components/table/Row.svelte +11 -1
  163. package/package/components/table/Row.svelte.d.ts +3 -0
  164. package/package/components/table/index.d.ts +3 -0
  165. package/package/components/table/index.js +3 -0
  166. package/package/components/triggers/CaptureButton.svelte +38 -4
  167. package/package/components/triggers/CaptureButton.svelte.d.ts +3 -1
  168. package/package/components/triggers/CaptureIcon.svelte +7 -4
  169. package/package/components/triggers/CaptureIcon.svelte.d.ts +7 -13
  170. package/package/components/triggers/CaptureSection.svelte +50 -17
  171. package/package/components/triggers/CaptureSection.svelte.d.ts +5 -3
  172. package/package/components/triggers/CaptureTable.svelte +239 -186
  173. package/package/components/triggers/CaptureTable.svelte.d.ts +9 -11
  174. package/package/components/triggers/CaptureWrapper.svelte +126 -109
  175. package/package/components/triggers/CaptureWrapper.svelte.d.ts +3 -1
  176. package/package/components/triggers/KafkaTriggerEditorInner.svelte +1 -0
  177. package/package/components/triggers/KafkaTriggersConfigSection.svelte +16 -4
  178. package/package/components/triggers/KafkaTriggersConfigSection.svelte.d.ts +3 -1
  179. package/package/components/triggers/KafkaTriggersPanel.svelte +2 -0
  180. package/package/components/triggers/KafkaTriggersPanel.svelte.d.ts +2 -0
  181. package/package/components/triggers/NatsTriggerEditor.svelte +19 -0
  182. package/package/components/triggers/NatsTriggerEditor.svelte.d.ts +21 -0
  183. package/package/components/triggers/NatsTriggerEditorInner.svelte +239 -0
  184. package/package/components/triggers/NatsTriggerEditorInner.svelte.d.ts +21 -0
  185. package/package/components/triggers/NatsTriggersConfigSection.svelte +276 -0
  186. package/package/components/triggers/NatsTriggersConfigSection.svelte.d.ts +37 -0
  187. package/package/components/triggers/NatsTriggersPanel.svelte +126 -0
  188. package/package/components/triggers/NatsTriggersPanel.svelte.d.ts +26 -0
  189. package/package/components/triggers/RouteEditorConfigSection.svelte +12 -2
  190. package/package/components/triggers/RouteEditorConfigSection.svelte.d.ts +5 -1
  191. package/package/components/triggers/RouteEditorInner.svelte +5 -0
  192. package/package/components/triggers/RoutesPanel.svelte +4 -0
  193. package/package/components/triggers/RoutesPanel.svelte.d.ts +3 -0
  194. package/package/components/triggers/TriggersEditor.svelte +146 -97
  195. package/package/components/triggers/TriggersEditor.svelte.d.ts +2 -0
  196. package/package/components/triggers/TriggersEditorSection.svelte +19 -13
  197. package/package/components/triggers/TriggersEditorSection.svelte.d.ts +3 -0
  198. package/package/components/triggers/TriggersWrapper.svelte +7 -3
  199. package/package/components/triggers/TriggersWrapper.svelte.d.ts +2 -1
  200. package/package/components/triggers/WebhooksConfigSection.svelte +1 -0
  201. package/package/components/triggers/WebhooksConfigSection.svelte.d.ts +2 -1
  202. package/package/components/triggers/WebhooksPanel.svelte +2 -0
  203. package/package/components/triggers/WebhooksPanel.svelte.d.ts +2 -0
  204. package/package/components/triggers/WebsocketEditorConfigSection.svelte +3 -1
  205. package/package/components/triggers/WebsocketEditorConfigSection.svelte.d.ts +2 -1
  206. package/package/components/triggers/WebsocketTriggersPanel.svelte +2 -0
  207. package/package/components/triggers/WebsocketTriggersPanel.svelte.d.ts +2 -0
  208. package/package/components/triggers.d.ts +2 -1
  209. package/package/components/triggers.js +2 -0
  210. package/package/components/vscode.js +12 -8
  211. package/package/consts.d.ts +1 -0
  212. package/package/consts.js +18 -0
  213. package/package/gen/core/OpenAPI.js +1 -1
  214. package/package/gen/schemas.gen.d.ts +207 -13
  215. package/package/gen/schemas.gen.js +207 -13
  216. package/package/gen/services.gen.d.ts +118 -10
  217. package/package/gen/services.gen.js +237 -17
  218. package/package/gen/types.gen.d.ts +400 -40
  219. package/package/hubPaths.json +2 -1
  220. package/package/infer.js +11 -2
  221. package/package/monaco_workers/build_workers.js +39 -37
  222. package/package/monaco_workers/graphql.worker.bundle.js +18371 -36513
  223. package/package/script_helpers.d.ts +5 -2
  224. package/package/script_helpers.js +46 -8
  225. package/package/scripts.js +4 -0
  226. package/package/stores.d.ts +2 -1
  227. package/package/stores.js +2 -1
  228. package/package.json +14 -16
  229. package/package/monaco_workers/graphql.worker.bundle.d.ts +0 -0
@@ -2,16 +2,17 @@
2
2
  import { InputService, JobService } from '../gen/index.js';
3
3
  import { userStore, workspaceStore } from '../stores.js';
4
4
  import { base } from '../base';
5
- import { classNames, displayDate, displayDateOnly, sendUserToast } from '../utils.js';
5
+ import { classNames, displayDateOnly, sendUserToast } from '../utils.js';
6
6
  import { createEventDispatcher } from 'svelte';
7
7
  import { Pane, Splitpanes } from 'svelte-splitpanes';
8
8
  import ObjectViewer from './propertyPicker/ObjectViewer.svelte';
9
- import { ArrowLeftIcon, Edit, ExternalLink, Save, X } from 'lucide-svelte';
9
+ import { ArrowLeftIcon, Edit, ExternalLink, X } from 'lucide-svelte';
10
10
  import Toggle from './Toggle.svelte';
11
11
  import Tooltip from './Tooltip.svelte';
12
12
  import TimeAgo from './TimeAgo.svelte';
13
13
  import JobLoader from './runs/JobLoader.svelte';
14
14
  import Skeleton from './common/skeleton/Skeleton.svelte';
15
+ import SaveInputsButton from './SaveInputsButton.svelte';
15
16
  export let scriptHash = null;
16
17
  export let scriptPath = null;
17
18
  export let flowPath = null;
@@ -24,7 +25,6 @@ let savedInputs = undefined;
24
25
  let selectedInput;
25
26
  let jobs = [];
26
27
  let loading = false;
27
- let savingInputs = false;
28
28
  const dispatch = createEventDispatcher();
29
29
  $: runnableId = scriptHash || scriptPath || flowPath || undefined;
30
30
  let runnableType = undefined;
@@ -61,34 +61,6 @@ async function loadSavedInputs() {
61
61
  perPage: 10
62
62
  });
63
63
  }
64
- async function saveInput(args) {
65
- savingInputs = true;
66
- const requestBody = {
67
- name: 'Saved ' + displayDate(new Date()),
68
- args: args
69
- };
70
- try {
71
- let id = await InputService.createInput({
72
- workspace: $workspaceStore,
73
- runnableId,
74
- runnableType,
75
- requestBody
76
- });
77
- const input = {
78
- id,
79
- created_by: '',
80
- created_at: new Date().toISOString(),
81
- is_public: false,
82
- ...requestBody
83
- };
84
- savedInputs = [input, ...(savedInputs ?? [])];
85
- }
86
- catch (err) {
87
- console.error(err);
88
- sendUserToast(`Failed to save Input: ${err}`, true);
89
- }
90
- savingInputs = false;
91
- }
92
64
  async function updateInput(input) {
93
65
  input.isSaving = true;
94
66
  try {
@@ -145,25 +117,26 @@ async function loadLargeArgs(id, input, allowLarge) {
145
117
  }
146
118
  </script>
147
119
 
148
- <JobLoader
149
- bind:jobs
150
- path={runnableId ?? null}
151
- isSkipped={false}
152
- jobKindsCat="jobs"
153
- jobKinds="all"
154
- user={null}
155
- label={null}
156
- folder={null}
157
- concurrencyKey={null}
158
- tag={null}
159
- success="running"
160
- argFilter={undefined}
161
- bind:loading
162
- syncQueuedRunsCount={false}
163
- refreshRate={10000}
164
- computeMinAndMax={undefined}
165
- perPage={5}
166
- />
120
+ {#if runnableId}
121
+ <JobLoader
122
+ bind:jobs
123
+ path={runnableId}
124
+ isSkipped={false}
125
+ jobKindsCat="all"
126
+ user={null}
127
+ label={null}
128
+ folder={null}
129
+ concurrencyKey={null}
130
+ tag={null}
131
+ success="running"
132
+ argFilter={undefined}
133
+ bind:loading
134
+ syncQueuedRunsCount={false}
135
+ refreshRate={10000}
136
+ computeMinAndMax={undefined}
137
+ perPage={5}
138
+ />
139
+ {/if}
167
140
 
168
141
  <div class="min-w-[300px] h-full">
169
142
  <Splitpanes horizontal={true}>
@@ -171,21 +144,20 @@ async function loadLargeArgs(id, input, allowLarge) {
171
144
  <div class="w-full flex flex-col gap-4 p-2">
172
145
  <div class="w-full flex justify-between items-center gap-4 flex-wrap">
173
146
  <span class="text-sm font-semibold flex-shrink-0"
174
- >Saved Inputs <Tooltip
147
+ >Saved Inputs<Tooltip
175
148
  >Shared inputs are available to anyone with access to the script</Tooltip
176
149
  ></span
177
150
  >
178
151
  {#if canSaveInputs}
179
- <Button
180
- on:click={() => saveInput(args)}
152
+ <SaveInputsButton
153
+ {args}
181
154
  disabled={!isValid}
182
- loading={savingInputs}
183
- startIcon={{ icon: Save }}
184
- color="light"
185
- size="xs"
186
- >
187
- <span>Save Current Input</span>
188
- </Button>
155
+ {runnableId}
156
+ {runnableType}
157
+ on:update={() => {
158
+ loadSavedInputs()
159
+ }}
160
+ />
189
161
  {/if}
190
162
  </div>
191
163
 
@@ -354,7 +326,7 @@ async function loadLargeArgs(id, input, allowLarge) {
354
326
  >
355
327
  {/if}
356
328
  {:else}
357
- <div class="text-left text-tertiary text-xs">No running runs</div>
329
+ <div class="text-left text-tertiary text-xs">No job currently running</div>
358
330
  {/if}
359
331
  </div>
360
332
 
@@ -0,0 +1,264 @@
1
+ <script>import { Button } from './common';
2
+ import { InputService } from '../gen/index.js';
3
+ import { userStore, workspaceStore } from '../stores.js';
4
+ import { sendUserToast } from '../utils.js';
5
+ import { createEventDispatcher, onDestroy } from 'svelte';
6
+ import { Edit, Trash2, Save } from 'lucide-svelte';
7
+ import Toggle from './Toggle.svelte';
8
+ import { Cell } from './table/index';
9
+ import { clickOutside } from '../utils';
10
+ import SaveInputsButton from './SaveInputsButton.svelte';
11
+ import Popover from './Popover.svelte';
12
+ import InfiniteList from './InfiniteList.svelte';
13
+ import { twMerge } from 'tailwind-merge';
14
+ export let flowPath = null;
15
+ export let previewArgs = undefined;
16
+ let infiniteList = null;
17
+ let draft = true;
18
+ let selectedInput = null;
19
+ let isEditing = null;
20
+ const dispatch = createEventDispatcher();
21
+ $: runnableId = flowPath || undefined;
22
+ let runnableType = undefined;
23
+ $: runnableType = flowPath ? 'FlowPath' : undefined;
24
+ async function updateInput(input) {
25
+ if (!input)
26
+ return;
27
+ input.isSaving = true;
28
+ try {
29
+ await InputService.updateInput({
30
+ workspace: $workspaceStore,
31
+ requestBody: {
32
+ id: input.id,
33
+ name: input.name,
34
+ is_public: input.is_public
35
+ }
36
+ });
37
+ }
38
+ catch (err) {
39
+ console.error(err);
40
+ sendUserToast(`Failed to update Input: ${err}`, true);
41
+ }
42
+ input.isSaving = false;
43
+ }
44
+ function initLoadInputs() {
45
+ const loadInputsPageFn = async (page, perPage) => {
46
+ return await InputService.listInputs({
47
+ workspace: $workspaceStore,
48
+ runnableId,
49
+ runnableType,
50
+ page,
51
+ perPage
52
+ });
53
+ };
54
+ infiniteList?.setLoader(loadInputsPageFn);
55
+ const deleteInputFn = async (id) => {
56
+ await InputService.deleteInput({
57
+ workspace: $workspaceStore,
58
+ input: id
59
+ });
60
+ };
61
+ infiniteList?.setDeleteItemFn(deleteInputFn);
62
+ }
63
+ async function loadLargeArgs(id, input, allowLarge) {
64
+ if (!id)
65
+ return;
66
+ return await InputService.getArgsFromHistoryOrSavedInput({
67
+ jobOrInputId: id,
68
+ workspace: $workspaceStore,
69
+ input,
70
+ allowLarge
71
+ });
72
+ }
73
+ let selectedArgs = undefined;
74
+ async function handleSelect(input) {
75
+ if (input.isEditing)
76
+ return;
77
+ if (selectedInput === input.id) {
78
+ selectedInput = null;
79
+ selectedArgs = undefined;
80
+ dispatch('select', undefined);
81
+ }
82
+ else {
83
+ selectedInput = input.id;
84
+ selectedArgs = await loadLargeArgs(input.id, true, false);
85
+ dispatch('select', selectedArgs);
86
+ }
87
+ }
88
+ onDestroy(() => {
89
+ selectedInput = null;
90
+ selectedArgs = undefined;
91
+ dispatch('select', undefined);
92
+ });
93
+ async function getPropPickerElements() {
94
+ const elements = document.querySelectorAll('[data-schema-picker], [data-schema-picker] *');
95
+ return elements ? Array.from(elements) : [];
96
+ }
97
+ function handleKeydown(event) {
98
+ if (event.key === 'Escape' && isEditing) {
99
+ setEditing(null);
100
+ }
101
+ else if (event.key === 'Escape' && selectedInput) {
102
+ selectedInput = null;
103
+ selectedArgs = undefined;
104
+ dispatch('select', undefined);
105
+ }
106
+ if (event.key === 'Enter' && isEditing) {
107
+ updateInput(isEditing).then(() => {
108
+ setEditing(null);
109
+ });
110
+ }
111
+ }
112
+ function setEditing(input) {
113
+ isEditing = input;
114
+ dispatch('isEditing', !!input);
115
+ }
116
+ function handleError(error) {
117
+ if (error.type === 'delete') {
118
+ sendUserToast(`Failed to delete saved input: ${error.error}`, true);
119
+ }
120
+ else if (error.type === 'load') {
121
+ sendUserToast(`Failed to load saved inputs: ${error.error}`, true);
122
+ }
123
+ }
124
+ $: $workspaceStore && flowPath && (infiniteList && initLoadInputs(), (draft = false));
125
+ </script>
126
+
127
+ <svelte:window on:keydown={handleKeydown} />
128
+
129
+ <div
130
+ class="w-full flex flex-col gap-1 h-full overflow-y-auto p"
131
+ use:clickOutside={{ capture: false, exclude: getPropPickerElements }}
132
+ on:click_outside={() => {
133
+ selectedInput = null
134
+ selectedArgs = undefined
135
+ dispatch('select', undefined)
136
+ }}
137
+ >
138
+ <div>
139
+ <Popover class="w-full" placement="bottom" disablePopup={flowPath && previewArgs}>
140
+ <svelte:fragment slot="text">
141
+ {#if !flowPath}
142
+ Save draft first before you can save inputs
143
+ {:else if !previewArgs}
144
+ Add inputs before saving
145
+ {/if}
146
+ </svelte:fragment>
147
+ <SaveInputsButton
148
+ {runnableId}
149
+ {runnableType}
150
+ args={previewArgs ?? {}}
151
+ disabled={!previewArgs || !flowPath}
152
+ on:update={() => {
153
+ infiniteList?.loadData('refresh')
154
+ }}
155
+ showTooltip={true}
156
+ />
157
+ </Popover>
158
+ </div>
159
+ <div class="grow min-h-0">
160
+ {#if !draft}
161
+ <InfiniteList
162
+ bind:this={infiniteList}
163
+ selectedItemId={selectedInput}
164
+ on:error={(e) => handleError(e.detail)}
165
+ on:select={(e) => handleSelect(e.detail)}
166
+ >
167
+ <svelte:fragment slot="columns">
168
+ <colgroup>
169
+ <col class="w-8" />
170
+ <col />
171
+ </colgroup>
172
+ </svelte:fragment>
173
+ <svelte:fragment let:item>
174
+ <Cell>
175
+ <div class="center-center">
176
+ <Save size={12} />
177
+ </div>
178
+ </Cell>
179
+ <Cell>
180
+ <div
181
+ class="w-full flex items-center text-sm justify-between gap-4 px-4 text-left transition-all"
182
+ >
183
+ <div class="w-full h-full items-center justify-between flex gap-1 min-w-0 p-1">
184
+ {#if isEditing && isEditing.id === item.id}
185
+ <form
186
+ on:submit={() => {
187
+ updateInput(isEditing)
188
+ setEditing(null)
189
+ }}
190
+ class="w-full"
191
+ >
192
+ <input type="text" bind:value={isEditing.name} class="text-secondary" />
193
+ </form>
194
+ {:else}
195
+ <small
196
+ class="whitespace-nowrap overflow-hidden text-ellipsis flex-shrink text-left"
197
+ >
198
+ {item.name}
199
+ </small>
200
+ {/if}
201
+ {#if item.created_by == $userStore?.username || $userStore?.is_admin || $userStore?.is_super_admin}
202
+ <div class="items-center flex gap-2">
203
+ {#if !isEditing || isEditing?.id !== item.id}
204
+ <div class="group-hover:block hidden -my-2">
205
+ <Toggle
206
+ size="xs"
207
+ options={{ right: 'shared' }}
208
+ checked={item.is_public}
209
+ on:change={(e) => {
210
+ updateInput({ ...item, is_public: e.detail })
211
+ }}
212
+ />
213
+ </div>
214
+ {/if}
215
+
216
+ <Button
217
+ loading={isEditing?.id === item.id && isEditing?.isSaving}
218
+ color="light"
219
+ size="xs"
220
+ variant="border"
221
+ spacingSize="xs2"
222
+ btnClasses={'group-hover:block hidden -my-2'}
223
+ on:click={(e) => {
224
+ e.stopPropagation()
225
+ if (isEditing?.id === item.id) {
226
+ updateInput(isEditing)
227
+ setEditing(null)
228
+ } else {
229
+ setEditing(item)
230
+ }
231
+ }}
232
+ >
233
+ <Edit class="w-4 h-4" />
234
+ </Button>
235
+ <Button
236
+ color="light"
237
+ size="xs"
238
+ spacingSize="xs2"
239
+ variant="contained"
240
+ btnClasses={twMerge(
241
+ isEditing?.id === item.id ? 'block' : 'group-hover:block hidden -my-2',
242
+ 'hover:text-white hover:bg-red-500 text-red-500'
243
+ )}
244
+ on:click={() => {
245
+ infiniteList?.deleteItem(item.id)
246
+ }}
247
+ >
248
+ <Trash2 class="w-4 h-4" />
249
+ </Button>
250
+ </div>
251
+ {:else}
252
+ <span class="text-xs text-tertiary">By {item.created_by}</span>
253
+ {/if}
254
+ </div>
255
+ </div>
256
+ </Cell>
257
+ </svelte:fragment>
258
+ <svelte:fragment slot="empty">
259
+ <div class="text-center text-xs text-tertiary">No saved Inputs</div>
260
+ </svelte:fragment>
261
+ </InfiniteList>
262
+ {/if}
263
+ </div>
264
+ </div>
@@ -0,0 +1,20 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ flowPath?: string | null | undefined;
5
+ previewArgs?: any;
6
+ };
7
+ events: {
8
+ select: CustomEvent<any>;
9
+ isEditing: CustomEvent<any>;
10
+ } & {
11
+ [evt: string]: CustomEvent<any>;
12
+ };
13
+ slots: {};
14
+ };
15
+ export type SavedInputsPickerProps = typeof __propDef.props;
16
+ export type SavedInputsPickerEvents = typeof __propDef.events;
17
+ export type SavedInputsPickerSlots = typeof __propDef.slots;
18
+ export default class SavedInputsPicker extends SvelteComponent<SavedInputsPickerProps, SavedInputsPickerEvents, SavedInputsPickerSlots> {
19
+ }
20
+ export {};
@@ -555,7 +555,6 @@ function onVersionChange() {
555
555
  {#if drawerLoading}
556
556
  <Loader2 class="animate-spin" />
557
557
  {:else}
558
- {can_write}
559
558
  <div class="flex flex-col gap-12">
560
559
  <div class="flex flex-col gap-4">
561
560
  <div>
@@ -68,13 +68,12 @@ function removeExtraKey() {
68
68
  let pickForField;
69
69
  let itemPicker = undefined;
70
70
  let variableEditor = undefined;
71
- $: isValid = allTrue(inputCheck ?? {});
72
71
  let resourceTypes = undefined;
73
72
  async function loadResourceTypes() {
74
73
  resourceTypes = await getResourceTypes();
75
74
  }
76
75
  loadResourceTypes();
77
- $: schema && reorder();
76
+ $: schema && (reorder(), (hidden = {}));
78
77
  function hasExtraKeys() {
79
78
  return Object.keys(args ?? {}).some((x) => !keys.includes(x));
80
79
  }
@@ -106,8 +105,28 @@ function reorder() {
106
105
  }
107
106
  }
108
107
  $: fields = items ?? keys.map((x) => ({ id: x, value: x }));
108
+ let hidden = {};
109
+ function handleHiddenFields(schema, args) {
110
+ for (const x of fields) {
111
+ if (schema?.properties[x.value]?.showExpr) {
112
+ if (computeShow(x.value, schema.properties[x.value].showExpr, args)) {
113
+ hidden[x.value] = false;
114
+ }
115
+ else if (!hidden[x.value]) {
116
+ hidden[x.value] = true;
117
+ // remove arg (important: will not trigger a re-render)
118
+ delete args[x.value];
119
+ // make sure it's made valid
120
+ inputCheck[x.value] = true;
121
+ }
122
+ }
123
+ }
124
+ }
125
+ $: handleHiddenFields(schema, args);
126
+ $: isValid = allTrue(inputCheck ?? {});
109
127
  </script>
110
128
 
129
+ <!-- {JSON.stringify(args)} -->
111
130
  {#if showReset}
112
131
  <div class="flex flex-row-reverse w-full">
113
132
  <Button size="xs" color="light" on:click={() => setDefaults()}>
@@ -136,7 +155,7 @@ $: fields = items ?? keys.map((x) => ({ id: x, value: x }));
136
155
  }}
137
156
  >
138
157
  {#if typeof args == 'object' && schema?.properties[argName]}
139
- {#if computeShow(argName, schema?.properties[argName].showExpr, args)}
158
+ {#if !hidden[argName]}
140
159
  {#if lightweightMode}
141
160
  <LightweightArgInput
142
161
  label={argName}