windmill-components 1.109.8 → 1.121.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.
Files changed (216) hide show
  1. package/package/cloud.js +0 -14
  2. package/package/common.d.ts +1 -0
  3. package/package/components/ArgEnum.svelte +53 -0
  4. package/package/components/ArgEnum.svelte.d.ts +24 -0
  5. package/package/components/ArgInfo.svelte +26 -14
  6. package/package/components/ArgInput.svelte +69 -83
  7. package/package/components/ArgInput.svelte.d.ts +2 -0
  8. package/package/components/ArrayTypeNarrowing.svelte +73 -0
  9. package/package/components/ArrayTypeNarrowing.svelte.d.ts +20 -0
  10. package/package/components/CenteredModal.svelte +7 -9
  11. package/package/components/DeployToSetting.svelte +35 -0
  12. package/package/components/DeployToSetting.svelte.d.ts +16 -0
  13. package/package/components/DeployWorkspace.svelte +555 -0
  14. package/package/components/DeployWorkspace.svelte.d.ts +23 -0
  15. package/package/components/DeployWorkspaceDrawer.svelte +35 -0
  16. package/package/components/DeployWorkspaceDrawer.svelte.d.ts +17 -0
  17. package/package/components/DiffDrawer.svelte +60 -0
  18. package/package/components/DiffDrawer.svelte.d.ts +23 -0
  19. package/package/components/DisplayResult.svelte +17 -24
  20. package/package/components/DraftBadge.svelte +1 -1
  21. package/package/components/Editor.svelte +0 -4
  22. package/package/components/EditorBar.svelte +127 -26
  23. package/package/components/EditorBar.svelte.d.ts +1 -0
  24. package/package/components/FieldHeader.svelte +2 -2
  25. package/package/components/FlowBuilder.svelte +9 -0
  26. package/package/components/FlowBuilder.svelte.d.ts +6 -0
  27. package/package/components/FlowJobResult.svelte +3 -2
  28. package/package/components/FlowJobResult.svelte.d.ts +1 -0
  29. package/package/components/FlowStatusViewer.svelte +6 -39
  30. package/package/components/FlowStatusWaitingForEvents.svelte +64 -0
  31. package/package/components/FlowStatusWaitingForEvents.svelte.d.ts +19 -0
  32. package/package/components/InputTransformForm.svelte +21 -11
  33. package/package/components/InputTransformForm.svelte.d.ts +1 -1
  34. package/package/components/InputTransformSchemaForm.svelte +1 -1
  35. package/package/components/JobArgs.svelte +120 -27
  36. package/package/components/LightweightArgInput.svelte +28 -15
  37. package/package/components/LightweightArgInput.svelte.d.ts +1 -0
  38. package/package/components/LightweightSchemaForm.svelte +24 -24
  39. package/package/components/LogViewer.svelte +23 -11
  40. package/package/components/LogViewer.svelte.d.ts +1 -0
  41. package/package/components/ModulePreview.svelte +7 -1
  42. package/package/components/ModulePreviewForm.svelte +8 -0
  43. package/package/components/ModulePreviewForm.svelte.d.ts +1 -1
  44. package/package/components/MoveDrawer.svelte +3 -3
  45. package/package/components/Path.svelte +27 -7
  46. package/package/components/Popover.svelte +11 -2
  47. package/package/components/Popover.svelte.d.ts +1 -0
  48. package/package/components/Required.svelte +1 -1
  49. package/package/components/ResourcePicker.svelte +7 -1
  50. package/package/components/RunForm.svelte +15 -8
  51. package/package/components/RunForm.svelte.d.ts +2 -0
  52. package/package/components/SchemaEditor.svelte +14 -12
  53. package/package/components/SchemaForm.svelte +9 -2
  54. package/package/components/SchemaModal.svelte +9 -5
  55. package/package/components/ScriptBuilder.svelte +21 -19
  56. package/package/components/ScriptEditor.svelte +6 -19
  57. package/package/components/ScriptPicker.svelte +13 -7
  58. package/package/components/ScriptVersionHistory.svelte +57 -0
  59. package/package/components/ScriptVersionHistory.svelte.d.ts +16 -0
  60. package/package/components/SimpleEditor.svelte +3 -1
  61. package/package/components/SimpleEditor.svelte.d.ts +1 -0
  62. package/package/components/Slider.svelte +2 -1
  63. package/package/components/Slider.svelte.d.ts +1 -0
  64. package/package/components/SuperadminSettings.svelte +12 -14
  65. package/package/components/SuperadminSettings.svelte.d.ts +0 -2
  66. package/package/components/Toast.svelte +1 -1
  67. package/package/components/Uptodate.svelte +26 -0
  68. package/package/components/Uptodate.svelte.d.ts +14 -0
  69. package/package/components/UserSettings.svelte +8 -12
  70. package/package/components/UserSettings.svelte.d.ts +0 -2
  71. package/package/components/Version.svelte +9 -0
  72. package/package/components/Version.svelte.d.ts +14 -0
  73. package/package/components/apps/components/buttons/AppButton.svelte +2 -2
  74. package/package/components/apps/components/buttons/AppForm.svelte +1 -2
  75. package/package/components/apps/components/buttons/AppFormButton.svelte +35 -38
  76. package/package/components/apps/components/buttons/AppSchemaForm.svelte +5 -0
  77. package/package/components/apps/components/display/AppChartJs.svelte +4 -3
  78. package/package/components/apps/components/display/AppFlowStatusComponent.svelte +2 -2
  79. package/package/components/apps/components/display/AppLogsComponent.svelte +7 -1
  80. package/package/components/apps/components/display/AppMap.svelte +11 -7
  81. package/package/components/apps/components/display/PlotlyHtml.svelte +1 -1
  82. package/package/components/apps/components/display/VegaLiteHtml.svelte +1 -1
  83. package/package/components/apps/components/display/table/AppAggridTable.svelte +86 -39
  84. package/package/components/apps/components/display/table/AppTable.svelte +29 -3
  85. package/package/components/apps/components/display/table/AppTableFooter.svelte +48 -43
  86. package/package/components/apps/components/display/table/AppTableFooter.svelte.d.ts +1 -0
  87. package/package/components/apps/components/helpers/InputValue.svelte +25 -3
  88. package/package/components/apps/components/helpers/RunnableComponent.svelte +14 -3
  89. package/package/components/apps/components/helpers/eval.d.ts +1 -0
  90. package/package/components/apps/components/helpers/eval.js +3 -1
  91. package/package/components/apps/components/inputs/AppCheckbox.svelte +5 -0
  92. package/package/components/apps/components/inputs/AppMultiSelect.svelte +1 -1
  93. package/package/components/apps/components/inputs/AppNumberInput.svelte +8 -1
  94. package/package/components/apps/components/inputs/AppQuillEditor.svelte +78 -0
  95. package/package/components/apps/components/inputs/AppQuillEditor.svelte.d.ts +27 -0
  96. package/package/components/apps/components/inputs/AppRangeInput.svelte +8 -1
  97. package/package/components/apps/components/inputs/AppSelect.svelte +17 -2
  98. package/package/components/apps/components/inputs/AppSliderInputs.svelte +18 -5
  99. package/package/components/apps/components/inputs/AppTextInput.svelte +66 -57
  100. package/package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +5 -0
  101. package/package/components/apps/components/layout/AppDrawer.svelte +2 -2
  102. package/package/components/apps/components/layout/AppList.svelte +112 -0
  103. package/package/components/apps/components/layout/AppList.svelte.d.ts +23 -0
  104. package/package/components/apps/components/layout/AppModal.svelte +35 -33
  105. package/package/components/apps/components/layout/ListWrapper.svelte +23 -0
  106. package/package/components/apps/components/layout/ListWrapper.svelte.d.ts +23 -0
  107. package/package/components/apps/editor/AppEditor.svelte +3 -2
  108. package/package/components/apps/editor/AppEditorHeader.svelte +14 -9
  109. package/package/components/apps/editor/AppPreview.svelte +2 -2
  110. package/package/components/apps/editor/RecomputeAllComponents.svelte +4 -0
  111. package/package/components/apps/editor/SettingsPanel.svelte +1 -1
  112. package/package/components/apps/editor/SubGridEditor.svelte +4 -2
  113. package/package/components/apps/editor/appUtils.d.ts +1 -1
  114. package/package/components/apps/editor/appUtils.js +2 -2
  115. package/package/components/apps/editor/component/Component.svelte +13 -0
  116. package/package/components/apps/editor/component/ComponentNavigation.svelte +9 -7
  117. package/package/components/apps/editor/component/ComponentWrapper.svelte +1 -4
  118. package/package/components/apps/editor/component/components.d.ts +138 -3
  119. package/package/components/apps/editor/component/components.js +131 -4
  120. package/package/components/apps/editor/component/default-codes.js +65 -35
  121. package/package/components/apps/editor/component/sets.js +2 -0
  122. package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +6 -0
  123. package/package/components/apps/editor/contextPanel/components/IdEditor.svelte +2 -2
  124. package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +2 -1
  125. package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +3 -2
  126. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +1 -1
  127. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +3 -3
  128. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +1 -1
  129. package/package/components/apps/editor/settingsPanel/GridCondition.svelte +1 -1
  130. package/package/components/apps/editor/settingsPanel/GridPane.svelte +1 -2
  131. package/package/components/apps/editor/settingsPanel/GridTab.svelte +2 -2
  132. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +6 -2
  133. package/package/components/apps/editor/settingsPanel/Recompute.svelte +1 -1
  134. package/package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +16 -2
  135. package/package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +1 -0
  136. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +7 -4
  137. package/package/components/apps/editor/settingsPanel/script/shared/ScriptRunConfiguration.svelte +2 -2
  138. package/package/components/apps/types.d.ts +8 -0
  139. package/package/components/apps/utils.js +2 -0
  140. package/package/components/common/badge/Badge.svelte +2 -1
  141. package/package/components/common/badge/Badge.svelte.d.ts +1 -0
  142. package/package/components/common/fileInput/FileInput.svelte +1 -1
  143. package/package/components/common/modal/AlwaysMountedModal.svelte +52 -54
  144. package/package/components/common/modal/AlwaysMountedModal.svelte.d.ts +1 -0
  145. package/package/components/common/table/AppRow.svelte +28 -1
  146. package/package/components/common/table/AppRow.svelte.d.ts +2 -0
  147. package/package/components/common/table/FlowRow.svelte +29 -2
  148. package/package/components/common/table/FlowRow.svelte.d.ts +2 -0
  149. package/package/components/common/table/RawAppRow.svelte +16 -0
  150. package/package/components/common/table/RawAppRow.svelte.d.ts +2 -0
  151. package/package/components/common/table/ScriptRow.svelte +29 -2
  152. package/package/components/common/table/ScriptRow.svelte.d.ts +2 -0
  153. package/package/components/common/tabs/Tab.svelte +2 -2
  154. package/package/components/common/tabs/Tabs.svelte +3 -6
  155. package/package/components/common/tabs/Tabs.svelte.d.ts +1 -1
  156. package/package/components/common/toggleButton-v2/ToggleButton.svelte +3 -1
  157. package/package/components/common/toggleButton-v2/ToggleButton.svelte.d.ts +1 -0
  158. package/package/components/flows/common/FlowCardHeader.svelte +13 -15
  159. package/package/components/flows/content/FlowBranchesAllWrapper.svelte +8 -1
  160. package/package/components/flows/content/FlowBranchesOneWrapper.svelte +8 -1
  161. package/package/components/flows/content/FlowLoop.svelte +8 -1
  162. package/package/components/flows/content/FlowModuleCache.svelte +1 -1
  163. package/package/components/flows/content/FlowModuleComponent.svelte +13 -4
  164. package/package/components/flows/content/FlowModuleHeader.svelte +27 -18
  165. package/package/components/flows/content/FlowModuleHeader.svelte.d.ts +1 -0
  166. package/package/components/flows/content/FlowModuleMock.svelte +51 -0
  167. package/package/components/flows/content/FlowModuleMock.svelte.d.ts +17 -0
  168. package/package/components/flows/content/FlowModuleSuspend.svelte +49 -2
  169. package/package/components/flows/flowExplorer.d.ts +11 -0
  170. package/package/components/flows/flowExplorer.js +137 -0
  171. package/package/components/flows/map/FlowErrorHandlerItem.svelte +3 -2
  172. package/package/components/flows/map/FlowModuleSchemaItem.svelte +13 -1
  173. package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
  174. package/package/components/flows/map/FlowModuleSchemaMap.svelte +1 -1
  175. package/package/components/flows/map/MapItem.svelte +2 -1
  176. package/package/components/flows/previousResults.d.ts +0 -2
  177. package/package/components/flows/previousResults.js +1 -67
  178. package/package/components/graph/FlowGraph.svelte +71 -13
  179. package/package/components/graph/svelvet/container/views/GraphView.svelte +22 -0
  180. package/package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +2 -0
  181. package/package/components/graph/svelvet/container/views/Svelvet.svelte +13 -1
  182. package/package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +2 -0
  183. package/package/components/graph/svelvet/edges/models/Edge.d.ts +2 -1
  184. package/package/components/graph/svelvet/edges/models/Edge.js +3 -1
  185. package/package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +2 -13
  186. package/package/components/graph/svelvet/store/controllers/util.js +1 -1
  187. package/package/components/graph/svelvet/types/types.d.ts +1 -0
  188. package/package/components/home/ItemsList.svelte +50 -41
  189. package/package/components/home/ListFilters.svelte +0 -1
  190. package/package/components/jobs/JobDetail.svelte +1 -1
  191. package/package/components/jobs/JobPreview.svelte +29 -13
  192. package/package/components/jobs/JobPreview.svelte.d.ts +1 -2
  193. package/package/components/scriptEditor/LogPanel.svelte +6 -1
  194. package/package/components/scriptEditor/LogPanel.svelte.d.ts +1 -1
  195. package/package/gen/core/OpenAPI.js +1 -1
  196. package/package/gen/index.d.ts +1 -0
  197. package/package/gen/models/EditResourceType.d.ts +1 -1
  198. package/package/gen/models/FlowModule.d.ts +7 -0
  199. package/package/gen/models/ScheduleWJobs.d.ts +8 -0
  200. package/package/gen/models/ScheduleWJobs.js +4 -0
  201. package/package/gen/services/DraftService.d.ts +10 -0
  202. package/package/gen/services/DraftService.js +16 -0
  203. package/package/gen/services/JobService.d.ts +24 -3
  204. package/package/gen/services/JobService.js +21 -3
  205. package/package/gen/services/ScheduleService.d.ts +17 -0
  206. package/package/gen/services/ScheduleService.js +18 -0
  207. package/package/gen/services/SettingsService.d.ts +6 -0
  208. package/package/gen/services/SettingsService.js +11 -0
  209. package/package/gen/services/WorkspaceService.d.ts +22 -0
  210. package/package/gen/services/WorkspaceService.js +30 -0
  211. package/package/infer.js +17 -3
  212. package/package/script_helpers.js +16 -5
  213. package/package/scripts.js +11 -1
  214. package/package/utils.d.ts +1 -0
  215. package/package/utils.js +1 -0
  216. package/package.json +21 -12
@@ -11,12 +11,13 @@ import { Icon } from 'svelte-awesome';
11
11
  import { writable } from 'svelte/store';
12
12
  import { Button, Drawer, DrawerContent } from './common';
13
13
  import Badge from './common/badge/Badge.svelte';
14
- import ToggleButton from './common/toggleButton/ToggleButton.svelte';
15
- import ToggleButtonGroup from './common/toggleButton/ToggleButtonGroup.svelte';
14
+ import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
15
+ import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
16
16
  import FolderEditor from './FolderEditor.svelte';
17
17
  import { random_adj } from './random_positive_adjetive';
18
18
  import Required from './Required.svelte';
19
19
  import Tooltip from './Tooltip.svelte';
20
+ import { Folder, User } from 'lucide-svelte';
20
21
  let meta = undefined;
21
22
  export let namePlaceholder = '';
22
23
  export let initialPath;
@@ -252,7 +253,7 @@ async function addFolder() {
252
253
  <div class="flex gap-4 shrink">
253
254
  <!-- svelte-ignore a11y-label-has-associated-control -->
254
255
  <label class="block">
255
- <span class="text-gray-700 text-sm whitespace-nowrap">Owner</span>
256
+ <span class="text-gray-700 text-sm whitespace-nowrap">&nbsp;</span>
256
257
 
257
258
  <ToggleButtonGroup
258
259
  class="mt-0.5"
@@ -261,7 +262,8 @@ async function addFolder() {
261
262
  const kind = e.detail
262
263
  if (meta) {
263
264
  if (kind === 'folder') {
264
- meta.owner = $userStore?.folders?.[0] ?? ''
265
+ console.log($userStore?.folders)
266
+ meta.owner = folders?.[0]?.name ?? ''
265
267
  } else if (kind === 'group') {
266
268
  meta.owner = 'all'
267
269
  } else {
@@ -270,9 +272,25 @@ async function addFolder() {
270
272
  }
271
273
  }}
272
274
  >
273
- <ToggleButton light size="xs" value="user" position="left">User</ToggleButton>
275
+ <ToggleButton
276
+ icon={User}
277
+ {disabled}
278
+ light
279
+ size="xs"
280
+ value="user"
281
+ position="left"
282
+ label="User"
283
+ />
274
284
  <!-- <ToggleButton light size="xs" value="group" position="center">Group</ToggleButton> -->
275
- <ToggleButton light size="xs" value="folder" position="right">Folder</ToggleButton>
285
+ <ToggleButton
286
+ icon={Folder}
287
+ {disabled}
288
+ light
289
+ size="xs"
290
+ value="folder"
291
+ position="right"
292
+ label="Folder"
293
+ />
276
294
  </ToggleButtonGroup>
277
295
  </label>
278
296
  {#if meta.ownerKind === 'user'}
@@ -283,7 +301,7 @@ async function addFolder() {
283
301
  type="text"
284
302
  bind:value={meta.owner}
285
303
  placeholder={$userStore?.username ?? ''}
286
- disabled={!($superadmin || ($userStore?.is_admin ?? false))}
304
+ disabled={disabled || !($superadmin || ($userStore?.is_admin ?? false))}
287
305
  />
288
306
  </label>
289
307
  {:else if meta.ownerKind === 'folder'}
@@ -309,6 +327,7 @@ async function addFolder() {
309
327
  title="View folder"
310
328
  btnClasses="!p-1.5"
311
329
  variant="border"
330
+ color="light"
312
331
  size="xs"
313
332
  disabled={!meta.owner || meta.owner == ''}
314
333
  on:click={viewFolder.openDrawer}
@@ -319,6 +338,7 @@ async function addFolder() {
319
338
  title="New folder"
320
339
  btnClasses="!p-1.5"
321
340
  variant="border"
341
+ color="light"
322
342
  size="xs"
323
343
  {disabled}
324
344
  on:click={newFolder.openDrawer}
@@ -5,6 +5,7 @@ export let notClickable = false;
5
5
  export let popupClass = '';
6
6
  export let disablePopup = false;
7
7
  export let disappearTimeout = 100;
8
+ export let appearTimeout = 300;
8
9
  const [popperRef, popperContent] = createPopperActions({ placement });
9
10
  const popperOptions = {
10
11
  placement: 'bottom-end',
@@ -20,12 +21,20 @@ const popperOptions = {
20
21
  ]
21
22
  };
22
23
  let showTooltip = false;
23
- let timeout;
24
+ let timeout = undefined;
25
+ let inTimeout = undefined;
24
26
  function open() {
25
27
  clearTimeout(timeout);
26
- showTooltip = true;
28
+ if (appearTimeout == 0) {
29
+ showTooltip = true;
30
+ }
31
+ else {
32
+ inTimeout = setTimeout(() => (showTooltip = true), appearTimeout);
33
+ }
27
34
  }
28
35
  function close() {
36
+ inTimeout && clearTimeout(inTimeout);
37
+ inTimeout = undefined;
29
38
  timeout = setTimeout(() => (showTooltip = false), disappearTimeout);
30
39
  }
31
40
  </script>
@@ -8,6 +8,7 @@ declare const __propDef: {
8
8
  popupClass?: string | undefined;
9
9
  disablePopup?: boolean | undefined;
10
10
  disappearTimeout?: number | undefined;
11
+ appearTimeout?: number | undefined;
11
12
  };
12
13
  events: {
13
14
  click: MouseEvent;
@@ -3,7 +3,7 @@ export let detail = '';
3
3
  </script>
4
4
 
5
5
  {#if required}
6
- <span class="text-red-700 font-normal {$$props.class}">*</span>
6
+ <span class="text-red-700 dark:text-red-400 font-normal {$$props.class}">*</span>
7
7
  {:else if detail || detail != ''}
8
8
  <span class="text-sm text-gray-500 ml-2 font-normal {$$props.class}"
9
9
  >({detail != '' ? `${detail}` : ''})</span
@@ -86,11 +86,17 @@ let resourceEditor;
86
86
  >
87
87
  {/if}
88
88
 
89
- <Button variant="border" size="xs" on:click={() => appConnect?.open?.(resourceType)}>
89
+ <Button
90
+ color="light"
91
+ variant="border"
92
+ size="xs"
93
+ on:click={() => appConnect?.open?.(resourceType)}
94
+ >
90
95
  <Icon scale={0.8} data={faPlus} /></Button
91
96
  >
92
97
  <Button
93
98
  variant="border"
99
+ color="light"
94
100
  size="xs"
95
101
  on:click={() => {
96
102
  loadResources(resourceType)
@@ -25,6 +25,10 @@ if ($runFormStore) {
25
25
  args = $runFormStore;
26
26
  $runFormStore = undefined;
27
27
  }
28
+ export async function setArgs(nargs) {
29
+ args = nargs;
30
+ reloadArgs++;
31
+ }
28
32
  export function run() {
29
33
  runAction(scheduledForStr, args, invisible_to_owner);
30
34
  }
@@ -32,6 +36,7 @@ export let isValid = true;
32
36
  let scheduledForStr;
33
37
  let invisible_to_owner;
34
38
  $: cliCommand = `wmill ${isFlow ? 'flow' : 'script'} run ${runnable?.path} -d '${JSON.stringify(args)}'`;
39
+ let reloadArgs = 0;
35
40
  </script>
36
41
 
37
42
  <div class="max-w-3xl">
@@ -91,14 +96,16 @@ $: cliCommand = `wmill ${isFlow ? 'flow' : 'script'} run ${runnable?.path} -d '$
91
96
  {#if !runnable.schema.properties || Object.keys(runnable.schema.properties).length === 0}
92
97
  <div class="text-sm p-4">No arguments</div>
93
98
  {:else}
94
- <SchemaForm
95
- prettifyHeader
96
- {noVariablePicker}
97
- {autofocus}
98
- schema={runnable.schema}
99
- bind:isValid
100
- bind:args
101
- />
99
+ {#key reloadArgs}
100
+ <SchemaForm
101
+ prettifyHeader
102
+ {noVariablePicker}
103
+ {autofocus}
104
+ schema={runnable.schema}
105
+ bind:isValid
106
+ bind:args
107
+ />
108
+ {/key}
102
109
  {/if}
103
110
  {:else}
104
111
  <div class="text-xs text-gray-600">No arguments</div>
@@ -26,6 +26,7 @@ declare const __propDef: {
26
26
  viewCliRun?: boolean | undefined;
27
27
  isFlow: boolean;
28
28
  args?: Record<string, any> | undefined;
29
+ setArgs?: ((nargs: Record<string, any>) => Promise<void>) | undefined;
29
30
  run?: (() => void) | undefined;
30
31
  isValid?: boolean | undefined;
31
32
  };
@@ -38,6 +39,7 @@ export type RunFormProps = typeof __propDef.props;
38
39
  export type RunFormEvents = typeof __propDef.events;
39
40
  export type RunFormSlots = typeof __propDef.slots;
40
41
  export default class RunForm extends SvelteComponentTyped<RunFormProps, RunFormEvents, RunFormSlots> {
42
+ get setArgs(): (nargs: Record<string, any>) => Promise<void>;
41
43
  get run(): () => void;
42
44
  }
43
45
  export {};
@@ -248,18 +248,20 @@ function displayInfoKey(displayInfo) {
248
248
  <th />
249
249
  </tr>
250
250
  <tbody slot="body">
251
- {#each schemaPropertiesToDisplay(schema) as displayInfo (displayInfoKey(displayInfo))}
252
- <tr animate:flip={{ duration: moveAnimationDuration }}>
253
- <PropertyRow
254
- {displayInfo}
255
- {isAnimated}
256
- {lightMode}
257
- on:startEditArgument={handleStartEditEvent}
258
- on:deleteArgument={handleDeleteEvent}
259
- on:changePosition={handleChangePositionEvent}
260
- />
261
- </tr>
262
- {/each}
251
+ {#key schema.required}
252
+ {#each schemaPropertiesToDisplay(schema) as displayInfo (displayInfoKey(displayInfo))}
253
+ <tr animate:flip={{ duration: moveAnimationDuration }}>
254
+ <PropertyRow
255
+ {displayInfo}
256
+ {isAnimated}
257
+ {lightMode}
258
+ on:startEditArgument={handleStartEditEvent}
259
+ on:deleteArgument={handleDeleteEvent}
260
+ on:changePosition={handleChangePositionEvent}
261
+ />
262
+ </tr>
263
+ {/each}
264
+ {/key}
263
265
  </tbody>
264
266
  </TableCustom>
265
267
  {:else}
@@ -1,4 +1,4 @@
1
- <script>import { VariableService } from '../gen';
1
+ <script>import { ResourceService, VariableService } from '../gen';
2
2
  import { workspaceStore } from '../stores';
3
3
  import { allTrue } from '../utils';
4
4
  import { faPlus } from '@fortawesome/free-solid-svg-icons';
@@ -49,16 +49,22 @@ $: {
49
49
  }
50
50
  }
51
51
  }
52
+ let resourceTypes = undefined;
53
+ async function loadResourceTypes() {
54
+ resourceTypes = await ResourceService.listResourceTypeNames({ workspace: $workspaceStore });
55
+ }
56
+ loadResourceTypes();
52
57
  </script>
53
58
 
54
59
  <div class="w-full {clazz} {flexWrap ? 'flex flex-row flex-wrap gap-x-6 gap-y-2' : ''}">
55
60
  {#if keys.length > 0}
56
61
  {#each keys as argName, i (argName)}
57
- {#if Object.keys(schema.properties ?? {}).includes(argName)}
62
+ {#if Object.keys(schema?.properties ?? {}).includes(argName)}
58
63
  <div>
59
64
  {#if typeof args == 'object' && schema?.properties[argName]}
60
65
  {#if editableSchema}
61
66
  <ArgInput
67
+ {resourceTypes}
62
68
  {prettifyHeader}
63
69
  autofocus={i == 0 && autofocus}
64
70
  label={argName}
@@ -85,6 +91,7 @@ $: {
85
91
  />
86
92
  {:else}
87
93
  <ArgInput
94
+ {resourceTypes}
88
95
  {prettifyHeader}
89
96
  autofocus={i == 0 && autofocus}
90
97
  label={argName}
@@ -29,6 +29,7 @@ import { Alert, Button } from './common';
29
29
  import Toggle from './Toggle.svelte';
30
30
  import DrawerContent from './common/drawer/DrawerContent.svelte';
31
31
  import Drawer from './common/drawer/Drawer.svelte';
32
+ import ArrayTypeNarrowing from './ArrayTypeNarrowing.svelte';
32
33
  export let error = '';
33
34
  export let editing = false;
34
35
  export let oldArgName = undefined;
@@ -118,6 +119,11 @@ else {
118
119
  property.contentEncoding = undefined
119
120
  property.enum_ = undefined
120
121
  property.pattern = undefined
122
+ if (argType == 'array') {
123
+ property.items = { type: 'string' }
124
+ } else {
125
+ property.items = undefined
126
+ }
121
127
  }}
122
128
  >
123
129
  {argType}
@@ -139,10 +145,12 @@ else {
139
145
  <div>
140
146
  <div class="flex flex-row gap-x-4 items-center">
141
147
  <ArgInput
148
+ resourceTypes={[]}
142
149
  label="Default"
143
150
  bind:value={property.default}
144
151
  type={property.selectedType}
145
152
  pattern={property.pattern}
153
+ itemsType={property.items}
146
154
  />
147
155
  <Toggle
148
156
  options={{ right: 'Required' }}
@@ -170,11 +178,7 @@ else {
170
178
  bind:contentEncoding={property.contentEncoding}
171
179
  />
172
180
  {:else if property.selectedType == 'array'}
173
- <select bind:value={property.items}>
174
- <option value={undefined}>No specific item type</option>
175
- <option value={{ type: 'string' }}> Items are strings</option>
176
- <option value={{ type: 'number' }}>Items are numbers</option>
177
- </select>
181
+ <ArrayTypeNarrowing bind:itemsType={property.items} />
178
182
  {:else if property.selectedType == 'object'}
179
183
  <h3 class="mb-2 font-bold mt-4">Resource type</h3>
180
184
  <ObjectTypeNarrowing bind:format={property.format} />
@@ -369,6 +369,7 @@ function onKeyDown(event) {
369
369
  {#if !isCloudHosted()}
370
370
  <h2 class="border-b pb-1 mt-10 mb-4"
371
371
  >Custom env variables<Tooltip
372
+ documentationLink="https://docs.windmill.dev/docs/reference#custom-environment-variables"
372
373
  >Additional static custom env variables to pass to the script.</Tooltip
373
374
  ></h2
374
375
  >
@@ -399,30 +400,30 @@ function onKeyDown(event) {
399
400
  {/if}
400
401
  {/if}
401
402
  </div>
403
+ <div class="flex mt-2">
404
+ <Button
405
+ variant="border"
406
+ color="dark"
407
+ size="xs"
408
+ btnClasses="mt-1"
409
+ on:click={() => {
410
+ if (script.envs == undefined || !Array.isArray(script.envs)) {
411
+ script.envs = []
412
+ }
413
+ script.envs = script.envs.concat('')
414
+ }}
415
+ >
416
+ <Icon data={faPlus} class="mr-2" />
417
+ Add item
418
+ </Button>
419
+ </div>
402
420
  {/if}
403
- <div class="flex mt-2">
404
- <Button
405
- variant="border"
406
- color="dark"
407
- size="xs"
408
- btnClasses="mt-1"
409
- on:click={() => {
410
- if (script.envs == undefined || !Array.isArray(script.envs)) {
411
- script.envs = []
412
- }
413
- script.envs = script.envs.concat('')
414
- }}
415
- >
416
- <Icon data={faPlus} class="mr-2" />
417
- Add item
418
- </Button>
419
- </div>
420
421
  </DrawerContent>
421
422
  </Drawer>
422
423
 
423
424
  <div class="flex flex-col h-screen">
424
425
  <div class="flex flex-col w-full px-2 py-1 border-b shadow-sm">
425
- <div class="justify-between flex gap-8 w-full items-center px-2">
426
+ <div class="justify-between flex gap-2 lg:gap-8 w-full items-center px-2">
426
427
  <div class="min-w-64 w-full max-w-md">
427
428
  <input
428
429
  type="text"
@@ -472,7 +473,7 @@ function onKeyDown(event) {
472
473
  <Awareness />
473
474
  {/if}
474
475
 
475
- <div class="flex flex-row gap-x-4">
476
+ <div class="flex flex-row gap-x-1 lg:gap-x-4">
476
477
  <Button
477
478
  color="light"
478
479
  variant="border"
@@ -558,6 +559,7 @@ function onKeyDown(event) {
558
559
  <ScriptSchema bind:schema={script.schema} />
559
560
  </DrawerContent>
560
561
  </Drawer>
562
+
561
563
  <ScriptEditor
562
564
  collabMode
563
565
  edit={initialPath != ''}
@@ -81,29 +81,15 @@ async function loadPastTests() {
81
81
  });
82
82
  }
83
83
  export async function inferSchema(code, nlang) {
84
- schema = schema ?? emptySchema();
85
- let isDefault = [];
86
- Object.entries(args).forEach(([k, v]) => {
87
- if (schema.properties?.[k]?.default == v) {
88
- isDefault.push(k);
89
- }
90
- });
84
+ let nschema = schema ?? emptySchema();
91
85
  try {
92
- await inferArgs(nlang ?? lang, code, schema);
86
+ await inferArgs(nlang ?? lang, code, nschema);
93
87
  validCode = true;
88
+ schema = nschema;
94
89
  }
95
90
  catch (e) {
96
91
  validCode = false;
97
92
  }
98
- schema = schema;
99
- isDefault
100
- .filter((key) => schema.properties[key] != undefined)
101
- .forEach((key) => (args[key] = schema.properties[key].default));
102
- for (const key of Object.keys(args)) {
103
- if (schema.properties[key] == undefined) {
104
- delete args[key];
105
- }
106
- }
107
93
  }
108
94
  onMount(() => {
109
95
  inferSchema(code);
@@ -200,6 +186,7 @@ function collabUrl() {
200
186
  <div class="border-b-2 shadow-sm px-1 pr-4" bind:clientWidth={width}>
201
187
  <div class="flex justify-between space-x-2">
202
188
  <EditorBar
189
+ scriptPath={edit ? path : undefined}
203
190
  on:toggleCollabMode={() => {
204
191
  if (wsProvider?.shouldConnect) {
205
192
  disableCollaboration()
@@ -222,7 +209,7 @@ function collabUrl() {
222
209
  <div class="py-1">
223
210
  <Button
224
211
  target="_blank"
225
- href="https://github.com/windmill-labs/windmill/tree/main/cli"
212
+ href="https://docs.windmill.dev/docs/cli_local_dev/vscode-extension"
226
213
  color="light"
227
214
  size="xs"
228
215
  btnClasses="mr-1 hidden lg:block"
@@ -230,7 +217,7 @@ function collabUrl() {
230
217
  icon: faGithub
231
218
  }}
232
219
  >
233
- Sync from Github
220
+ Use VScode
234
221
  </Button>
235
222
  </div>
236
223
  {/if}
@@ -3,11 +3,13 @@ import { hubScripts, workspaceStore } from '../stores';
3
3
  import { createEventDispatcher } from 'svelte';
4
4
  import Select from 'svelte-select';
5
5
  import { getScriptByPath } from '../scripts';
6
- import RadioButton from './RadioButton.svelte';
7
6
  import { Button, Drawer, DrawerContent } from './common';
8
7
  import HighlightCode from './HighlightCode.svelte';
9
8
  import FlowPathViewer from './flows/content/FlowPathViewer.svelte';
10
9
  import { SELECT_INPUT_DEFAULT_STYLE } from '../defaults';
10
+ import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
11
+ import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
12
+ import { Code2, Globe } from 'lucide-svelte';
11
13
  export let initialPath = undefined;
12
14
  export let scriptPath = undefined;
13
15
  export let allowFlow = false;
@@ -20,9 +22,9 @@ let drawerViewer;
20
22
  let drawerFlowViewer;
21
23
  let code = '';
22
24
  let lang;
23
- let options = [['Script', 'script']];
24
- allowHub && options.unshift(['Hub', 'hub']);
25
- allowFlow && options.push(['Flow', 'flow']);
25
+ let options = [['Script', 'script', Code2]];
26
+ allowHub && options.unshift(['Hub', 'hub', Globe]);
27
+ allowFlow && options.push(['Flow', 'flow', undefined]);
26
28
  const dispatch = createEventDispatcher();
27
29
  async function loadItems() {
28
30
  if (itemKind == 'flow') {
@@ -60,10 +62,14 @@ $: itemKind && $workspaceStore && loadItems();
60
62
  </DrawerContent>
61
63
  </Drawer>
62
64
 
63
- <div class="flex flex-row items-center gap-4 w-full">
65
+ <div class="flex flex-row items-center gap-4 w-full mt-2">
64
66
  {#if options.length > 1}
65
- <div class="w-80 mt-1">
66
- <RadioButton {disabled} bind:value={itemKind} {options} />
67
+ <div>
68
+ <ToggleButtonGroup bind:selected={itemKind}>
69
+ {#each options as [label, value, icon]}
70
+ <ToggleButton {icon} {disabled} {value} {label} />
71
+ {/each}
72
+ </ToggleButtonGroup>
67
73
  </div>
68
74
  {/if}
69
75
 
@@ -0,0 +1,57 @@
1
+ <script>import { Pane, Splitpanes } from 'svelte-splitpanes';
2
+ import PanelSection from './apps/editor/settingsPanel/common/PanelSection.svelte';
3
+ import { classNames } from '../utils';
4
+ import { ScriptService } from '../gen';
5
+ import { workspaceStore } from '../stores';
6
+ import { Skeleton } from './common';
7
+ import FlowModuleScript from './flows/content/FlowModuleScript.svelte';
8
+ export let scriptPath;
9
+ let selectedVersion = undefined;
10
+ let versions = undefined;
11
+ async function loadVersions() {
12
+ versions = (await ScriptService.getScriptByPath({ workspace: $workspaceStore, path: scriptPath })).parent_hashes;
13
+ }
14
+ loadVersions();
15
+ </script>
16
+
17
+ <Splitpanes class="!overflow-visible">
18
+ <Pane size={20}>
19
+ <PanelSection title="Past Versions">
20
+ <div class="flex flex-col gap-2 w-full">
21
+ {#if versions}
22
+ {#if versions.length > 0}
23
+ <div class="flex gap-2 flex-col">
24
+ {#each versions ?? [] as version}
25
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
26
+ <div
27
+ class={classNames(
28
+ 'border flex gap-1 truncate justify-between flex-row w-full items-center p-2 rounded-md cursor-pointer hover:bg-blue-50 hover:text-blue-400',
29
+ selectedVersion == version ? 'bg-blue-100 text-blue-600' : ''
30
+ )}
31
+ on:click={() => (selectedVersion = version)}
32
+ >
33
+ <span class="text-xs truncate">{version}</span>
34
+ </div>
35
+ {/each}
36
+ </div>
37
+ {:else}
38
+ <div class="text-sm text-gray-500">No items</div>
39
+ {/if}
40
+ {:else}
41
+ <Skeleton layout={[[40], [40], [40], [40], [40]]} />
42
+ {/if}
43
+ </div>
44
+ </PanelSection>
45
+ </Pane>
46
+ <Pane size={80}>
47
+ <div class="h-full w-full overflow-auto">
48
+ {#if selectedVersion}
49
+ {#key selectedVersion}
50
+ <FlowModuleScript path={scriptPath} hash={selectedVersion} />
51
+ {/key}
52
+ {:else}
53
+ <div class="text-sm p-2 text-gray-500">Select a deployment version to see its details</div>
54
+ {/if}
55
+ </div>
56
+ </Pane>
57
+ </Splitpanes>
@@ -0,0 +1,16 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ scriptPath: string;
5
+ };
6
+ events: {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {};
10
+ };
11
+ export type ScriptVersionHistoryProps = typeof __propDef.props;
12
+ export type ScriptVersionHistoryEvents = typeof __propDef.events;
13
+ export type ScriptVersionHistorySlots = typeof __propDef.slots;
14
+ export default class ScriptVersionHistory extends SvelteComponentTyped<ScriptVersionHistoryProps, ScriptVersionHistoryEvents, ScriptVersionHistorySlots> {
15
+ }
16
+ export {};
@@ -45,6 +45,7 @@ export let extraLib = '';
45
45
  export let shouldBindKey = true;
46
46
  export let autoHeight = false;
47
47
  export let fixedOverflowWidgets = true;
48
+ export let small = false;
48
49
  const dispatch = createEventDispatcher();
49
50
  const uri = `file:///${hash}.${langToExt(lang)}`;
50
51
  buildWorkerDefinition('../../../workers', import.meta.url, false);
@@ -82,7 +83,8 @@ async function loadMonaco() {
82
83
  let widgets = document.getElementById('monaco-widgets-root') ?? undefined;
83
84
  editor = meditor.create(divEl, {
84
85
  ...editorConfig(model, code, lang, automaticLayout, fixedOverflowWidgets),
85
- overflowWidgetsDomNode: widgets
86
+ overflowWidgetsDomNode: widgets,
87
+ fontSize: small ? 12 : 14
86
88
  });
87
89
  let timeoutModel = undefined;
88
90
  editor.onDidChangeModelContent((event) => {
@@ -19,6 +19,7 @@ declare const __propDef: {
19
19
  shouldBindKey?: boolean | undefined;
20
20
  autoHeight?: boolean | undefined;
21
21
  fixedOverflowWidgets?: boolean | undefined;
22
+ small?: boolean | undefined;
22
23
  getCode?: (() => string) | undefined;
23
24
  insertAtCursor?: ((code: string) => void) | undefined;
24
25
  setCode?: ((ncode: string) => void) | undefined;
@@ -5,9 +5,10 @@ import Tooltip from './Tooltip.svelte';
5
5
  export let text;
6
6
  export let tooltip = undefined;
7
7
  export let view = false;
8
+ export let size = 'md';
8
9
  </script>
9
10
 
10
- <Button color="light" on:click={() => (view = !view)} variant="border"
11
+ <Button color="light" on:click={() => (view = !view)} {size} variant="border"
11
12
  >{text}
12
13
  {#if tooltip}
13
14
  <Tooltip wrapperClass="mx-1">{tooltip}</Tooltip>
@@ -4,6 +4,7 @@ declare const __propDef: {
4
4
  text: string;
5
5
  tooltip?: string | undefined;
6
6
  view?: boolean | undefined;
7
+ size?: "xs" | "sm" | "md" | "lg" | undefined;
7
8
  };
8
9
  events: {
9
10
  [evt: string]: CustomEvent<any>;