windmill-components 1.383.8 → 1.389.1

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 (195) hide show
  1. package/package/assets/app.css +25 -1
  2. package/package/components/ArgInput.svelte +2 -1
  3. package/package/components/ChangeInstanceUsername.svelte +9 -108
  4. package/package/components/ChangeInstanceUsernameInner.svelte +112 -0
  5. package/package/components/ChangeInstanceUsernameInner.svelte.d.ts +21 -0
  6. package/package/components/DiffDrawer.svelte +27 -20
  7. package/package/components/DiffEditor.svelte +13 -1
  8. package/package/components/DisplayResult.svelte +39 -9
  9. package/package/components/DropdownV2.svelte +4 -26
  10. package/package/components/DropdownV2.svelte.d.ts +9 -1
  11. package/package/components/DropdownV2Inner.svelte +42 -0
  12. package/package/components/DropdownV2Inner.svelte.d.ts +40 -0
  13. package/package/components/Editor.svelte +142 -128
  14. package/package/components/Editor.svelte.d.ts +5 -4
  15. package/package/components/EditorBar.svelte +9 -11
  16. package/package/components/EditorSettings.svelte +44 -0
  17. package/package/components/EditorSettings.svelte.d.ts +17 -0
  18. package/package/components/EditorTheme.svelte +1 -1
  19. package/package/components/ErrorOrRecoveryHandler.svelte +27 -20
  20. package/package/components/FlowBuilder.svelte +17 -3
  21. package/package/components/FlowBuilder.svelte.d.ts +3 -0
  22. package/package/components/FlowGraphViewerStep.svelte +1 -1
  23. package/package/components/FlowStatusViewer.svelte +3 -1
  24. package/package/components/FlowStatusViewer.svelte.d.ts +1 -0
  25. package/package/components/FlowStatusViewerInner.svelte +5 -2
  26. package/package/components/FlowViewerInner.svelte +3 -7
  27. package/package/components/FormatOnSave.svelte +12 -29
  28. package/package/components/GraphqlSchemaViewer.svelte +1 -1
  29. package/package/components/GraphqlSchemaViewer.svelte.d.ts +1 -1
  30. package/package/components/HighlightCode.svelte +3 -0
  31. package/package/components/InstanceNameEditor.svelte +64 -0
  32. package/package/components/InstanceNameEditor.svelte.d.ts +23 -0
  33. package/package/components/LightweightArgInput.svelte +6 -11
  34. package/package/components/LogViewer.svelte +37 -29
  35. package/package/components/LogViewer.svelte.d.ts +2 -0
  36. package/package/components/ObjectResourceInput.svelte +1 -1
  37. package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
  38. package/package/components/Path.svelte +3 -3
  39. package/package/components/QueueMetricsDrawer.svelte +6 -218
  40. package/package/components/QueueMetricsDrawer.svelte.d.ts +2 -3
  41. package/package/components/QueueMetricsDrawerInner.svelte +211 -0
  42. package/package/components/QueueMetricsDrawerInner.svelte.d.ts +15 -0
  43. package/package/components/ResourceEditorDrawer.svelte +14 -11
  44. package/package/components/ResourceEditorDrawer.svelte.d.ts +1 -1
  45. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  46. package/package/components/S3FilePicker.svelte +20 -8
  47. package/package/components/ScheduleEditorInner.svelte +497 -469
  48. package/package/components/ScriptBuilder.svelte +12 -1
  49. package/package/components/ScriptBuilder.svelte.d.ts +3 -0
  50. package/package/components/ScriptEditor.svelte +2 -0
  51. package/package/components/ScriptEditor.svelte.d.ts +2 -1
  52. package/package/components/ServiceLogsInner.svelte +511 -0
  53. package/package/components/ServiceLogsInner.svelte.d.ts +20 -0
  54. package/package/components/SimpleEditor.svelte +75 -37
  55. package/package/components/SimpleEditor.svelte.d.ts +9 -3
  56. package/package/components/Summary.svelte +33 -31
  57. package/package/components/Summary.svelte.d.ts +1 -0
  58. package/package/components/SuperadminSettings.svelte +28 -10
  59. package/package/components/TemplateEditor.svelte +1 -1
  60. package/package/components/TestJobLoader.svelte.d.ts +1 -1
  61. package/package/components/VimMode.svelte +16 -0
  62. package/package/components/VimMode.svelte.d.ts +14 -0
  63. package/package/components/WorkerTagPicker.svelte +4 -1
  64. package/package/components/WorkspaceGroup.svelte +139 -68
  65. package/package/components/WorkspaceGroup.svelte.d.ts +3 -0
  66. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +19 -2
  67. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +1 -0
  68. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +2 -1
  69. package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte +2 -0
  70. package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte.d.ts +2 -1
  71. package/package/components/apps/components/display/table/AppAggridTable.svelte +45 -3
  72. package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +2 -1
  73. package/package/components/apps/components/display/table/AppAggridTableEe.svelte +2 -0
  74. package/package/components/apps/components/display/table/AppAggridTableEe.svelte.d.ts +2 -1
  75. package/package/components/apps/editor/AppEditor.svelte +239 -92
  76. package/package/components/apps/editor/AppEditorBottomPanel.svelte +22 -0
  77. package/package/components/apps/editor/AppEditorBottomPanel.svelte.d.ts +24 -0
  78. package/package/components/apps/editor/AppEditorHeader.svelte +44 -2
  79. package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +9 -0
  80. package/package/components/apps/editor/AppExportButton.svelte +1 -1
  81. package/package/components/apps/editor/AppPreview.svelte +4 -0
  82. package/package/components/apps/editor/DeploymentHistory.svelte +7 -3
  83. package/package/components/apps/editor/GridEditor.svelte +4 -13
  84. package/package/components/apps/editor/RunnableJobPanel.svelte +25 -58
  85. package/package/components/apps/editor/RunnableJobPanel.svelte.d.ts +10 -1
  86. package/package/components/apps/editor/RunnalbeJobPanelInner.svelte +56 -0
  87. package/package/components/apps/editor/RunnalbeJobPanelInner.svelte.d.ts +18 -0
  88. package/package/components/apps/editor/SubGridEditor.svelte +3 -1
  89. package/package/components/apps/editor/component/Component.svelte +26 -4
  90. package/package/components/apps/editor/component/Component.svelte.d.ts +1 -0
  91. package/package/components/apps/editor/component/components.d.ts +5 -0
  92. package/package/components/apps/editor/componentsPanel/CssProperty.svelte +2 -0
  93. package/package/components/apps/editor/componentsPanel/tailwindUtils.js +267 -1
  94. package/package/components/apps/editor/contextPanel/ContextPanel.svelte +9 -1
  95. package/package/components/apps/editor/contextPanel/ContextPanel.svelte.d.ts +2 -0
  96. package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +1 -0
  97. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +4 -0
  98. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +7 -2
  99. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte.d.ts +5 -1
  100. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +14 -2
  101. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte.d.ts +1 -0
  102. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +25 -5
  103. package/package/components/apps/editor/settingsPanel/HideButton.svelte +47 -0
  104. package/package/components/apps/editor/settingsPanel/HideButton.svelte.d.ts +22 -0
  105. package/package/components/apps/editor/settingsPanel/TableActions.svelte +43 -4
  106. package/package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -1
  107. package/package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +2 -1
  108. package/package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +1 -0
  109. package/package/components/apps/svelte-grid/Grid.svelte +6 -2
  110. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +1 -0
  111. package/package/components/apps/svelte-grid/MoveResize.svelte +11 -3
  112. package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +1 -0
  113. package/package/components/apps/svelte-grid/utils/item.d.ts +4 -1
  114. package/package/components/apps/svelte-grid/utils/item.js +11 -4
  115. package/package/components/build_workers.d.ts +1 -1
  116. package/package/components/build_workers.js +16 -122
  117. package/package/components/common/button/Button.svelte.d.ts +2 -2
  118. package/package/components/common/calendarPicker/CalendarPicker.svelte +6 -2
  119. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +2 -0
  120. package/package/components/common/drawer/ConditionalPortal.svelte +2 -1
  121. package/package/components/common/drawer/ConditionalPortal.svelte.d.ts +1 -0
  122. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  123. package/package/components/common/popup/Popup.svelte +2 -1
  124. package/package/components/common/popup/Popup.svelte.d.ts +1 -0
  125. package/package/components/common/table/AppRow.svelte +11 -8
  126. package/package/components/common/table/AppRow.svelte.d.ts +1 -2
  127. package/package/components/common/table/FlowRow.svelte +3 -3
  128. package/package/components/common/table/FlowRow.svelte.d.ts +1 -2
  129. package/package/components/common/table/RawAppRow.svelte +3 -3
  130. package/package/components/common/table/RawAppRow.svelte.d.ts +1 -2
  131. package/package/components/common/table/ScriptRow.svelte +3 -3
  132. package/package/components/common/table/ScriptRow.svelte.d.ts +1 -2
  133. package/package/components/copilot/CodeCompletionStatus.svelte +21 -46
  134. package/package/components/copilot/StepGen.svelte +2 -1
  135. package/package/components/custom_ui.d.ts +4 -1
  136. package/package/components/flows/CreateActionsApp.svelte +11 -8
  137. package/package/components/flows/CreateActionsFlow.svelte +11 -8
  138. package/package/components/flows/FlowEditor.svelte +1 -2
  139. package/package/components/flows/FlowEditor.svelte.d.ts +0 -1
  140. package/package/components/flows/FlowHistory.svelte +6 -3
  141. package/package/components/flows/content/FlowModuleComponent.svelte +1 -0
  142. package/package/components/flows/content/FlowModuleScript.svelte +15 -11
  143. package/package/components/flows/content/FlowSettings.svelte +1 -4
  144. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -0
  145. package/package/components/flows/header/FlowYamlEditor.svelte +55 -0
  146. package/package/components/flows/header/FlowYamlEditor.svelte.d.ts +17 -0
  147. package/package/components/flows/map/InsertTriggerButton.svelte +1 -1
  148. package/package/components/flows/map/InsertTriggerButton.svelte.d.ts +1 -0
  149. package/package/components/flows/map/VirtualItem.svelte +1 -1
  150. package/package/components/flows/pickers/PickHubScript.svelte +1 -0
  151. package/package/components/flows/types.d.ts +7 -6
  152. package/package/components/flows/utils.d.ts +9 -0
  153. package/package/components/flows/utils.js +21 -0
  154. package/package/components/graph/graphBuilder.js +1 -0
  155. package/package/components/graph/model.d.ts +1 -0
  156. package/package/components/graph/renderers/edges/BaseEdge.svelte +16 -0
  157. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
  158. package/package/components/graph/renderers/nodes/NoBranchNode.svelte +5 -1
  159. package/package/components/graph/renderers/nodes/NoBranchNode.svelte.d.ts +1 -0
  160. package/package/components/home/Item.svelte +0 -17
  161. package/package/components/home/deploy_ui.d.ts +2 -0
  162. package/package/components/home/deploy_ui.js +21 -0
  163. package/package/components/icons/RustIcon.svelte +70 -0
  164. package/package/components/icons/RustIcon.svelte.d.ts +25 -0
  165. package/package/components/icons/rust-logo.svg +1 -0
  166. package/package/components/instanceSettings.js +2 -2
  167. package/package/components/monaco_keybindings.d.ts +3 -0
  168. package/package/components/monaco_keybindings.js +9 -0
  169. package/package/components/preview/FlowPreviewStatus.svelte +6 -2
  170. package/package/components/runs/JobLoader.svelte +12 -3
  171. package/package/components/runs/JobLoader.svelte.d.ts +1 -1
  172. package/package/components/runs/ManuelDatePicker.svelte +31 -44
  173. package/package/components/runs/ManuelDatePicker.svelte.d.ts +6 -2
  174. package/package/components/runs/RunsFilter.svelte +4 -1
  175. package/package/components/runs/RunsFilter.svelte.d.ts +1 -0
  176. package/package/components/search/GlobalSearchModal.svelte +36 -25
  177. package/package/components/vscode.js +1 -1
  178. package/package/components/wizards/TableActionsWizard.svelte +84 -0
  179. package/package/components/wizards/TableActionsWizard.svelte.d.ts +22 -0
  180. package/package/editorUtils.js +2 -0
  181. package/package/gen/core/OpenAPI.js +1 -1
  182. package/package/gen/schemas.gen.d.ts +8 -8
  183. package/package/gen/schemas.gen.js +8 -8
  184. package/package/gen/services.gen.d.ts +4 -0
  185. package/package/gen/services.gen.js +16 -0
  186. package/package/gen/types.gen.d.ts +20 -8
  187. package/package/infer.d.ts +1 -1
  188. package/package/infer.js +48 -7
  189. package/package/script_helpers.d.ts +1 -0
  190. package/package/script_helpers.js +39 -1
  191. package/package/scripts.d.ts +1 -1
  192. package/package/scripts.js +12 -4
  193. package/package/stores.d.ts +5 -1
  194. package/package/stores.js +7 -2
  195. package/package.json +18 -9
@@ -35,6 +35,7 @@ import { MenuItem } from '@rgossiaux/svelte-headlessui';
35
35
  import { twMerge } from 'tailwind-merge';
36
36
  import CustomPopover from './CustomPopover.svelte';
37
37
  import Summary from './Summary.svelte';
38
+ import FlowYamlEditor from './flows/header/FlowYamlEditor.svelte';
38
39
  export let initialPath = '';
39
40
  export let pathStoreInit = undefined;
40
41
  export let newFlow;
@@ -46,6 +47,7 @@ export let flowStateStore;
46
47
  export let savedFlow = undefined;
47
48
  export let diffDrawer = undefined;
48
49
  export let customUi = {};
50
+ export let disableAi = false;
49
51
  $: setContext('customUi', customUi);
50
52
  const dispatch = createEventDispatcher();
51
53
  async function createSchedule(path) {
@@ -161,6 +163,7 @@ async function saveDraft(forceSave = false) {
161
163
  }
162
164
  catch (error) {
163
165
  sendUserToast(`Error while saving the flow as a draft: ${error.body || error.message}`, true);
166
+ dispatch('saveDraftError', error);
164
167
  }
165
168
  loadingDraft = false;
166
169
  }
@@ -271,6 +274,7 @@ async function saveFlow(deploymentMsg) {
271
274
  dispatch('deploy', $pathStore);
272
275
  }
273
276
  catch (err) {
277
+ dispatch('deployError', err);
274
278
  sendUserToast(`The flow could not be saved: ${err.body}`, true);
275
279
  loadingSave = false;
276
280
  }
@@ -827,6 +831,7 @@ $: $copilotCurrentStepStore === undefined && blurCopilot();
827
831
  let renderCount = 0;
828
832
  let flowTutorials = undefined;
829
833
  let jsonViewerDrawer = undefined;
834
+ let yamlEditorDrawer = undefined;
830
835
  let flowHistory = undefined;
831
836
  export function triggerTutorial() {
832
837
  const urlParams = new URLSearchParams(window.location.search);
@@ -860,6 +865,11 @@ function onCustomUiChange(customUi) {
860
865
  displayName: 'Export',
861
866
  icon: FileJson,
862
867
  action: () => jsonViewerDrawer?.openDrawer()
868
+ },
869
+ {
870
+ displayName: 'Edit in YAML',
871
+ icon: FileJson,
872
+ action: () => yamlEditorDrawer?.openDrawer()
863
873
  }
864
874
  ]
865
875
  : [])
@@ -879,6 +889,7 @@ let msgInput = undefined;
879
889
  {#if $pathStore}
880
890
  <FlowHistory bind:this={flowHistory} path={$pathStore} on:historyRestore />
881
891
  {/if}
892
+ <FlowYamlEditor bind:drawer={yamlEditorDrawer} />
882
893
  <FlowImportExportMenu bind:drawer={jsonViewerDrawer} />
883
894
  <FlowCopilotInputsModal
884
895
  on:confirmed={async () => {
@@ -903,7 +914,10 @@ let msgInput = undefined;
903
914
  <div transition:fade class="absolute inset-0 bg-gray-500 bg-opacity-75 z-[900] !m-0" />
904
915
  {/if}
905
916
  <div class="flex w-full max-w-md gap-4 items-center">
906
- <Summary bind:value={$flowStore.summary} />
917
+ <Summary
918
+ disabled={customUi?.topBar?.editableSummary == false}
919
+ bind:value={$flowStore.summary}
920
+ />
907
921
 
908
922
  <UndoRedo
909
923
  undoProps={{ disabled: $history.index === 0 }}
@@ -1048,7 +1062,7 @@ let msgInput = undefined;
1048
1062
  </div>
1049
1063
  </Button>
1050
1064
  {/if}
1051
- {#if customUi?.topBar?.aiBuilder != false}
1065
+ {#if !disableAi && customUi?.topBar?.aiBuilder != false}
1052
1066
  <FlowCopilotStatus
1053
1067
  {copilotLoading}
1054
1068
  bind:copilotStatus
@@ -1112,7 +1126,7 @@ let msgInput = undefined;
1112
1126
  <!-- metadata -->
1113
1127
  {#if $flowStateStore}
1114
1128
  <FlowEditor
1115
- enableAi={customUi?.stepInputs?.ai != false}
1129
+ disableAi={disableAi || customUi?.stepInputs?.ai == false}
1116
1130
  disableSettings={customUi?.settingsPanel === false}
1117
1131
  {loading}
1118
1132
  on:reload={() => {
@@ -19,6 +19,7 @@ declare const __propDef: {
19
19
  }) | undefined;
20
20
  diffDrawer?: DiffDrawer | undefined;
21
21
  customUi?: FlowBuilderWhitelabelCustomUi | undefined;
22
+ disableAi?: boolean | undefined;
22
23
  computeUnlockedSteps?: ((flow: Flow) => {
23
24
  [k: string]: string;
24
25
  }) | undefined;
@@ -30,7 +31,9 @@ declare const __propDef: {
30
31
  saveInitial: CustomEvent<any>;
31
32
  saveDraftOnlyAtNewPath: CustomEvent<any>;
32
33
  saveDraft: CustomEvent<any>;
34
+ saveDraftError: CustomEvent<any>;
33
35
  deploy: CustomEvent<any>;
36
+ deployError: CustomEvent<any>;
34
37
  details: CustomEvent<any>;
35
38
  } & {
36
39
  [evt: string]: CustomEvent<any>;
@@ -186,7 +186,7 @@ let codeViewer;
186
186
  </Button>
187
187
  </div>
188
188
  <iframe
189
- class="w-full grow text-sm"
189
+ class="w-full grow text-sm h-full"
190
190
  title="embedded script from hub"
191
191
  frameborder="0"
192
192
  src="{$hubBaseUrlStore}/embed/script/{stepDetail.value?.path?.substring(4)}"
@@ -11,6 +11,7 @@ export let hideFlowResult = false;
11
11
  export let hideTimeline = false;
12
12
  export let hideDownloadInGraph = false;
13
13
  export let hideNodeDefinition = false;
14
+ export let hideJobId = false;
14
15
  export let isOwner = false;
15
16
  export let wideResults = false;
16
17
  let lastJobId = jobId;
@@ -22,7 +23,8 @@ setContext('FlowStatusViewer', {
22
23
  retryStatus,
23
24
  hideDownloadInGraph,
24
25
  hideNodeDefinition,
25
- hideTimeline
26
+ hideTimeline,
27
+ hideJobId
26
28
  });
27
29
  function loadOwner(path) {
28
30
  isOwner = loadIsOwner(path, $userStore, workspaceId ?? $workspaceStore);
@@ -11,6 +11,7 @@ declare const __propDef: {
11
11
  hideTimeline?: boolean | undefined;
12
12
  hideDownloadInGraph?: boolean | undefined;
13
13
  hideNodeDefinition?: boolean | undefined;
14
+ hideJobId?: boolean | undefined;
14
15
  isOwner?: boolean | undefined;
15
16
  wideResults?: boolean | undefined;
16
17
  };
@@ -818,8 +818,11 @@ let wrapperHeight = 0;
818
818
  selectedNode = 'end'
819
819
  stepDetail = 'end'
820
820
  } else {
821
- selectedNode = e.detail
822
- stepDetail = e.detail
821
+ const mod = dfs(job?.raw_flow?.modules ?? [], (m) => m).find(
822
+ (m) => m?.id === e?.detail
823
+ )
824
+ stepDetail = mod
825
+ selectedNode = e?.detail
823
826
  }
824
827
  } else {
825
828
  stepDetail = e.detail
@@ -6,13 +6,9 @@ import { ArrowDown, Clipboard } from 'lucide-svelte';
6
6
  import YAML from 'yaml';
7
7
  import { yaml } from 'svelte-highlight/languages';
8
8
  import HighlightTheme from './HighlightTheme.svelte';
9
+ import { filteredContentForExport } from './flows/utils';
9
10
  export let flow;
10
- $: flowFiltered = {
11
- summary: flow.summary,
12
- description: flow.description,
13
- value: flow.value,
14
- schema: flow.schema
15
- };
11
+ $: flowFiltered = filteredContentForExport(flow);
16
12
  let rawType = 'yaml';
17
13
  function trimStringToLines(inputString, maxLines = 100) {
18
14
  const lines = inputString?.split('\n') ?? [];
@@ -57,7 +53,7 @@ let maxLines = 100;
57
53
  variant="border"
58
54
  size="xs"
59
55
  startIcon={{ icon: Clipboard }}
60
- btnClasses="absolute top-2 right-2 w-min"
56
+ btnClasses="absolute top-2 right-2 w-min z-20"
61
57
  >
62
58
  Copy content
63
59
  </Button>
@@ -1,33 +1,16 @@
1
- <script>import { Paintbrush } from 'lucide-svelte';
2
- import Button from './common/button/Button.svelte';
3
- import { formatOnSave } from '../stores';
4
- import Popover from './Popover.svelte';
5
- import { getLocalSetting, storeLocalSetting } from '../utils';
6
- import PaintbrushOff from './icons/PaintbrushOff.svelte';
7
- const SETTING_NAME = 'formatOnSave';
8
- function loadSetting() {
9
- $formatOnSave = (getLocalSetting(SETTING_NAME) ?? 'true') == 'true';
10
- }
1
+ <script>import { FORMAT_ON_SAVE_SETTING_NAME, formatOnSave } from '../stores';
2
+ import { storeLocalSetting } from '../utils';
3
+ import Toggle from './Toggle.svelte';
11
4
  function storeSetting() {
12
- $formatOnSave = !$formatOnSave;
13
- storeLocalSetting(SETTING_NAME, $formatOnSave.toString());
5
+ storeLocalSetting(FORMAT_ON_SAVE_SETTING_NAME, $formatOnSave.toString());
14
6
  }
15
- loadSetting();
16
7
  </script>
17
8
 
18
- <Popover>
19
- <svelte:fragment slot="text"
20
- >{$formatOnSave ? 'Disable' : 'Enable'} auto-formatting</svelte:fragment
21
- >
22
- <Button
23
- size="xs"
24
- color="light"
25
- startIcon={{
26
- icon: !$formatOnSave ? PaintbrushOff : Paintbrush
27
- }}
28
- btnClasses="text-tertiary"
29
- on:click={() => {
30
- storeSetting()
31
- }}
32
- />
33
- </Popover>
9
+ <Toggle
10
+ size="xs"
11
+ bind:checked={$formatOnSave}
12
+ on:change={() => {
13
+ storeSetting()
14
+ }}
15
+ options={{ right: 'auto-formatting' }}
16
+ />
@@ -1,6 +1,6 @@
1
1
  <script>import { BROWSER } from 'esm-env';
2
2
  import { editor as meditor } from 'monaco-editor';
3
- import 'monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution';
3
+ import '@codingame/monaco-vscode-standalone-languages';
4
4
  import { onDestroy, onMount } from 'svelte';
5
5
  let divEl = null;
6
6
  let editor;
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import 'monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution';
2
+ import '@codingame/monaco-vscode-standalone-languages';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  [x: string]: any;
@@ -8,6 +8,7 @@ import javascript from 'svelte-highlight/languages/javascript';
8
8
  import sql from 'svelte-highlight/languages/sql';
9
9
  import powershell from 'svelte-highlight/languages/powershell';
10
10
  import php from 'svelte-highlight/languages/php';
11
+ import rust from 'svelte-highlight/languages/rust';
11
12
  import { Button } from './common';
12
13
  import { copyToClipboard } from '../utils';
13
14
  import { ClipboardCopy } from 'lucide-svelte';
@@ -47,6 +48,8 @@ function getLang(lang) {
47
48
  return powershell;
48
49
  case 'php':
49
50
  return php;
51
+ case 'rust':
52
+ return rust;
50
53
  default:
51
54
  return typescript;
52
55
  }
@@ -0,0 +1,64 @@
1
+ <script>import { Pencil } from 'lucide-svelte';
2
+ import { createEventDispatcher } from 'svelte';
3
+ import Button from './common/button/Button.svelte';
4
+ import Popup from './common/popup/Popup.svelte';
5
+ import { offset, flip, shift } from 'svelte-floating-ui/dom';
6
+ import ChangeInstanceUsernameInner from './ChangeInstanceUsernameInner.svelte';
7
+ export let value;
8
+ export let email;
9
+ export let username = undefined;
10
+ export let automateUsernameCreation = false;
11
+ const dispatch = createEventDispatcher();
12
+ function save() {
13
+ dispatch('save', value);
14
+ }
15
+ </script>
16
+
17
+ <Popup
18
+ let:close
19
+ floatingConfig={{
20
+ strategy: 'fixed',
21
+ placement: 'left-end',
22
+ middleware: [offset(8), flip(), shift()]
23
+ }}
24
+ >
25
+ <svelte:fragment slot="button">
26
+ <Button nonCaptureEvent={true} size="xs" color="light" endIcon={{ icon: Pencil }}>Edit</Button>
27
+ </svelte:fragment>
28
+ <div class="flex flex-col gap-8 max-w-sm">
29
+ {#if automateUsernameCreation && username}
30
+ <ChangeInstanceUsernameInner {email} {username} on:renamed />
31
+ {/if}
32
+ <label class="block text-primary">
33
+ <div class="pb-1 text-xs text-secondary">Name</div>
34
+ <div class="flex w-full">
35
+ <input
36
+ type="text"
37
+ bind:value
38
+ class="!w-auto grow"
39
+ on:click|stopPropagation={() => {}}
40
+ on:keydown|stopPropagation
41
+ on:keypress|stopPropagation={({ key }) => {
42
+ if (key === 'Enter') {
43
+ save()
44
+ close(null)
45
+ }
46
+ }}
47
+ />
48
+ </div>
49
+ <Button
50
+ size="xs"
51
+ color="blue"
52
+ buttonType="button"
53
+ btnClasses="mt-2 "
54
+ aria-label="Save ID"
55
+ on:click={() => {
56
+ save()
57
+ close(null)
58
+ }}
59
+ >
60
+ Update name
61
+ </Button>
62
+ </label>
63
+ </div>
64
+ </Popup>
@@ -0,0 +1,23 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ value: string | undefined;
5
+ email: string;
6
+ username?: string | undefined;
7
+ automateUsernameCreation?: boolean | undefined;
8
+ };
9
+ events: {
10
+ renamed: CustomEvent<any>;
11
+ keydown: KeyboardEvent;
12
+ save: CustomEvent<any>;
13
+ } & {
14
+ [evt: string]: CustomEvent<any>;
15
+ };
16
+ slots: {};
17
+ };
18
+ export type InstanceNameEditorProps = typeof __propDef.props;
19
+ export type InstanceNameEditorEvents = typeof __propDef.events;
20
+ export type InstanceNameEditorSlots = typeof __propDef.slots;
21
+ export default class InstanceNameEditor extends SvelteComponent<InstanceNameEditorProps, InstanceNameEditorEvents, InstanceNameEditorSlots> {
22
+ }
23
+ export {};
@@ -248,11 +248,9 @@ function addItemByItemsType() {
248
248
  dispatch('focus')
249
249
  }}
250
250
  type="number"
251
- class={twMerge(
252
- valid && error == ''
253
- ? ''
254
- : 'border !border-red-700 !border-opacity-70 focus:!border-red-700 focus:!border-opacity-30'
255
- )}
251
+ class={valid && error == ''
252
+ ? ''
253
+ : 'border !border-red-700 !border-opacity-70 focus:!border-red-700 focus:!border-opacity-30'}
256
254
  placeholder={placeholder ?? defaultValue ?? ''}
257
255
  bind:value
258
256
  min={extra['min']}
@@ -264,12 +262,9 @@ function addItemByItemsType() {
264
262
  on:pointerdown={(e) => {
265
263
  e?.stopPropagation()
266
264
  }}
267
- class={twMerge(
268
- valid && error == ''
269
- ? ''
270
- : 'border !border-red-700 !border-opacity-70 focus:!border-red-700 focus:!border-opacity-30',
271
- 'w-full'
272
- )}
265
+ class={valid && error == ''
266
+ ? ''
267
+ : 'border !border-red-700 !border-opacity-70 focus:!border-red-700 focus:!border-opacity-30'}
273
268
  bind:checked={value}
274
269
  />
275
270
  {#if type == 'boolean' && value == undefined}
@@ -24,6 +24,8 @@ export let jobId = undefined;
24
24
  export let tag;
25
25
  export let small = false;
26
26
  export let drawerOpen = false;
27
+ export let noMaxH = false;
28
+ export let noAutoScroll = false;
27
29
  // @ts-ignore
28
30
  const ansi_up = new AnsiUp();
29
31
  let scroll = true;
@@ -118,17 +120,19 @@ function showMoreTruncate(len) {
118
120
  <Drawer bind:this={logViewer} bind:open={drawerOpen} size="900px">
119
121
  <DrawerContent title="Expanded Logs" on:close={logViewer.closeDrawer}>
120
122
  <svelte:fragment slot="actions">
121
- <Button
122
- href="{base}/api/w/{$workspaceStore}/jobs_u/get_logs/{jobId}"
123
- download="windmill_logs_{jobId}.txt"
124
- color="light"
125
- size="xs"
126
- startIcon={{
127
- icon: Download
128
- }}
129
- >
130
- Download
131
- </Button>
123
+ {#if jobId}
124
+ <Button
125
+ href="{base}/api/w/{$workspaceStore}/jobs_u/get_logs/{jobId}"
126
+ download="windmill_logs_{jobId}.txt"
127
+ color="light"
128
+ size="xs"
129
+ startIcon={{
130
+ icon: Download
131
+ }}
132
+ >
133
+ Download
134
+ </Button>
135
+ {/if}
132
136
 
133
137
  <Button
134
138
  on:click={() => copyToClipboard(content)}
@@ -160,28 +164,32 @@ function showMoreTruncate(len) {
160
164
  <div class="relative w-full h-full {wrapperClass}">
161
165
  <div
162
166
  bind:this={div}
163
- class="w-full h-full overflow-auto relative bg-surface-secondary max-h-screen"
167
+ class="w-full h-full overflow-auto relative bg-surface-secondary {noMaxH ? '' : 'max-h-screen'}"
164
168
  >
165
169
  <div class="sticky z-10 top-0 right-0 w-full flex flex-row-reverse justify-between text-sm">
166
170
  <div class="flex gap-2 pl-0.5 bg-surface-secondary">
167
- <div class="flex items-center">
168
- <a
169
- class="text-primary pb-0.5"
170
- target="_blank"
171
- href="{base}/api/w/{$workspaceStore}/jobs_u/get_logs/{jobId}"
172
- download="windmill_logs_{jobId}.txt"
173
- ><Download size="14" />
174
- </a>
175
- </div>
171
+ {#if jobId}
172
+ <div class="flex items-center">
173
+ <a
174
+ class="text-primary pb-0.5"
175
+ target="_blank"
176
+ href="{base}/api/w/{$workspaceStore}/jobs_u/get_logs/{jobId}"
177
+ download="windmill_logs_{jobId}.txt"
178
+ ><Download size="14" />
179
+ </a>
180
+ </div>
181
+ {/if}
176
182
  <button on:click={logViewer.openDrawer}><Expand size="12" /></button>
177
- <div
178
- class="{small ? '' : 'py-2'} pr-2 {small
179
- ? '!text-2xs'
180
- : '!text-xs'} flex gap-2 text-tertiary items-center"
181
- >
182
- Auto scroll
183
- <input class="windmillapp" type="checkbox" bind:checked={scroll} />
184
- </div>
183
+ {#if !noAutoScroll}
184
+ <div
185
+ class="{small ? '' : 'py-2'} pr-2 {small
186
+ ? '!text-2xs'
187
+ : '!text-xs'} flex gap-2 text-tertiary items-center"
188
+ >
189
+ Auto scroll
190
+ <input class="windmillapp" type="checkbox" bind:checked={scroll} />
191
+ </div>
192
+ {/if}
185
193
  </div>
186
194
  </div>
187
195
  {#if isLoading}
@@ -10,6 +10,8 @@ declare const __propDef: {
10
10
  tag: string | undefined;
11
11
  small?: boolean | undefined;
12
12
  drawerOpen?: boolean | undefined;
13
+ noMaxH?: boolean | undefined;
14
+ noAutoScroll?: boolean | undefined;
13
15
  scrollToBottom?: (() => void) | undefined;
14
16
  };
15
17
  events: {
@@ -12,7 +12,7 @@ export let editor = undefined;
12
12
  function isString(value) {
13
13
  return typeof value === 'string' || value instanceof String;
14
14
  }
15
- let path = '';
15
+ export let path = '';
16
16
  function resourceToValue() {
17
17
  if (path) {
18
18
  value = `$res:${path}`;
@@ -9,6 +9,7 @@ declare const __propDef: {
9
9
  selectFirst?: boolean | undefined;
10
10
  defaultValue: any;
11
11
  editor?: SimpleEditor | undefined;
12
+ path?: string | undefined;
12
13
  };
13
14
  events: {
14
15
  [evt: string]: CustomEvent<any>;
@@ -86,7 +86,7 @@ export async function reset() {
86
86
  while (await pathExists(metaToPath(newMeta), kind)) {
87
87
  disabled = true;
88
88
  error = 'finding an available name...';
89
- newMeta.name = random_adj() + '_' + fullNamePlaceholder ?? namePlaceholder;
89
+ newMeta.name = random_adj() + '_' + (fullNamePlaceholder ?? namePlaceholder);
90
90
  }
91
91
  error = '';
92
92
  disabled = false;
@@ -232,7 +232,7 @@ async function addFolder() {
232
232
  function setDirty() {
233
233
  !dirty && (dirty = true);
234
234
  }
235
- const openSearchWithPrefilledText = getContext("openSearchWithPrefilledText");
235
+ const openSearchWithPrefilledText = getContext('openSearchWithPrefilledText');
236
236
  </script>
237
237
 
238
238
  <Drawer bind:this={newFolder}>
@@ -427,7 +427,7 @@ const openSearchWithPrefilledText = getContext("openSearchWithPrefilledText");
427
427
  variant="border"
428
428
  color="dark"
429
429
  on:click={() => {
430
- openSearchWithPrefilledText("#")
430
+ openSearchWithPrefilledText('#')
431
431
  }}
432
432
  startIcon={{ icon: SearchCode }}
433
433
  >