windmill-components 1.550.0 → 1.555.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 (268) hide show
  1. package/package/aiStore.d.ts +13 -0
  2. package/package/aiStore.js +70 -0
  3. package/package/common.d.ts +2 -1
  4. package/package/components/AIProviderPicker.svelte +25 -8
  5. package/package/components/ArgEnum.svelte +3 -2
  6. package/package/components/ArgEnum.svelte.d.ts +1 -0
  7. package/package/components/ArgInput.svelte +235 -174
  8. package/package/components/ArgInput.svelte.d.ts +4 -1
  9. package/package/components/ArrayTypeNarrowing.svelte +38 -32
  10. package/package/components/AutoscalingEvents.svelte +21 -5
  11. package/package/components/AutoscalingEvents.svelte.d.ts +4 -18
  12. package/package/components/DateTimeInput.svelte +8 -6
  13. package/package/components/DeployButton.svelte +1 -1
  14. package/package/components/Dev.svelte +6 -4
  15. package/package/components/EditableSchemaForm.svelte +7 -6
  16. package/package/components/Editor.svelte +2 -1
  17. package/package/components/EditorSettings.svelte +5 -5
  18. package/package/components/EditorSettings.svelte.d.ts +4 -18
  19. package/package/components/FakeMonacoPlaceHolder.svelte +4 -2
  20. package/package/components/FakeMonacoPlaceHolder.svelte.d.ts +1 -0
  21. package/package/components/FieldHeader.svelte +5 -7
  22. package/package/components/FirstStepInputs.svelte +1 -1
  23. package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
  24. package/package/components/FlowPlugConnect.svelte +8 -2
  25. package/package/components/FlowPlugConnect.svelte.d.ts +1 -0
  26. package/package/components/FlowPreviewContent.svelte +113 -92
  27. package/package/components/FlowPreviewContent.svelte.d.ts +3 -3
  28. package/package/components/FlowStatusViewer.svelte +3 -2
  29. package/package/components/FlowStatusViewerInner.svelte +1 -1
  30. package/package/components/FolderEditor.svelte +6 -7
  31. package/package/components/GroupEditor.svelte +148 -141
  32. package/package/components/GroupEditor.svelte.d.ts +5 -4
  33. package/package/components/InputTransformForm.svelte +88 -82
  34. package/package/components/InputTransformSchemaForm.svelte +5 -4
  35. package/package/components/InstanceSetting.svelte +17 -9
  36. package/package/components/JsonEditor.svelte +18 -9
  37. package/package/components/JsonEditor.svelte.d.ts +1 -1
  38. package/package/components/JsonInputs.svelte +1 -1
  39. package/package/components/ModulePreviewForm.svelte +23 -19
  40. package/package/components/NumberTypeNarrowing.svelte +32 -16
  41. package/package/components/ObjectStoreConfigSettings.svelte +27 -19
  42. package/package/components/Path.svelte +2 -8
  43. package/package/components/Path.svelte.d.ts +1 -1
  44. package/package/components/ResourceEditor.svelte +3 -10
  45. package/package/components/ResourcePicker.svelte +85 -72
  46. package/package/components/ResourcePicker.svelte.d.ts +2 -0
  47. package/package/components/RunChart.svelte +1 -1
  48. package/package/components/RunForm.svelte +11 -7
  49. package/package/components/S3ArrayHelperButton.svelte +12 -6
  50. package/package/components/S3ArrayHelperButton.svelte.d.ts +1 -0
  51. package/package/components/S3FilePicker.svelte +1 -1
  52. package/package/components/SchemaForm.svelte +18 -10
  53. package/package/components/SchemaForm.svelte.d.ts +7 -1
  54. package/package/components/SchemaFormWithArgPicker.svelte +1 -1
  55. package/package/components/ScriptBuilder.svelte +2 -2
  56. package/package/components/ScriptEditor.svelte +4 -3
  57. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  58. package/package/components/ShareModal.svelte +4 -4
  59. package/package/components/SimpleEditor.svelte +6 -2
  60. package/package/components/SimpleEditor.svelte.d.ts +3 -0
  61. package/package/components/StringTypeNarrowing.svelte +5 -1
  62. package/package/components/SuperadminSettingsInner.svelte +3 -3
  63. package/package/components/TemplateEditor.svelte +18 -9
  64. package/package/components/Toast.svelte +2 -7
  65. package/package/components/Toast.svelte.d.ts +4 -18
  66. package/package/components/Toggle.svelte +17 -7
  67. package/package/components/ToggleHubWorkspaceQuick.svelte +3 -3
  68. package/package/components/WorkerGroup.svelte +2 -14
  69. package/package/components/apps/components/buttons/AppButton.svelte +57 -39
  70. package/package/components/apps/components/display/dbtable/InsertRow.svelte +32 -2
  71. package/package/components/apps/components/display/dbtable/queries/insert.js +2 -1
  72. package/package/components/apps/components/display/dbtable/utils.d.ts +8 -8
  73. package/package/components/apps/components/display/table/utils.js +13 -3
  74. package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -3
  75. package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +2 -1
  76. package/package/components/apps/editor/AppEditorHeader.svelte +33 -271
  77. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +233 -0
  78. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +18 -0
  79. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +47 -0
  80. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +8 -0
  81. package/package/components/apps/editor/GridEditor.svelte +7 -2
  82. package/package/components/apps/editor/appDeploy.svelte.d.ts +1 -0
  83. package/package/components/apps/editor/appDeploy.svelte.js +6 -0
  84. package/package/components/apps/editor/appUtils.d.ts +1 -0
  85. package/package/components/apps/editor/appUtils.js +30 -1
  86. package/package/components/apps/editor/component/ComponentNavigation.svelte +3 -1
  87. package/package/components/apps/editor/component/components.d.ts +3 -3
  88. package/package/components/apps/editor/component/components.js +1 -1
  89. package/package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -1
  90. package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +6 -4
  91. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
  92. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
  93. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
  94. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +58 -8
  95. package/package/components/auditLogs/AuditLogsFilters.svelte +1 -1
  96. package/package/components/common/ResizeTransitionWrapper.svelte +39 -0
  97. package/package/components/common/ResizeTransitionWrapper.svelte.d.ts +12 -0
  98. package/package/components/common/badge/CountBadge.svelte +29 -0
  99. package/package/components/common/badge/CountBadge.svelte.d.ts +8 -0
  100. package/package/components/common/button/Button.svelte +1 -0
  101. package/package/components/common/button/ConnectionButton.svelte +6 -1
  102. package/package/components/common/button/ConnectionButton.svelte.d.ts +2 -0
  103. package/package/components/common/button/RefreshButton.svelte +8 -4
  104. package/package/components/common/button/RefreshButton.svelte.d.ts +3 -0
  105. package/package/components/common/calendarPicker/CalendarPicker.svelte +1 -1
  106. package/package/components/common/fileInput/FileInput.svelte +7 -6
  107. package/package/components/common/fileUpload/S3ArgInput.svelte +11 -9
  108. package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +1 -0
  109. package/package/components/common/popup/PopupV2.svelte +6 -0
  110. package/package/components/common/toggleButton-v2/ToggleButton.svelte +17 -26
  111. package/package/components/common/toggleButton-v2/ToggleButton.svelte.d.ts +16 -30
  112. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +1 -1
  113. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +3 -3
  114. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
  115. package/package/components/copilot/CodeCompletionStatus.svelte +2 -1
  116. package/package/components/copilot/CronGen.svelte +1 -1
  117. package/package/components/copilot/FlowInlineScriptAIButton.svelte +2 -2
  118. package/package/components/copilot/IteratorGen.svelte +30 -25
  119. package/package/components/copilot/IteratorGen.svelte.d.ts +8 -7
  120. package/package/components/copilot/MetadataGen.svelte +4 -3
  121. package/package/components/copilot/PredicateGen.svelte +15 -12
  122. package/package/components/copilot/PredicateGen.svelte.d.ts +5 -4
  123. package/package/components/copilot/RegexGen.svelte +1 -1
  124. package/package/components/copilot/ScriptFix.svelte +1 -1
  125. package/package/components/copilot/ScriptGen.svelte +2 -1
  126. package/package/components/copilot/StepGenQuick.svelte +15 -16
  127. package/package/components/copilot/StepGenQuick.svelte.d.ts +14 -13
  128. package/package/components/copilot/StepInputGen.svelte +50 -36
  129. package/package/components/copilot/StepInputGen.svelte.d.ts +13 -10
  130. package/package/components/copilot/StepInputsGen.svelte +18 -19
  131. package/package/components/copilot/StepInputsGen.svelte.d.ts +4 -18
  132. package/package/components/copilot/autocomplete/Autocompletor.js +1 -1
  133. package/package/components/copilot/autocomplete/request.js +1 -1
  134. package/package/components/copilot/chat/AIChat.svelte +2 -1
  135. package/package/components/copilot/chat/AIChatManager.svelte.js +2 -1
  136. package/package/components/copilot/chat/AiChatLayout.svelte +2 -1
  137. package/package/components/copilot/chat/ProviderModelSelector.svelte +10 -9
  138. package/package/components/copilot/chat/ProviderModelSelector.svelte.d.ts +2 -17
  139. package/package/components/copilot/chat/flow/FlowAIButton.svelte +1 -1
  140. package/package/components/copilot/chat/script/core.js +2 -1
  141. package/package/components/copilot/chat/shared.js +2 -1
  142. package/package/components/copilot/lib.js +2 -1
  143. package/package/components/details/DetailPageLayout.svelte +3 -2
  144. package/package/components/details/DetailPageLayout.svelte.d.ts +1 -0
  145. package/package/components/flows/CreateActionsFlow.svelte +1 -1
  146. package/package/components/flows/FlowChatInterface.svelte +404 -0
  147. package/package/components/flows/FlowChatInterface.svelte.d.ts +19 -0
  148. package/package/components/flows/FlowChatMessage.svelte +41 -0
  149. package/package/components/flows/FlowChatMessage.svelte.d.ts +9 -0
  150. package/package/components/flows/FlowConversationsSidebar.svelte +213 -0
  151. package/package/components/flows/FlowConversationsSidebar.svelte.d.ts +15 -0
  152. package/package/components/flows/FlowEditor.svelte.d.ts +1 -1
  153. package/package/components/flows/FlowModuleIcon.svelte +10 -10
  154. package/package/components/flows/common/FlowCard.svelte +10 -2
  155. package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
  156. package/package/components/flows/common/FlowCardHeader.svelte +2 -1
  157. package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
  158. package/package/components/flows/content/DynamicInputHelpBox.svelte +4 -4
  159. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -1
  160. package/package/components/flows/content/FlowInput.svelte +381 -259
  161. package/package/components/flows/content/FlowInput.svelte.d.ts +1 -1
  162. package/package/components/flows/content/FlowInputsQuick.svelte +55 -34
  163. package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +2 -2
  164. package/package/components/flows/content/FlowModuleComponent.svelte +5 -10
  165. package/package/components/flows/flowInfers.d.ts +60 -0
  166. package/package/components/flows/flowInfers.js +72 -66
  167. package/package/components/flows/{flowStore.d.ts → flowStore.svelte.d.ts} +1 -0
  168. package/package/components/flows/header/FlowPreviewButtons.svelte +1 -1
  169. package/package/components/flows/map/FlowErrorHandlerItem.svelte +4 -2
  170. package/package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +1 -0
  171. package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -1
  172. package/package/components/flows/map/FlowModuleSchemaMap.svelte +5 -2
  173. package/package/components/flows/map/FlowStickyNode.svelte +2 -2
  174. package/package/components/flows/map/FlowStickyNode.svelte.d.ts +1 -0
  175. package/package/components/flows/map/InsertModuleButton.svelte +5 -2
  176. package/package/components/flows/map/InsertModuleButton.svelte.d.ts +4 -3
  177. package/package/components/flows/map/InsertModuleInner.svelte +3 -1
  178. package/package/components/flows/map/InsertModuleInner.svelte.d.ts +2 -2
  179. package/package/components/flows/map/VirtualItem.svelte +1 -2
  180. package/package/components/flows/pickers/PickHubScriptQuick.svelte +8 -3
  181. package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +1 -1
  182. package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +15 -12
  183. package/package/components/flows/propPicker/PropPickerWrapper.svelte +1 -15
  184. package/package/components/graph/FlowGraphV2.svelte +2 -1
  185. package/package/components/graph/FlowGraphV2.svelte.d.ts +1 -0
  186. package/package/components/graph/graphBuilder.svelte.d.ts +2 -0
  187. package/package/components/graph/graphBuilder.svelte.js +1 -0
  188. package/package/components/graph/renderers/edges/BaseEdge.svelte +1 -0
  189. package/package/components/graph/renderers/nodes/InputNode.svelte +13 -2
  190. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +2 -27
  191. package/package/components/instanceSettings.js +17 -0
  192. package/package/components/progressBar/ProgressBar.svelte +1 -1
  193. package/package/components/raw_apps/FileEditorIcon.svelte +1 -1
  194. package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +4 -18
  195. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +2 -8
  196. package/package/components/raw_apps/RawAppBackgroundRunner.svelte.d.ts +4 -18
  197. package/package/components/raw_apps/RawAppEditor.svelte +6 -7
  198. package/package/components/raw_apps/RawAppEditorHeader.svelte +48 -301
  199. package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +18 -19
  200. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +10 -16
  201. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +13 -13
  202. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +8 -11
  203. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +1 -2
  204. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +0 -1
  205. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +7 -13
  206. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +8 -8
  207. package/package/components/raw_apps/RawAppPreview.svelte +3 -7
  208. package/package/components/raw_apps/RawAppPreview.svelte.d.ts +5 -19
  209. package/package/components/raw_apps/utils.d.ts +1 -1
  210. package/package/components/raw_apps/utils.js +3 -3
  211. package/package/components/runs/RunOption.svelte +2 -2
  212. package/package/components/runs/RunsFilter.svelte +15 -12
  213. package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
  214. package/package/components/schema/EditableSchemaDrawer.svelte +19 -18
  215. package/package/components/schema/FlowPropertyEditor.svelte +9 -2
  216. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
  217. package/package/components/schema/PropertyEditor.svelte +22 -26
  218. package/package/components/schema/SchemaFormDND.svelte +3 -2
  219. package/package/components/schema/SchemaFormDND.svelte.d.ts +1 -0
  220. package/package/components/select/DraggableTags.svelte +2 -2
  221. package/package/components/select/MultiSelect.svelte +14 -8
  222. package/package/components/select/Select.svelte +12 -5
  223. package/package/components/select/Select.svelte.d.ts +11 -0
  224. package/package/components/select/SelectDropdown.svelte +98 -46
  225. package/package/components/select/SelectDropdown.svelte.d.ts +10 -0
  226. package/package/components/select/utils.svelte.js +2 -0
  227. package/package/components/settings/CreateToken.svelte +76 -49
  228. package/package/components/settings/WorkspaceUserSettings.svelte +20 -17
  229. package/package/components/sidebar/CriticalAlertTable.svelte +2 -1
  230. package/package/components/sidebar/Linkify.svelte +14 -0
  231. package/package/components/sidebar/Linkify.svelte.d.ts +5 -0
  232. package/package/components/sidebar/WorkspaceMenu.svelte +8 -3
  233. package/package/components/table/tableUtils.js +1 -1
  234. package/package/components/text_input/TextInput.svelte +30 -0
  235. package/package/components/text_input/TextInput.svelte.d.ts +17 -0
  236. package/package/components/triggers/TriggersEditor.svelte +11 -1
  237. package/package/components/triggers/triggers.svelte.d.ts +1 -1
  238. package/package/components/triggers/triggers.svelte.js +8 -4
  239. package/package/components/tutorials/FlowBuilderTutorialErrorHandler.svelte +2 -2
  240. package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte +3 -0
  241. package/package/components/tutorials/FlowBuilderTutorialSimpleFlow.svelte +49 -17
  242. package/package/components/tutorials/Tutorial.svelte +9 -0
  243. package/package/components/tutorials/Tutorial.svelte.d.ts +1 -0
  244. package/package/components/tutorials/app/AppTutorial.svelte +41 -57
  245. package/package/components/tutorials/app/BackgroundRunnablesTutorial.svelte +3 -5
  246. package/package/components/tutorials/app/ConnectionTutorial.svelte +2 -2
  247. package/package/components/tutorials/utils.js +2 -154
  248. package/package/components/vscode.js +16 -8
  249. package/package/components/workspaceSettings/AISettings.svelte +4 -3
  250. package/package/components/workspaceSettings/CreateWorkspace.svelte +2 -2
  251. package/package/components/workspaceSettings/DucklakeSettings.svelte +64 -7
  252. package/package/components/workspaceSettings/StorageSettings.svelte +24 -26
  253. package/package/editorUtils.d.ts +1 -1
  254. package/package/gen/core/OpenAPI.js +1 -1
  255. package/package/gen/schemas.gen.d.ts +82 -1
  256. package/package/gen/schemas.gen.js +82 -1
  257. package/package/gen/services.gen.d.ts +175 -1
  258. package/package/gen/services.gen.js +345 -2
  259. package/package/gen/types.gen.d.ts +1324 -549
  260. package/package/script_helpers.js +5 -5
  261. package/package/services/JobManager.js +4 -2
  262. package/package/stores.d.ts +4 -13
  263. package/package/stores.js +5 -68
  264. package/package/toast.js +2 -1
  265. package/package/utils.d.ts +1 -0
  266. package/package/utils.js +3 -0
  267. package/package.json +3 -3
  268. /package/package/components/flows/{flowStore.js → flowStore.svelte.js} +0 -0
@@ -8,6 +8,7 @@ import InputTransformForm from './InputTransformForm.svelte';
8
8
  import ItemPicker from './ItemPicker.svelte';
9
9
  import VariableEditor from './VariableEditor.svelte';
10
10
  import { Plus } from 'lucide-svelte';
11
+ import ResizeTransitionWrapper from './common/ResizeTransitionWrapper.svelte';
11
12
  let { schema = $bindable(), args = $bindable({}), isValid = $bindable(true), extraLib = $bindable('missing extraLib'), previousModuleId = undefined, filter = undefined, noDynamicToggle = false, pickableProperties = undefined, enableAi = false, class: clazz = '', helperScript = undefined } = $props();
12
13
  let inputCheck = $state({});
13
14
  $effect(() => {
@@ -43,9 +44,9 @@ $effect(() => {
43
44
  });
44
45
  </script>
45
46
 
46
- <div class="w-full {clazz}">
47
+ <div class="w-full mb-6 {clazz}">
47
48
  {#if enableAi}
48
- <div class="px-0.5 pt-0.5">
49
+ <div class="mt-2">
49
50
  <StepInputsGen
50
51
  {pickableProperties}
51
52
  argNames={keys
@@ -64,7 +65,7 @@ $effect(() => {
64
65
  {#if keys.length > 0}
65
66
  {#each keys as argName, index (argName)}
66
67
  {#if (!filter || filter.includes(argName)) && Object.keys(schema.properties ?? {}).includes(argName)}
67
- <div class="pt-2 relative">
68
+ <ResizeTransitionWrapper class="mt-2 relative" innerClass="w-full" vertical>
68
69
  <InputTransformForm
69
70
  {previousModuleId}
70
71
  bind:arg={args[argName]}
@@ -85,7 +86,7 @@ $effect(() => {
85
86
  Object.entries(args ?? {}).filter(([key]) => key !== argName)
86
87
  )}
87
88
  />
88
- </div>
89
+ </ResizeTransitionWrapper>
89
90
  {/if}
90
91
  {/each}
91
92
  {:else}
@@ -306,13 +306,21 @@ function handleChannelChange(channel, i) {
306
306
  </div>
307
307
  {/if}
308
308
  {:else if setting.fieldType == 'codearea'}
309
- <SimpleEditor
310
- autoHeight
311
- class="editor"
312
- lang={setting.codeAreaLang ?? 'txt'}
313
- bind:code={$values[setting.key]}
314
- fixedOverflowWidgets={false}
315
- />
309
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
310
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
311
+ <div
312
+ onclick={(ev) => {
313
+ ev.stopPropagation() // this is to prevent wrapping label interference
314
+ }}
315
+ >
316
+ <SimpleEditor
317
+ autoHeight
318
+ class="editor"
319
+ lang={setting.codeAreaLang ?? 'txt'}
320
+ bind:code={$values[setting.key]}
321
+ fixedOverflowWidgets={false}
322
+ /></div
323
+ >
316
324
  {:else if setting.fieldType == 'license_key'}
317
325
  {@const { valid, expiration } = parseLicenseKey($values[setting.key] ?? '')}
318
326
  <div class="flex gap-2">
@@ -691,7 +699,7 @@ function handleChannelChange(channel, i) {
691
699
  The max amount of documents (here jobs) per commit. To optimize indexing
692
700
  throughput, it is best to keep this as high as possible. However, especially
693
701
  when reindexing the whole instance, it can be useful to have a limit on how many
694
- jobs can be written without being commited. A commit will make the jobs
702
+ jobs can be written without being committed. A commit will make the jobs
695
703
  available for search, constitute a "checkpoint" state in the indexing and will
696
704
  be logged.
697
705
  </Tooltip>
@@ -750,7 +758,7 @@ function handleChannelChange(channel, i) {
750
758
  representing all logs during 1 minute for a specific host. To optimize indexing
751
759
  throughput, it is best to keep this as high as possible. However, especially
752
760
  when reindexing the whole instance, it can be useful to have a limit on how many
753
- logs can be written without being commited. A commit will make the logs
761
+ logs can be written without being committed. A commit will make the logs
754
762
  available for search, appear as a log line, and be a "checkpoint" of the
755
763
  indexing progress.
756
764
  </Tooltip>
@@ -1,12 +1,14 @@
1
- <script lang="ts">import { run } from 'svelte/legacy';
2
- import '@codingame/monaco-vscode-standalone-json-language-features';
1
+ <script lang="ts">import '@codingame/monaco-vscode-standalone-json-language-features';
3
2
  import SimpleEditor from './SimpleEditor.svelte';
4
- import { createEventDispatcher } from 'svelte';
3
+ import { createEventDispatcher, untrack } from 'svelte';
5
4
  import { createDispatcherIfMounted } from '../createDispatcherIfMounted';
6
5
  import Button from './common/button/Button.svelte';
6
+ import { twMerge } from 'tailwind-merge';
7
+ import { inputBorderClass } from './text_input/TextInput.svelte';
7
8
  let { code = $bindable(), value = $bindable(undefined), error = $bindable(), editor = $bindable(undefined), small = false, loadAsync = false, class: clazz = undefined, disabled = false, fixedOverflowWidgets = true } = $props();
8
9
  let tooBig = $derived(code && code?.length > 1000000);
9
10
  let loadTooBigAnyway = $state(false);
11
+ let focused = $state(false);
10
12
  const dispatch = createEventDispatcher();
11
13
  const dispatchIfMounted = createDispatcherIfMounted(dispatch);
12
14
  function parseJson() {
@@ -24,8 +26,8 @@ function parseJson() {
24
26
  error = e.message;
25
27
  }
26
28
  }
27
- run(() => {
28
- code != undefined && parseJson();
29
+ $effect(() => {
30
+ code != undefined && untrack(() => parseJson());
29
31
  });
30
32
  </script>
31
33
 
@@ -38,12 +40,17 @@ run(() => {
38
40
  </div>
39
41
  {:else}
40
42
  <div class="flex flex-col w-full">
41
- <div class="border w-full">
43
+ <div
44
+ class={twMerge(
45
+ 'w-full rounded-md bg-surface-secondary',
46
+ inputBorderClass({ error: !!error, forceFocus: focused })
47
+ )}
48
+ >
42
49
  <SimpleEditor
43
50
  {loadAsync}
44
51
  {small}
45
- on:focus
46
- on:blur
52
+ on:focus={() => (dispatch('focus'), (focused = true))}
53
+ on:blur={() => (dispatch('blur'), (focused = false))}
47
54
  bind:this={editor}
48
55
  on:change
49
56
  autoHeight
@@ -52,10 +59,12 @@ run(() => {
52
59
  class={clazz}
53
60
  {disabled}
54
61
  {fixedOverflowWidgets}
62
+ renderLineHighlight="none"
63
+ yPadding={8}
55
64
  />
56
65
  </div>
57
66
  {#if error != ''}
58
- <span class="text-red-600 text-xs">{error}</span>
67
+ <span class="text-red-600 text-xs mt-1">{error}</span>
59
68
  {/if}
60
69
  </div>
61
70
  {/if}
@@ -25,9 +25,9 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
25
25
  z_$$bindings?: Bindings;
26
26
  }
27
27
  declare const JsonEditor: $$__sveltets_2_IsomorphicComponent<Props, {
28
+ change: CustomEvent<any>;
28
29
  focus: CustomEvent<any>;
29
30
  blur: CustomEvent<any>;
30
- change: CustomEvent<any>;
31
31
  } & {
32
32
  [evt: string]: CustomEvent<any>;
33
33
  }, {}, {}, "value" | "error" | "code" | "editor">;
@@ -41,7 +41,7 @@ function handleKeydown(event) {
41
41
  <!-- Add a hidden button that can receive focus -->
42
42
  <button bind:this={focusTrap} class="sr-only" tabindex="-1" aria-hidden="true">Focus trap</button>
43
43
 
44
- <div class="h-full">
44
+ <div class="h-full py-3 rounded-md border">
45
45
  <SimpleEditor
46
46
  bind:this={simpleEditor}
47
47
  on:focus={() => {
@@ -1,4 +1,5 @@
1
- <script lang="ts">import { allTrue } from '../utils';
1
+ <script lang="ts">import ResizeTransitionWrapper from './common/ResizeTransitionWrapper.svelte';
2
+ import { allTrue } from '../utils';
2
3
  import { RefreshCw } from 'lucide-svelte';
3
4
  import ArgInput from './ArgInput.svelte';
4
5
  import { Button } from './common';
@@ -69,12 +70,14 @@ $effect.pre(() => {
69
70
  {#if keys.length > 0}
70
71
  {#each keys as argName, i (argName)}
71
72
  {#if Object.keys(schema.properties ?? {}).includes(argName)}
72
- <div
73
+ <ResizeTransitionWrapper
74
+ vertical
73
75
  class={twMerge(
74
- 'flex gap-2',
76
+ 'flex gap-2 relative',
75
77
  animateArg === argName && 'animate-pulse ring-2 ring-offset-2 ring-blue-500 rounded'
76
78
  )}
77
- data-arg={argName}
79
+ innerClass="w-full"
80
+ outerDivProps={{ 'data-arg': argName }}
78
81
  >
79
82
  {#if schema?.properties?.[argName]}
80
83
  <ArgInput
@@ -104,22 +107,23 @@ $effect.pre(() => {
104
107
  nullable={schema.properties[argName].nullable}
105
108
  title={schema.properties[argName].title}
106
109
  placeholder={schema.properties[argName].placeholder}
107
- />
110
+ >
111
+ {#snippet fieldHeaderActions()}
112
+ {#if stepsInputArgs?.isArgManuallySet(mod.id, argName)}
113
+ <Button
114
+ on:click={() => {
115
+ plugIt(argName)
116
+ }}
117
+ size="xs2"
118
+ variant="contained"
119
+ color="light"
120
+ title="Re-evaluate input step"><RefreshCw size={12} /></Button
121
+ >
122
+ {/if}
123
+ {/snippet}
124
+ </ArgInput>
108
125
  {/if}
109
- {#if stepsInputArgs?.isArgManuallySet(mod.id, argName)}
110
- <div class="pt-6 mt-0.5">
111
- <Button
112
- on:click={() => {
113
- plugIt(argName)
114
- }}
115
- size="sm"
116
- variant="border"
117
- color="light"
118
- title="Re-evaluate input step"><RefreshCw size={14} /></Button
119
- >
120
- </div>
121
- {/if}
122
- </div>
126
+ </ResizeTransitionWrapper>
123
127
  {/if}
124
128
  {/each}
125
129
  {/if}
@@ -2,6 +2,8 @@
2
2
  import Toggle from './Toggle.svelte';
3
3
  import Tooltip from './Tooltip.svelte';
4
4
  import { selectOptions } from './apps/editor/component';
5
+ import Select from './select/Select.svelte';
6
+ import TextInput from './text_input/TextInput.svelte';
5
7
  let { min = $bindable(), max = $bindable(), currency = $bindable(), currencyLocale = $bindable() } = $props();
6
8
  let minChecked = $state(min != undefined);
7
9
  let maxChecked = $state(max != undefined);
@@ -29,7 +31,11 @@ let maxChecked = $state(max != undefined);
29
31
  options={{ right: 'Enabled' }}
30
32
  size="xs"
31
33
  />
32
- {/snippet} <input type="number" bind:value={min} disabled={!minChecked} />
34
+ {/snippet}
35
+ <TextInput
36
+ inputProps={{ type: 'number', disabled: !minChecked }}
37
+ bind:value={() => min?.toString(), (v) => (min = v ? parseInt(v) : undefined)}
38
+ />
33
39
  </Label>
34
40
 
35
41
  <Label label="Max" class="w-full col-span-1 ">
@@ -53,31 +59,41 @@ let maxChecked = $state(max != undefined);
53
59
  size="xs"
54
60
  />
55
61
  {/snippet}
56
- <input type="number" bind:value={max} disabled={!maxChecked} />
62
+ <TextInput
63
+ inputProps={{ type: 'number', disabled: !maxChecked }}
64
+ bind:value={() => max?.toString(), (v) => (max = v ? parseInt(v) : undefined)}
65
+ />
57
66
  </Label>
58
67
  </div>
59
- <div class="grid grid-cols-3 gap-4">
60
- <Label label="Currency" class="w-full col-span-2">
68
+ <div class="flex gap-2">
69
+ <Label label="Currency" class=" col-span-2">
61
70
  {#snippet header()}
62
71
  <Tooltip light small>
63
72
  Select a currency to display the number in. If a currency is selected, you can also select
64
73
  a locale to format the number according to that locale.
65
74
  </Tooltip>
66
75
  {/snippet}
67
- <select bind:value={currency}>
68
- <option value={undefined}> No currency </option>
69
- {#each selectOptions.currencyOptions as c}
70
- <option value={c}>{c}</option>
71
- {/each}
72
- </select>
76
+ <Select
77
+ bind:value={
78
+ () => currency,
79
+ (v) => {
80
+ currency = v
81
+ if (!v) currencyLocale = undefined
82
+ }
83
+ }
84
+ items={selectOptions.currencyOptions.map((c) => ({ label: c, value: c }))}
85
+ placeholder="No currency"
86
+ clearable
87
+ />
73
88
  </Label>
74
89
  <Label label="Currency locale" class="w-full">
75
- <select bind:value={currencyLocale} disabled={!currency}>
76
- <option value={undefined}> No locale </option>
77
- {#each selectOptions.localeOptions as c}
78
- <option value={c}>{c}</option>
79
- {/each}
80
- </select>
90
+ <Select
91
+ bind:value={currencyLocale}
92
+ items={selectOptions.localeOptions.map((c) => ({ label: c, value: c }))}
93
+ placeholder="No locale"
94
+ disabled={!currency}
95
+ clearable
96
+ />
81
97
  </Label>
82
98
  </div>
83
99
  </div>
@@ -229,28 +229,36 @@ async function testConnection() {
229
229
  <label class="block pb-2">
230
230
  <span class="text-primary font-semibold text-sm">Service Account Key</span>
231
231
  <span class="text-tertiary text-2xs">JSON content of the service account key file</span>
232
- <SimpleEditor
233
- lang="json"
234
- bind:code={
235
- () => {
236
- if (bucket_config?.type === 'Gcs') {
237
- return JSON.stringify(bucket_config.serviceAccountKey)
238
- } else {
239
- return '{}'
240
- }
241
- },
242
- (v) => {
243
- if (bucket_config?.type === 'Gcs') {
244
- try {
245
- bucket_config.serviceAccountKey = JSON.parse(v ?? '{}')
246
- } catch (_) {
247
- bucket_config.serviceAccountKey = {}
232
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
233
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
234
+ <div
235
+ onclick={(ev) => {
236
+ ev.stopPropagation() // this is to prevent wrapping label interference
237
+ }}
238
+ >
239
+ <SimpleEditor
240
+ lang="json"
241
+ bind:code={
242
+ () => {
243
+ if (bucket_config?.type === 'Gcs') {
244
+ return JSON.stringify(bucket_config.serviceAccountKey)
245
+ } else {
246
+ return '{}'
247
+ }
248
+ },
249
+ (v) => {
250
+ if (bucket_config?.type === 'Gcs') {
251
+ try {
252
+ bucket_config.serviceAccountKey = JSON.parse(v ?? '{}')
253
+ } catch (_) {
254
+ bucket_config.serviceAccountKey = {}
255
+ }
248
256
  }
249
257
  }
250
258
  }
251
- }
252
- class="h-80"
253
- />
259
+ class="h-80"
260
+ />
261
+ </div>
254
262
  </label>
255
263
  {:else}
256
264
  <div>Unknown bucket type {bucket_config['type']}</div>
@@ -344,10 +344,7 @@ let pathUsageInScriptsPromise = $derived(kind == 'script' &&
344
344
  <ToggleButton
345
345
  icon={User}
346
346
  disabled={disabled || disableEditing}
347
- light
348
- size="xs"
349
347
  value="user"
350
- position="left"
351
348
  label="User"
352
349
  {item}
353
350
  />
@@ -355,10 +352,7 @@ let pathUsageInScriptsPromise = $derived(kind == 'script' &&
355
352
  <ToggleButton
356
353
  icon={Folder}
357
354
  disabled={disabled || disableEditing}
358
- light
359
- size="xs"
360
355
  value="folder"
361
- position="right"
362
356
  label="Folder"
363
357
  {item}
364
358
  />
@@ -367,7 +361,7 @@ let pathUsageInScriptsPromise = $derived(kind == 'script' &&
367
361
  </div>
368
362
  {/if}
369
363
  {#if !hideUser}
370
- <div class="text-xl">/</div>
364
+ <div class="text-xl text-tertiary">/</div>
371
365
  {/if}
372
366
  <div>
373
367
  {#if meta.ownerKind === 'user'}
@@ -389,7 +383,7 @@ let pathUsageInScriptsPromise = $derived(kind == 'script' &&
389
383
  </label>
390
384
  {/if}
391
385
  </div>
392
- <span class="text-xl">/</span>
386
+ <span class="text-xl text-tertiary">/</span>
393
387
  <label class="block grow w-full max-w-md">
394
388
  <!-- svelte-ignore a11y_autofocus -->
395
389
  <input
@@ -34,6 +34,6 @@ declare const Path: $$__sveltets_2_IsomorphicComponent<Props, {
34
34
  focus: () => void;
35
35
  setName: (x: string) => void;
36
36
  reset: () => Promise<void>;
37
- }, "error" | "path" | "disabled" | "dirty">;
37
+ }, "path" | "disabled" | "error" | "dirty">;
38
38
  type Path = InstanceType<typeof Path>;
39
39
  export default Path;
@@ -258,10 +258,9 @@ run(() => {
258
258
  <h5 class="mt-4 inline-flex items-center gap-4 pb-2">
259
259
  File content ({resourceTypeInfo.format_extension})
260
260
  </h5>
261
- <div class="h-full w-full border p-1 rounded">
261
+ <div class="">
262
262
  <SimpleEditor
263
263
  autoHeight
264
- class="editor"
265
264
  lang={resourceTypeInfo.format_extension}
266
265
  bind:code={textFileContent}
267
266
  fixedOverflowWidgets={false}
@@ -291,14 +290,8 @@ run(() => {
291
290
  {#if !emptyString(jsonError)}<span class="text-red-400 text-xs mb-1 flex flex-row-reverse"
292
291
  >{jsonError}</span
293
292
  >{:else}<div class="py-2"></div>{/if}
294
- <div class="h-full w-full border p-1 rounded">
295
- <SimpleEditor
296
- autoHeight
297
- class="editor"
298
- lang="json"
299
- bind:code={rawCode}
300
- fixedOverflowWidgets={false}
301
- />
293
+ <div class="bg-surface-secondary rounded-md border py-2.5">
294
+ <SimpleEditor autoHeight lang="json" bind:code={rawCode} />
302
295
  </div>
303
296
  {/if}
304
297
  </div>
@@ -4,12 +4,14 @@ import { onMount, untrack } from 'svelte';
4
4
  import AppConnect from './AppConnectDrawer.svelte';
5
5
  import ResourceEditorDrawer from './ResourceEditorDrawer.svelte';
6
6
  import { Button } from './common';
7
- import { Pen, Plus, RotateCw } from 'lucide-svelte';
7
+ import { Loader2, Pen, Plus, RotateCw } from 'lucide-svelte';
8
8
  import { sendUserToast } from '../toast';
9
9
  import Select from './select/Select.svelte';
10
10
  import DbManagerDrawer from './DBManagerDrawer.svelte';
11
11
  import ExploreAssetButton, { assetCanBeExplored } from './ExploreAssetButton.svelte';
12
- let { initialValue = $bindable(undefined), value = $bindable(undefined), valueType = $bindable(undefined), resourceType = undefined, disabled = false, disablePortal = false, showSchemaExplorer = false, selectFirst = false, expressOAuthSetup = false, defaultValues = undefined, placeholder = undefined, onClear = undefined, excludedValues = undefined } = $props();
12
+ import { twMerge } from 'tailwind-merge';
13
+ import DropdownV2 from './DropdownV2.svelte';
14
+ let { initialValue = $bindable(undefined), value = $bindable(undefined), valueType = $bindable(undefined), resourceType = undefined, disabled = false, disablePortal = false, showSchemaExplorer = false, selectFirst = false, expressOAuthSetup = false, defaultValues = undefined, placeholder = undefined, selectInputClass = '', class: className = '', onClear = undefined, excludedValues = undefined } = $props();
13
15
  if (initialValue && value == undefined) {
14
16
  console.log('initialValue', initialValue);
15
17
  value = initialValue;
@@ -128,91 +130,102 @@ let dbManagerDrawer = $state();
128
130
  }}
129
131
  />
130
132
  <!-- {JSON.stringify({ value, collection })} -->
131
- <div class="flex flex-col w-full items-start min-h-9">
133
+ <div class="flex flex-col w-full items-start min-h-10 {className}">
132
134
  <div class="flex flex-row w-full items-center">
133
- {#if collection?.length > 0}
134
- <Select
135
- {disabled}
136
- {disablePortal}
137
- bind:value={
138
- () => value,
139
- (v) => {
140
- value = v
141
- valueType = collection.find((x) => x?.value == v)?.type
142
- }
135
+ <Select
136
+ {disabled}
137
+ {disablePortal}
138
+ bind:value={
139
+ () => value,
140
+ (v) => {
141
+ value = v
142
+ valueType = collection.find((x) => x?.value == v)?.type
143
143
  }
144
- onClear={() => {
145
- initialValue = undefined
146
- value = undefined
147
- valueType = undefined
148
- onClear?.()
149
- }}
150
- items={collection}
151
- clearable
152
- class="text-clip grow min-w-0"
153
- placeholder={placeholder ?? `${resourceType ?? 'any'} resource`}
154
- />
155
- {:else if !loading}
156
- <div class="text-2xs text-tertiary mr-2">0 found</div>
157
- {/if}
158
- {#if !loading}
159
- <div class="mx-0.5"></div>
160
- {#if value && value != ''}
144
+ }
145
+ onClear={() => {
146
+ initialValue = undefined
147
+ value = undefined
148
+ valueType = undefined
149
+ onClear?.()
150
+ }}
151
+ items={collection}
152
+ clearable
153
+ class="text-clip grow min-w-0"
154
+ inputClass={twMerge('min-h-10', selectInputClass)}
155
+ placeholder={placeholder ?? `${resourceType ?? 'any'} resource`}
156
+ itemLabelWrapperClasses="flex-1"
157
+ itemButtonWrapperClasses="flex"
158
+ >
159
+ {#snippet endSnippet({ item, close })}
161
160
  <Button
162
161
  {disabled}
163
162
  color="light"
164
163
  variant="contained"
165
- size="sm"
166
- btnClasses="w-8 px-0.5 py-1.5"
167
- on:click={() => resourceEditor?.initEdit?.(value ?? '')}
164
+ size="xs3"
165
+ btnClasses="w-8 px-0.5 py-1.5 bg-transparent hover:bg-surface-secondary"
166
+ wrapperClasses="-mr-2 pl-1"
167
+ on:click={() => (resourceEditor?.initEdit?.(item.value ?? ''), close())}
168
168
  startIcon={{ icon: Pen }}
169
169
  iconOnly
170
170
  />
171
- {/if}
172
-
173
- {#if resourceType?.includes(',')}
174
- {#each resourceType.split(',') as rt}
171
+ {/snippet}
172
+ {#snippet bottomSnippet({ close })}
173
+ <div class="flex bg-surface border-t divide-x">
174
+ {#if resourceType?.includes(',')}
175
+ <DropdownV2
176
+ enableFlyTransition
177
+ items={resourceType?.split(',').map((rt) => ({
178
+ displayName: `${rt} resource`,
179
+ icon: Plus,
180
+ action: () => (appConnect?.open?.(rt), close())
181
+ })) ?? []}
182
+ >
183
+ {#snippet buttonReplacement()}
184
+ <Button
185
+ {disabled}
186
+ color="light"
187
+ variant="contained"
188
+ wrapperClasses="flex-1"
189
+ btnClasses="rounded-none mt-0.5"
190
+ size="sm"
191
+ startIcon={{ icon: Plus }}
192
+ >
193
+ Add a resource
194
+ </Button>
195
+ {/snippet}
196
+ </DropdownV2>
197
+ {:else}
198
+ <Button
199
+ {disabled}
200
+ color="light"
201
+ variant="contained"
202
+ wrapperClasses="flex-1"
203
+ btnClasses="rounded-none"
204
+ size="sm"
205
+ on:click={() => (appConnect?.open?.(resourceType), close())}
206
+ startIcon={{ icon: Plus }}
207
+ >
208
+ Add a {resourceType} resource
209
+ </Button>
210
+ {/if}
175
211
  <Button
176
- {disabled}
177
- color="light"
178
212
  variant="contained"
213
+ color="light"
214
+ btnClasses="rounded-none"
179
215
  size="sm"
180
- btnClasses="w-8 px-0.5 py-1.5"
181
- on:click={() => appConnect?.open?.(rt)}
182
- startIcon={{ icon: Plus }}>{rt}</Button
183
- >
184
- {/each}
185
- {:else}
186
- <Button
187
- {disabled}
188
- color="light"
189
- variant="border"
190
- size="sm"
191
- on:click={() => appConnect?.open?.(resourceType)}
192
- startIcon={{ icon: Plus }}
193
- iconOnly={collection?.length > 0}
194
- >{#if collection?.length == 0}
195
- Add a {resourceType} resource
196
- {/if}</Button
197
- >
198
- <div class="mx-0.5"></div>
199
- {/if}
200
- {/if}
201
-
202
- <Button
203
- variant="contained"
204
- color="light"
205
- btnClasses="w-8 px-0.5 py-1.5"
206
- size="sm"
207
- on:click={() => {
208
- loadResources(resourceType)
209
- }}
210
- startIcon={{ icon: RotateCw }}
211
- iconOnly
212
- />
216
+ on:click={() => {
217
+ loadResources(resourceType)
218
+ }}
219
+ startIcon={loading ? { icon: Loader2, classes: 'animate-spin' } : { icon: RotateCw }}
220
+ iconOnly
221
+ />
222
+ </div>
223
+ {/snippet}
224
+ </Select>
213
225
  </div>
214
226
  {#if showSchemaExplorer && value && assetCanBeExplored({ kind: 'resource', path: value }, { resource_type: resourceType })}
215
227
  <ExploreAssetButton
228
+ class="mt-1"
216
229
  _resourceMetadata={{ resource_type: resourceType }}
217
230
  asset={{ kind: 'resource', path: value }}
218
231
  {dbManagerDrawer}
@@ -10,6 +10,8 @@ interface Props {
10
10
  expressOAuthSetup?: boolean;
11
11
  defaultValues?: Record<string, any> | undefined;
12
12
  placeholder?: string | undefined;
13
+ selectInputClass?: string;
14
+ class?: string;
13
15
  onClear?: () => void;
14
16
  excludedValues?: string[];
15
17
  }
@@ -217,7 +217,7 @@ let scatterOptions = $derived({
217
217
  <!-- {JSON.stringify(jobs?.map((x) => x.started_at))} -->
218
218
  <div class="relative max-h-40">
219
219
  {#if !lastFetchWentToEnd}
220
- <div class="absolute top-[-26px] left-[160px]"
220
+ <div class="absolute top-[-28px] left-[180px]"
221
221
  ><Button size="xs" color="transparent" variant="contained" on:click={() => onLoadExtra()}
222
222
  >Load more <Tooltip2
223
223
  >There are more jobs to load but only the first 1000 were fetched</Tooltip2