windmill-components 1.537.1 → 1.542.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/package/components/AIProviderPicker.svelte +181 -0
  2. package/package/components/AIProviderPicker.svelte.d.ts +15 -0
  3. package/package/components/ArgInfo.svelte +2 -2
  4. package/package/components/ArgInput.svelte +35 -9
  5. package/package/components/ArgInput.svelte.d.ts +3 -3
  6. package/package/components/AssignableTagsInner.svelte +89 -3
  7. package/package/components/ConcurrentJobsChart.svelte +36 -48
  8. package/package/components/ConcurrentJobsChart.svelte.d.ts +8 -20
  9. package/package/components/CustomPopover.svelte.d.ts +1 -1
  10. package/package/components/DropdownSelect.svelte +26 -0
  11. package/package/components/DropdownSelect.svelte.d.ts +11 -0
  12. package/package/components/DropdownV2Inner.svelte +1 -1
  13. package/package/components/{DynSelect.svelte → DynamicInput.svelte} +47 -15
  14. package/package/components/DynamicInput.svelte.d.ts +11 -0
  15. package/package/components/EditableSchemaForm.svelte +119 -95
  16. package/package/components/EditableSchemaForm.svelte.d.ts +4 -4
  17. package/package/components/Editor.svelte +86 -93
  18. package/package/components/Editor.svelte.d.ts +4 -3
  19. package/package/components/EditorBar.svelte +2 -5
  20. package/package/components/FlowBuilder.svelte +3 -3
  21. package/package/components/FlowLogRow.svelte +64 -0
  22. package/package/components/FlowLogRow.svelte.d.ts +15 -0
  23. package/package/components/FlowLogViewer.svelte +406 -373
  24. package/package/components/FlowLogViewer.svelte.d.ts +5 -1
  25. package/package/components/FlowLogViewerWrapper.svelte +44 -1
  26. package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
  27. package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
  28. package/package/components/FlowStatusViewerInner.svelte +34 -3
  29. package/package/components/FolderPicker.svelte +1 -1
  30. package/package/components/InputTransformForm.svelte +20 -10
  31. package/package/components/JobArgs.svelte +1 -1
  32. package/package/components/JobLoader.svelte.d.ts +1 -1
  33. package/package/components/JobStatus.svelte +2 -0
  34. package/package/components/LogSnippetViewer.svelte +3 -3
  35. package/package/components/LogSnippetViewer.svelte.d.ts +1 -1
  36. package/package/components/LogViewer.svelte +87 -71
  37. package/package/components/LogViewer.svelte.d.ts +1 -0
  38. package/package/components/Path.svelte +7 -1
  39. package/package/components/Path.svelte.d.ts +1 -1
  40. package/package/components/PrefixedInput.svelte +120 -0
  41. package/package/components/PrefixedInput.svelte.d.ts +8 -0
  42. package/package/components/QueuePosition.svelte +81 -0
  43. package/package/components/QueuePosition.svelte.d.ts +8 -0
  44. package/package/components/ResourceNarrowing.svelte +13 -0
  45. package/package/components/ResourceNarrowing.svelte.d.ts +6 -0
  46. package/package/components/ResourceTypePicker.svelte +49 -74
  47. package/package/components/RunChart.svelte +74 -89
  48. package/package/components/RunChart.svelte.d.ts +10 -22
  49. package/package/components/S3FilePicker.svelte +1 -1
  50. package/package/components/SchemaForm.svelte.d.ts +2 -2
  51. package/package/components/ScriptBuilder.svelte +2 -1
  52. package/package/components/ScriptEditor.svelte +4 -3
  53. package/package/components/ScriptEditor.svelte.d.ts +2 -1
  54. package/package/components/ServiceLogsInner.svelte +1 -1
  55. package/package/components/ShareModal.svelte.d.ts +1 -1
  56. package/package/components/SimpleEditor.svelte +4 -67
  57. package/package/components/StringTypeNarrowing.svelte +5 -10
  58. package/package/components/TemplateEditor.svelte +2 -16
  59. package/package/components/TimeAgo.svelte +1 -1
  60. package/package/components/TimeAgo.svelte.d.ts +1 -0
  61. package/package/components/Toggle.svelte +2 -1
  62. package/package/components/Toggle.svelte.d.ts +2 -1
  63. package/package/components/WorkerRepl.svelte +1 -1
  64. package/package/components/apps/components/display/AppNavbarItem.svelte +2 -1
  65. package/package/components/apps/components/display/table/AppAggridTable.svelte +44 -48
  66. package/package/components/apps/components/display/table/SyncColumnDefs.svelte +101 -19
  67. package/package/components/apps/components/display/table/SyncColumnDefs.svelte.d.ts +5 -2
  68. package/package/components/apps/components/display/table/utils.js +36 -5
  69. package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +10 -5
  70. package/package/components/apps/editor/AppEditor.svelte +4 -3
  71. package/package/components/apps/editor/AppEditorHeader.svelte +0 -1
  72. package/package/components/apps/editor/GridViewer.svelte.d.ts +11 -4
  73. package/package/components/apps/editor/SettingsPanel.svelte +2 -2
  74. package/package/components/apps/editor/componentsPanel/ListItem.svelte +2 -2
  75. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
  76. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
  77. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
  78. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +26 -3
  79. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +1 -1
  80. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +13 -5
  81. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +30 -11
  82. package/package/components/assets/JobAssetsViewer.svelte +28 -24
  83. package/package/components/auditLogs/AuditLogsTable.svelte +2 -6
  84. package/package/components/chartjs-wrappers/Chart.svelte.d.ts +14 -7
  85. package/package/components/common/OnChange.svelte.d.ts +11 -4
  86. package/package/components/common/badge/Badge.svelte +9 -2
  87. package/package/components/common/badge/Badge.svelte.d.ts +2 -1
  88. package/package/components/common/calendarPicker/CalendarPicker.svelte +5 -1
  89. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +5 -4
  90. package/package/components/common/drawer/Disposable.svelte +9 -11
  91. package/package/components/common/drawer/Drawer.svelte +3 -4
  92. package/package/components/common/drawer/Drawer.svelte.d.ts +1 -0
  93. package/package/components/common/menu/MenuItem.svelte.d.ts +2 -2
  94. package/package/components/common/modal/Modal.svelte.d.ts +1 -1
  95. package/package/components/common/tabs/TabContent.svelte +2 -7
  96. package/package/components/common/tabs/TabContent.svelte.d.ts +5 -27
  97. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +9 -3
  98. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -0
  99. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +8 -4
  100. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
  101. package/package/components/copilot/MetadataGen.svelte +1 -1
  102. package/package/components/copilot/chat/AIChatManager.svelte.js +24 -102
  103. package/package/components/copilot/chat/AssistantMessage.svelte +0 -4
  104. package/package/components/copilot/chat/anthropic.d.ts +15 -0
  105. package/package/components/copilot/chat/anthropic.js +208 -0
  106. package/package/components/copilot/chat/api/apiTools.d.ts +2 -2
  107. package/package/components/copilot/chat/api/apiTools.js +10 -7
  108. package/package/components/copilot/chat/api/core.d.ts +1 -1
  109. package/package/components/copilot/chat/api/core.js +7 -2
  110. package/package/components/copilot/chat/ask/core.d.ts +1 -1
  111. package/package/components/copilot/chat/ask/core.js +7 -2
  112. package/package/components/copilot/chat/flow/core.d.ts +1 -1
  113. package/package/components/copilot/chat/flow/core.js +14 -4
  114. package/package/components/copilot/chat/monaco-adapter.d.ts +6 -5
  115. package/package/components/copilot/chat/navigator/core.d.ts +1 -1
  116. package/package/components/copilot/chat/navigator/core.js +7 -2
  117. package/package/components/copilot/chat/script/CodeDisplay.svelte +10 -111
  118. package/package/components/copilot/chat/script/core.d.ts +5 -4
  119. package/package/components/copilot/chat/script/core.js +131 -19
  120. package/package/components/copilot/chat/shared.d.ts +7 -7
  121. package/package/components/copilot/lib.d.ts +29 -8
  122. package/package/components/copilot/lib.js +199 -24
  123. package/package/components/flows/content/FlowInput.svelte +5 -5
  124. package/package/components/flows/content/FlowModuleComponent.svelte +5 -2
  125. package/package/components/flows/content/FlowModuleEarlyStop.svelte +47 -17
  126. package/package/components/flows/content/FlowModuleSleep.svelte +4 -1
  127. package/package/components/flows/content/FlowModuleSuspend.svelte +0 -1
  128. package/package/components/flows/content/FlowModuleTimeout.svelte +50 -10
  129. package/package/components/flows/content/FlowModuleTimeout.svelte.d.ts +1 -0
  130. package/package/components/flows/content/FlowRetries.svelte +108 -3
  131. package/package/components/flows/content/FlowRetries.svelte.d.ts +3 -2
  132. package/package/components/flows/flowInfers.js +8 -35
  133. package/package/components/flows/flowStore.d.ts +45 -1
  134. package/package/components/flows/flowStore.js +1 -1
  135. package/package/components/flows/map/FlowJobsMenu.svelte +3 -3
  136. package/package/components/flows/map/FlowModuleSchemaItem.svelte +61 -54
  137. package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -1
  138. package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +1 -1
  139. package/package/components/flows/map/InsertModuleButton.svelte +1 -0
  140. package/package/components/flows/map/InsertModuleInner.svelte +12 -15
  141. package/package/components/flows/map/InsertModuleInner.svelte.d.ts +10 -9
  142. package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +1 -1
  143. package/package/components/git_sync/DetectionFlow.svelte +15 -17
  144. package/package/components/git_sync/GitSyncContext.svelte.js +1 -1
  145. package/package/components/git_sync/GitSyncRepositoryCard.svelte +0 -1
  146. package/package/components/graph/graphBuilder.svelte.d.ts +5 -1
  147. package/package/components/graph/renderers/edges/BaseEdge.svelte +9 -1
  148. package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +4 -1
  149. package/package/components/graph/renderers/nodes/BranchAllStart.svelte +2 -3
  150. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +2 -3
  151. package/package/components/graph/renderers/triggers/TriggerButton.svelte.d.ts +1 -1
  152. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +3 -1
  153. package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +34 -24
  154. package/package/components/graph/renderers/triggers/TriggersWrapper.svelte.d.ts +1 -2
  155. package/package/components/home/ItemsList.svelte +17 -13
  156. package/package/components/home/TreeView.svelte +21 -27
  157. package/package/components/home/TreeView.svelte.d.ts +2 -29
  158. package/package/components/home/TreeViewRoot.svelte +11 -23
  159. package/package/components/home/TreeViewRoot.svelte.d.ts +15 -13
  160. package/package/components/icons/GitIcon.svelte +10 -2
  161. package/package/components/icons/GitIcon.svelte.d.ts +1 -0
  162. package/package/components/meltComponents/MeltButton.svelte.d.ts +1 -1
  163. package/package/components/meltComponents/Popover.svelte +23 -3
  164. package/package/components/meltComponents/Popover.svelte.d.ts +2 -1
  165. package/package/components/monacoLanguagesOptions.d.ts +3 -0
  166. package/package/components/monacoLanguagesOptions.js +109 -0
  167. package/package/components/propertyPicker/ObjectViewer.svelte +7 -2
  168. package/package/components/propertyPicker/PropPicker.svelte +1 -1
  169. package/package/components/propertyPicker/utils.js +14 -7
  170. package/package/components/runs/JobRunsPreview.svelte +212 -177
  171. package/package/components/runs/JobsLoader.svelte +2 -2
  172. package/package/components/runs/JobsLoader.svelte.d.ts +1 -1
  173. package/package/components/runs/NoWorkerWithTagWarning.svelte +18 -5
  174. package/package/components/runs/RunBadges.svelte +100 -0
  175. package/package/components/runs/RunBadges.svelte.d.ts +12 -0
  176. package/package/components/runs/RunLabels.svelte +86 -0
  177. package/package/components/runs/RunLabels.svelte.d.ts +10 -0
  178. package/package/components/runs/RunOption.svelte +20 -0
  179. package/package/components/runs/RunOption.svelte.d.ts +10 -0
  180. package/package/components/runs/RunRow.svelte +239 -151
  181. package/package/components/runs/RunRow.svelte.d.ts +12 -9
  182. package/package/components/runs/RunsBatchActionsDropdown.svelte +13 -17
  183. package/package/components/runs/RunsBatchActionsDropdown.svelte.d.ts +5 -18
  184. package/package/components/runs/RunsFilter.svelte +369 -243
  185. package/package/components/runs/RunsFilter.svelte.d.ts +2 -0
  186. package/package/components/runs/RunsQueue.svelte +96 -25
  187. package/package/components/runs/RunsQueue.svelte.d.ts +7 -21
  188. package/package/components/runs/RunsTable.svelte +62 -71
  189. package/package/components/runs/RunsTable.svelte.d.ts +2 -1
  190. package/package/components/runs/runs-grid.css +95 -0
  191. package/package/components/schema/EditableSchemaDrawer.svelte +12 -12
  192. package/package/components/schema/FlowPropertyEditor.svelte +197 -206
  193. package/package/components/schema/PropertyEditor.svelte +33 -35
  194. package/package/components/schema/SchemaFormDND.svelte.d.ts +2 -2
  195. package/package/components/search/GlobalSearchModal.svelte +8 -1
  196. package/package/components/select/DraggableTags.svelte.d.ts +17 -7
  197. package/package/components/select/MultiSelect.svelte.d.ts +21 -11
  198. package/package/components/select/Select.svelte +2 -1
  199. package/package/components/select/Select.svelte.d.ts +25 -13
  200. package/package/components/select/SelectDropdown.svelte.d.ts +14 -7
  201. package/package/components/settings/TokenDisplay.svelte +1 -1
  202. package/package/components/sidebar/OperatorMenu.svelte +5 -0
  203. package/package/components/sidebar/SidebarContent.svelte +48 -2
  204. package/package/components/sidebar/WorkspaceMenu.svelte +116 -17
  205. package/package/components/toast.js +6 -3
  206. package/package/components/triggers/AddTriggersButton.svelte +7 -6
  207. package/package/components/triggers/CaptureWrapper.svelte +19 -3
  208. package/package/components/triggers/TriggerLabel.svelte +8 -0
  209. package/package/components/triggers/TriggerTokens.svelte +1 -1
  210. package/package/components/triggers/TriggersEditor.svelte +9 -5
  211. package/package/components/triggers/TriggersTable.svelte +2 -2
  212. package/package/components/triggers/TriggersWrapper.svelte +16 -5
  213. package/package/components/triggers/TriggersWrapper.svelte.d.ts +3 -19
  214. package/package/components/{details/EmailTriggerCaptures.svelte → triggers/email/DefaultEmailCapture.svelte} +5 -5
  215. package/package/components/{details/EmailTriggerCaptures.svelte.d.ts → triggers/email/DefaultEmailCapture.svelte.d.ts} +4 -4
  216. package/package/components/{details/EmailTriggerConfigSection.svelte → triggers/email/DefaultEmailConfigSection.svelte} +24 -14
  217. package/package/components/triggers/email/DefaultEmailConfigSection.svelte.d.ts +13 -0
  218. package/package/components/triggers/email/DefaultEmailPanel.svelte +71 -0
  219. package/package/components/triggers/email/DefaultEmailPanel.svelte.d.ts +11 -0
  220. package/package/components/triggers/email/EmailCapture.svelte +39 -0
  221. package/package/components/triggers/email/EmailCapture.svelte.d.ts +43 -0
  222. package/package/components/triggers/email/EmailTriggerEditor.svelte +20 -0
  223. package/package/components/triggers/email/EmailTriggerEditor.svelte.d.ts +11 -0
  224. package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte +133 -0
  225. package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte.d.ts +14 -0
  226. package/package/components/triggers/email/EmailTriggerEditorInner.svelte +335 -0
  227. package/package/components/triggers/email/EmailTriggerEditorInner.svelte.d.ts +22 -0
  228. package/package/components/triggers/email/EmailTriggerPanel.svelte +61 -0
  229. package/package/components/triggers/email/EmailTriggerPanel.svelte.d.ts +14 -0
  230. package/package/components/triggers/email/utils.d.ts +4 -0
  231. package/package/components/triggers/email/utils.js +52 -0
  232. package/package/components/triggers/http/RouteEditorConfigSection.svelte +1 -1
  233. package/package/components/triggers/http/utils.js +1 -1
  234. package/package/components/triggers/triggers.svelte.d.ts +1 -0
  235. package/package/components/triggers/triggers.svelte.js +24 -2
  236. package/package/components/triggers/utils.js +19 -5
  237. package/package/components/triggers.d.ts +1 -1
  238. package/package/components/triggers.js +2 -0
  239. package/package/components/wizards/AgGridWizard.svelte +85 -80
  240. package/package/components/workspaceSettings/AISettings.svelte +74 -22
  241. package/package/components/workspaceSettings/AISettings.svelte.d.ts +2 -1
  242. package/package/components/workspaceSettings/CreateWorkspace.svelte +395 -0
  243. package/package/components/workspaceSettings/CreateWorkspace.svelte.d.ts +6 -0
  244. package/package/components/workspaceSettings/DucklakeSettings.svelte +3 -1
  245. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +1 -1
  246. package/package/components/workspaceSettings/StorageSettings.svelte +69 -48
  247. package/package/gen/core/OpenAPI.js +1 -1
  248. package/package/gen/schemas.gen.d.ts +142 -3
  249. package/package/gen/schemas.gen.js +144 -3
  250. package/package/gen/services.gen.d.ts +129 -1
  251. package/package/gen/services.gen.js +267 -1
  252. package/package/gen/types.gen.d.ts +434 -8
  253. package/package/hubPaths.json +4 -2
  254. package/package/infer.js +1 -1
  255. package/package/keyboardChain.d.ts +5 -0
  256. package/package/keyboardChain.js +40 -0
  257. package/package/services/JobManager.js +2 -2
  258. package/package/stores.d.ts +3 -1
  259. package/package/stores.js +8 -5
  260. package/package/utils/workspaceHierarchy.d.ts +27 -0
  261. package/package/utils/workspaceHierarchy.js +101 -0
  262. package/package/utils.d.ts +6 -3
  263. package/package/utils.js +30 -15
  264. package/package/workspace_settings.js +2 -3
  265. package/package.json +9 -11
  266. package/package/components/DynSelect.svelte.d.ts +0 -11
  267. package/package/components/ObjectTypeNarrowing.svelte +0 -18
  268. package/package/components/ObjectTypeNarrowing.svelte.d.ts +0 -22
  269. package/package/components/details/DetailPageTriggerPanel.svelte +0 -121
  270. package/package/components/details/DetailPageTriggerPanel.svelte.d.ts +0 -20
  271. package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +0 -12
  272. package/package/components/details/EmailTriggerPanel.svelte +0 -76
  273. package/package/components/details/EmailTriggerPanel.svelte.d.ts +0 -26
@@ -4,9 +4,7 @@ import Toggle from '../Toggle.svelte';
4
4
  import SimpleEditor from '../SimpleEditor.svelte';
5
5
  import { createEventDispatcher } from 'svelte';
6
6
  import ArgInput from '../ArgInput.svelte';
7
- import ObjectTypeNarrowing from '../ObjectTypeNarrowing.svelte';
8
- import Tabs from '../common/tabs/Tabs.svelte';
9
- import { Tab, TabContent } from '../common';
7
+ import ResourceNarrowing from '../ResourceNarrowing.svelte';
10
8
  import EditableSchemaDrawer from './EditableSchemaDrawer.svelte';
11
9
  import ToggleButtonGroup from '../common/toggleButton-v2/ToggleButtonGroup.svelte';
12
10
  import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte';
@@ -14,7 +12,7 @@ import Button from '../common/button/Button.svelte';
14
12
  import { Pen, Plus, Trash2 } from 'lucide-svelte';
15
13
  import Popover from '../meltComponents/Popover.svelte';
16
14
  import ResourcePicker from '../ResourcePicker.svelte';
17
- import Tooltip from '../Tooltip.svelte';
15
+ import { DynamicInput } from '../../utils';
18
16
  let { format = $bindable(undefined), contentEncoding = undefined, type = undefined, oneOf = $bindable(undefined), required = false, pattern = undefined, password = undefined, variableEditor = undefined, itemPicker = undefined, nullable = $bindable(undefined), disabled = $bindable(undefined), defaultValue = $bindable(undefined), propsNames = [], showExpr = $bindable(undefined), extra = {}, customErrorMessage = undefined, itemsType = undefined, properties = $bindable(undefined), order = $bindable(undefined), requiredProperty = $bindable(undefined), displayWebhookWarning = true, onDrawerClose = undefined } = $props();
19
17
  let oneOfSelected = $state(oneOf?.[0]?.title);
20
18
  const dispatch = createEventDispatcher();
@@ -65,229 +63,222 @@ let initialObjectSelected = $state(format === 'json-schema'
65
63
  : Object.keys(properties ?? {}).length == 0
66
64
  ? 'resource'
67
65
  : 'custom-object');
68
- let isDynSelect = $derived(format?.startsWith('dynselect-') ?? false);
66
+ let isDyn = $derived(DynamicInput.isDynInputFormat(format));
69
67
  let customObjectSelected = $state(format?.startsWith('jsonschema-') ? 'json-schema-resource' : 'editor');
70
68
  </script>
71
69
 
72
- <div class="flex flex-col gap-2">
70
+ <div class="flex flex-col gap-2 mt-2">
73
71
  {#if type === 'object' && oneOf && oneOf.length >= 2}
74
- <div class="flex flex-row gap-1 items-center justify-start">
75
- <ToggleButtonGroup
76
- bind:selected={oneOfSelected}
77
- class="h-auto w-auto"
78
- tabListClass="flex-wrap"
79
- >
80
- {#snippet children({ item })}
81
- {#each oneOf ?? [] as obj}
82
- <ToggleButton value={obj.title ?? ''} label={obj.title} {item} />
83
- {/each}
84
- {/snippet}
85
- </ToggleButtonGroup>
72
+ <Label label="OneOf properties">
73
+ <div class="flex flex-row gap-1 items-center justify-start pt-2">
74
+ <ToggleButtonGroup
75
+ bind:selected={oneOfSelected}
76
+ class="h-auto w-auto"
77
+ tabListClass="flex-wrap"
78
+ >
79
+ {#snippet children({ item })}
80
+ {#each oneOf ?? [] as obj}
81
+ <ToggleButton value={obj.title ?? ''} label={obj.title} {item} />
82
+ {/each}
83
+ {/snippet}
84
+ </ToggleButtonGroup>
86
85
 
87
- <Popover placement="bottom-end" closeButton>
88
- {#snippet trigger()}
89
- <Button size="xs2" color="light" nonCaptureEvent startIcon={{ icon: Plus }} />
90
- {/snippet}
91
- {#snippet content({ close })}
92
- <Label label="Label" class="p-2 flex flex-col gap-2">
93
- <input
94
- type="text"
95
- class="w-full !bg-surface"
96
- onkeydown={(event) => {
97
- if (event.key === 'Enter') {
86
+ <Popover placement="bottom-end" closeButton>
87
+ {#snippet trigger()}
88
+ <Button size="xs2" color="light" nonCaptureEvent startIcon={{ icon: Plus }} />
89
+ {/snippet}
90
+ {#snippet content({ close })}
91
+ <Label label="Label" class="p-2 flex flex-col gap-2">
92
+ <input
93
+ type="text"
94
+ class="w-full !bg-surface"
95
+ onkeydown={(event) => {
96
+ if (event.key === 'Enter') {
97
+ createVariant(variantName)
98
+ close()
99
+ }
100
+ }}
101
+ bind:value={variantName}
102
+ />
103
+ <Button
104
+ variant="border"
105
+ color="light"
106
+ size="xs"
107
+ on:click={() => {
98
108
  createVariant(variantName)
99
109
  close()
100
- }
101
- }}
102
- bind:value={variantName}
103
- />
104
- <Button
105
- variant="border"
106
- color="light"
107
- size="xs"
108
- on:click={() => {
109
- createVariant(variantName)
110
- close()
111
- }}
112
- disabled={variantName.length === 0}
113
- >
114
- Add
115
- </Button>
116
- </Label>
117
- {/snippet}
118
- </Popover>
119
- </div>
120
- <div class="flex flex-row gap-2 items-center">
121
- <span class="font-semibold text-sm">{oneOfSelected}</span>
110
+ }}
111
+ disabled={variantName.length === 0}
112
+ >
113
+ Add
114
+ </Button>
115
+ </Label>
116
+ {/snippet}
117
+ </Popover>
118
+ </div>
119
+ <div class="flex flex-row gap-2 items-center ml-1 mt-4 mb-2">
120
+ <span class="font-semibold text-sm">{oneOfSelected}</span>
122
121
 
123
- <Popover
124
- floatingConfig={{ strategy: 'absolute', placement: 'bottom-end' }}
125
- containerClasses="border rounded-lg shadow-lg p-4 bg-surface"
126
- closeButton
127
- >
128
- {#snippet trigger()}
129
- <Button
130
- size="xs2"
131
- color="light"
132
- startIcon={{ icon: Pen }}
133
- propagateEvent
134
- iconOnly={false}
135
- on:click={() => {
136
- if (oneOfSelected) {
137
- variantName = oneOfSelected
138
- }
139
- }}
140
- />
141
- {/snippet}
142
- {#snippet content({ close })}
143
- <Label label="Label" class="p-2 flex flex-col gap-2">
144
- <input
145
- type="text"
146
- class="w-full !bg-surface"
147
- onkeydown={(event) => {
148
- if (event.key === 'Enter') {
149
- if (oneOfSelected) {
150
- renameVariant(variantName, oneOfSelected)
151
- close()
152
- }
153
- }
154
- }}
155
- bind:value={variantName}
156
- />
122
+ <Popover
123
+ floatingConfig={{ strategy: 'absolute', placement: 'bottom-end' }}
124
+ containerClasses="border rounded-lg shadow-lg p-4 bg-surface"
125
+ closeButton
126
+ >
127
+ {#snippet trigger()}
157
128
  <Button
158
- variant="border"
129
+ size="xs2"
159
130
  color="light"
160
- size="xs"
131
+ startIcon={{ icon: Pen }}
132
+ propagateEvent
133
+ iconOnly={false}
161
134
  on:click={() => {
162
135
  if (oneOfSelected) {
163
- renameVariant(variantName, oneOfSelected)
164
- close()
136
+ variantName = oneOfSelected
165
137
  }
166
138
  }}
167
- disabled={variantName.length === 0}
168
- >
169
- Rename
170
- </Button>
171
- </Label>
172
- {/snippet}
173
- </Popover>
174
- <Button
175
- size="xs2"
176
- color="red"
177
- startIcon={{ icon: Trash2 }}
178
- iconOnly
179
- disabled={(oneOf?.length ?? 0) <= 2}
180
- on:click={() => {
181
- if (oneOf && oneOfSelected) {
182
- const idx = oneOf.findIndex((obj) => obj.title === oneOfSelected)
183
- oneOf = oneOf.filter((_, i) => i !== idx)
184
- oneOfSelected = oneOf[0].title
185
- }
186
- }}
187
- />
188
- </div>
189
- {#if oneOfSelected && oneOf}
190
- {@const idx = oneOf.findIndex((obj) => obj.title === oneOfSelected)}
191
- <EditableSchemaDrawer
192
- onClose={() => {
193
- onDrawerClose?.()
194
- }}
195
- bind:schema={oneOf[idx]}
196
- hiddenArgs={[
197
- oneOf?.find((o) => Object.keys(o.properties ?? {}).includes('kind')) ? 'kind' : 'label'
198
- ]}
199
- />
200
- {/if}
201
- {:else if type === 'object' && format !== 'resource-s3_object' && !isDynSelect}
202
- <Tabs
203
- bind:selected={initialObjectSelected}
204
- on:selected={(e) => {
205
- if (e.detail === 'json-schema') {
206
- format = 'json-schema'
207
- } else {
208
- format = ''
209
- }
210
- }}
211
- >
212
- <Tab value="resource">Resource</Tab>
213
- <Tab value="custom-object">Custom Object</Tab>
214
- <Tab value="json-schema">
215
- JSON Schema
216
- <Tooltip>
217
- This displays a JSON schema editor, useful when a JSON schema input is expected.
218
- </Tooltip>
219
- </Tab>
220
- {#snippet content()}
221
- <div class="pt-2">
222
- <TabContent value="custom-object">
223
- <ToggleButtonGroup
224
- bind:selected={customObjectSelected}
225
- class="mb-2"
226
- on:selected={(e) => {
227
- if (e.detail === 'editor') {
228
- format = undefined
229
- } else {
230
- properties = undefined
231
- order = undefined
232
- requiredProperty = undefined
233
- }
234
- }}
235
- >
236
- {#snippet children({ item })}
237
- <ToggleButton value="editor" label="Editor" {item} />
238
- <ToggleButton
239
- value="json-schema-resource"
240
- label="JSON Schema Resource"
241
- {item}
242
- tooltip="Select a JSON schema resource to specify the object's properties"
243
- showTooltipIcon
244
- />
245
- {/snippet}
246
- </ToggleButtonGroup>
247
- {#if customObjectSelected === 'editor'}
248
- <EditableSchemaDrawer
249
- bind:schema={
250
- () => {
251
- return {
252
- properties: properties,
253
- order: order,
254
- required: requiredProperty
139
+ />
140
+ {/snippet}
141
+ {#snippet content({ close })}
142
+ <Label label="Label" class="p-2 flex flex-col gap-2">
143
+ <input
144
+ type="text"
145
+ class="w-full !bg-surface"
146
+ onkeydown={(event) => {
147
+ if (event.key === 'Enter') {
148
+ if (oneOfSelected) {
149
+ renameVariant(variantName, oneOfSelected)
150
+ close()
255
151
  }
256
- },
257
- (v) => {
258
- properties = v.properties
259
- order = v.order
260
- requiredProperty = v.required
261
152
  }
262
- }
153
+ }}
154
+ bind:value={variantName}
263
155
  />
264
- {:else if customObjectSelected === 'json-schema-resource'}
265
- <ResourcePicker
266
- resourceType="json_schema"
267
- bind:value={
268
- () => {
269
- if (format?.startsWith('jsonschema-')) {
270
- return format.substring('jsonschema-'.length)
271
- }
272
- return undefined
273
- },
274
- (v) => {
275
- format = 'jsonschema-' + v
156
+ <Button
157
+ variant="border"
158
+ color="light"
159
+ size="xs"
160
+ on:click={() => {
161
+ if (oneOfSelected) {
162
+ renameVariant(variantName, oneOfSelected)
163
+ close()
276
164
  }
277
- }
278
- />
279
- {/if}
280
- </TabContent>
281
-
282
- <TabContent value="resource">
283
- <ObjectTypeNarrowing bind:format />
284
- </TabContent>
165
+ }}
166
+ disabled={variantName.length === 0}
167
+ >
168
+ Rename
169
+ </Button>
170
+ </Label>
171
+ {/snippet}
172
+ </Popover>
173
+ <Button
174
+ size="xs2"
175
+ color="red"
176
+ startIcon={{ icon: Trash2 }}
177
+ iconOnly
178
+ disabled={(oneOf?.length ?? 0) <= 2}
179
+ on:click={() => {
180
+ if (oneOf && oneOfSelected) {
181
+ const idx = oneOf.findIndex((obj) => obj.title === oneOfSelected)
182
+ oneOf = oneOf.filter((_, i) => i !== idx)
183
+ oneOfSelected = oneOf[0].title
184
+ }
185
+ }}
186
+ />
187
+ </div>
188
+ {#if oneOfSelected && oneOf}
189
+ {@const idx = oneOf.findIndex((obj) => obj.title === oneOfSelected)}
190
+ <div class="ml-1">
191
+ <EditableSchemaDrawer
192
+ onClose={() => {
193
+ onDrawerClose?.()
194
+ }}
195
+ bind:schema={oneOf[idx]}
196
+ hiddenArgs={[
197
+ oneOf?.find((o) => Object.keys(o.properties ?? {}).includes('kind'))
198
+ ? 'kind'
199
+ : 'label'
200
+ ]}
201
+ />
285
202
  </div>
286
- {/snippet}
287
- </Tabs>
203
+ {/if}
204
+ </Label>
205
+ <div class="py-2"></div>
206
+ {:else if type === 'object' && format?.startsWith('resource-') && format !== 'resource-s3_object' && !isDyn}
207
+ <ResourceNarrowing bind:format />
208
+ {:else if type === 'object' && !format?.startsWith('resource-') && !isDyn}
209
+ <div class="py-2">
210
+ <Label label="Object properties">
211
+ <ToggleButtonGroup
212
+ bind:selected={customObjectSelected}
213
+ class="my-2"
214
+ on:selected={(e) => {
215
+ if (e.detail === 'editor') {
216
+ format = undefined
217
+ } else {
218
+ properties = undefined
219
+ order = undefined
220
+ requiredProperty = undefined
221
+ }
222
+ }}
223
+ >
224
+ {#snippet children({ item })}
225
+ <ToggleButton value="editor" label="Custom" {item} />
226
+ <ToggleButton
227
+ value="json-schema-resource"
228
+ label="Template"
229
+ {item}
230
+ tooltip="Select a JSON schema resource to specify the object's properties"
231
+ showTooltipIcon
232
+ />
233
+ {/snippet}
234
+ </ToggleButtonGroup>
235
+ {#if customObjectSelected === 'editor'}
236
+ <EditableSchemaDrawer
237
+ bind:schema={
238
+ () => {
239
+ return {
240
+ properties: properties,
241
+ order: order,
242
+ required: requiredProperty
243
+ }
244
+ },
245
+ (v) => {
246
+ properties = v.properties
247
+ order = v.order
248
+ requiredProperty = v.required
249
+ }
250
+ }
251
+ />
252
+ {:else if customObjectSelected === 'json-schema-resource'}
253
+ {#if format == undefined}
254
+ <div class="text-xs text-tertiary my-1">
255
+ Select a <code>json_schema</code> resource as a reusable JSON schema template
256
+ </div>
257
+ {/if}
258
+ <ResourcePicker
259
+ resourceType="json_schema"
260
+ bind:value={
261
+ () => {
262
+ if (format?.startsWith('jsonschema-')) {
263
+ return format.substring('jsonschema-'.length)
264
+ }
265
+ return undefined
266
+ },
267
+ (v) => {
268
+ if (v) {
269
+ format = 'jsonschema-' + v
270
+ } else {
271
+ format = undefined
272
+ }
273
+ }
274
+ }
275
+ />
276
+ {/if}
277
+ </Label>
278
+ </div>
288
279
  {/if}
289
280
 
290
- {#if !(type === 'object' && oneOf && oneOf.length >= 2) && !(type == 'object' && initialObjectSelected == 'custom-object') && !isDynSelect}
281
+ {#if !(type === 'object' && oneOf && oneOf.length >= 2) && !(type == 'object' && initialObjectSelected == 'custom-object') && !isDyn}
291
282
  <Label label="Default">
292
283
  <ArgInput
293
284
  noDefaultOnSelectFirst
@@ -150,7 +150,7 @@ $effect(() => {
150
150
  bind:itemsType
151
151
  canEditResourceType={isFlowInput || isAppInput}
152
152
  />
153
- {:else if type == 'string' || ['number', 'integer', 'object'].includes(type ?? '')}
153
+ {:else if type == 'string' || ['number', 'integer'].includes(type ?? '')}
154
154
  <div>
155
155
  <Label label="Field settings">
156
156
  <div>
@@ -177,44 +177,42 @@ $effect(() => {
177
177
  bind:currency={extra['currency']}
178
178
  bind:currencyLocale={extra['currencyLocale']}
179
179
  />
180
- {:else if type == 'object' && oneOf && oneOf.length >= 2 && !isFlowInput && !isAppInput}
181
- <ToggleButtonGroup bind:selected={oneOfSelected} class="mb-2">
182
- {#snippet children({ item })}
183
- {#each oneOf as obj}
184
- <ToggleButton value={obj.title ?? ''} label={obj.title} {item} />
185
- {/each}
186
- {/snippet}
187
- </ToggleButtonGroup>
188
- {#if oneOfSelected && oneOfSchemas}
189
- {@const idx = oneOf.findIndex((obj) => obj.title === oneOfSelected)}
190
- <div class="border">
191
- <EditableSchemaForm
192
- on:change
193
- noPreview
194
- bind:schema={oneOfSchemas[idx]}
195
- uiOnly
196
- jsonEnabled={false}
197
- editTab="inputEditor"
198
- />
199
- </div>
200
- {/if}
201
- {:else if type == 'object' && !format?.startsWith('resource-') && !isFlowInput && !isAppInput}
202
- <div class="border">
203
- <EditableSchemaForm
204
- on:change
205
- noPreview
206
- bind:schema
207
- uiOnly
208
- jsonEnabled={false}
209
- editTab="inputEditor"
210
- />
211
- </div>
212
- {:else}
213
- <div class="text-tertiary text-xs">No settings available for this field type</div>
214
180
  {/if}
215
181
  </div>
216
182
  </Label>
217
183
  </div>
184
+ {:else if type == 'object' && oneOf && oneOf.length >= 2 && !isFlowInput && !isAppInput}
185
+ <ToggleButtonGroup bind:selected={oneOfSelected} class="mb-2">
186
+ {#snippet children({ item })}
187
+ {#each oneOf as obj}
188
+ <ToggleButton value={obj.title ?? ''} label={obj.title} {item} />
189
+ {/each}
190
+ {/snippet}
191
+ </ToggleButtonGroup>
192
+ {#if oneOfSelected && oneOfSchemas}
193
+ {@const idx = oneOf.findIndex((obj) => obj.title === oneOfSelected)}
194
+ <div class="border">
195
+ <EditableSchemaForm
196
+ on:change
197
+ noPreview
198
+ bind:schema={oneOfSchemas[idx]}
199
+ uiOnly
200
+ jsonEnabled={false}
201
+ editTab="inputEditor"
202
+ />
203
+ </div>
204
+ {/if}
205
+ {:else if type == 'object' && !format?.startsWith('resource-') && !isFlowInput && !isAppInput}
206
+ <div class="border">
207
+ <EditableSchemaForm
208
+ on:change
209
+ noPreview
210
+ bind:schema
211
+ uiOnly
212
+ jsonEnabled={false}
213
+ editTab="inputEditor"
214
+ />
215
+ </div>
218
216
  {/if}
219
217
 
220
218
  {@render children?.()}
@@ -1,6 +1,6 @@
1
1
  import type { Schema } from '../../common';
2
2
  import type { SchemaDiff } from './schemaUtils.svelte';
3
- import { type DynamicSelect } from '../../utils';
3
+ import { type DynamicInput } from '../../utils';
4
4
  interface Props {
5
5
  schema: Schema;
6
6
  args?: Record<string, any>;
@@ -19,7 +19,7 @@ interface Props {
19
19
  nestedClasses?: string;
20
20
  isValid?: boolean;
21
21
  noVariablePicker?: boolean;
22
- helperScript?: DynamicSelect.HelperScript;
22
+ helperScript?: DynamicInput.HelperScript;
23
23
  className?: string;
24
24
  dndType?: string;
25
25
  }
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">import { onDestroy, onMount, tick, untrack } from 'svelte';
2
2
  import { AppService, FlowService, RawAppService, ScriptService } from '../../gen';
3
3
  import { clickOutside, isMac, scroll_into_view_if_needed_polyfill } from '../../utils';
4
- import { AlertTriangle, BoxesIcon, CalendarIcon, Code2Icon, Database, DollarSignIcon, HomeIcon, LayoutDashboardIcon, PlayIcon, Route, Search, SearchCode, Unplug, WandSparkles } from 'lucide-svelte';
4
+ import { AlertTriangle, BoxesIcon, CalendarIcon, Code2Icon, Database, DollarSignIcon, HomeIcon, LayoutDashboardIcon, MailIcon, PlayIcon, Route, Search, SearchCode, Unplug, WandSparkles } from 'lucide-svelte';
5
5
  import Portal from '../Portal.svelte';
6
6
  import { twMerge } from 'tailwind-merge';
7
7
  import ContentSearchInner from '../ContentSearchInner.svelte';
@@ -101,6 +101,13 @@ let hiddenMenuItems = [
101
101
  action: (newtab = false) => gotoPage('/mqtt_triggers', newtab),
102
102
  icon: MqttIcon,
103
103
  disabled: $userStore?.operator
104
+ },
105
+ {
106
+ search_id: 'nav:email_triggers',
107
+ label: 'Go to Email triggers',
108
+ action: (newtab = false) => gotoPage('/email_triggers', newtab),
109
+ icon: MailIcon,
110
+ disabled: $userStore?.operator
104
111
  }
105
112
  ];
106
113
  let defaultMenuItems = [
@@ -1,15 +1,25 @@
1
- declare class __sveltets_Render<Item extends {
1
+ declare function $$render<Item extends {
2
2
  label?: string;
3
3
  value: any;
4
- }> {
5
- props(): {
6
- items?: Item[] | undefined;
4
+ }>(): {
5
+ props: {
6
+ items?: Item[];
7
7
  allowClear?: boolean;
8
8
  onRemove: (item: Item) => void;
9
- onReorder?: ((oldIndex: number, newIndex: number) => void) | undefined;
9
+ onReorder?: (oldIndex: number, newIndex: number) => void;
10
10
  };
11
- events(): {};
12
- slots(): {};
11
+ exports: {};
12
+ bindings: "";
13
+ slots: {};
14
+ events: {};
15
+ };
16
+ declare class __sveltets_Render<Item extends {
17
+ label?: string;
18
+ value: any;
19
+ }> {
20
+ props(): ReturnType<typeof $$render<Item>>['props'];
21
+ events(): ReturnType<typeof $$render<Item>>['events'];
22
+ slots(): ReturnType<typeof $$render<Item>>['slots'];
13
23
  bindings(): "";
14
24
  exports(): {};
15
25
  }
@@ -1,9 +1,9 @@
1
- declare class __sveltets_Render<Item extends {
1
+ declare function $$render<Item extends {
2
2
  label?: string;
3
3
  value: any;
4
- }> {
5
- props(): {
6
- items?: Item[] | undefined;
4
+ }>(): {
5
+ props: {
6
+ items?: Item[];
7
7
  value: Item["value"][];
8
8
  placeholder?: string;
9
9
  class?: string;
@@ -20,14 +20,24 @@ declare class __sveltets_Render<Item extends {
20
20
  selectedUlClass?: string;
21
21
  placeholderClass?: string;
22
22
  allowClear?: boolean;
23
- groupBy?: ((item: Item) => string) | undefined;
24
- sortBy?: ((a: Item, b: Item) => number) | undefined;
25
- onOpen?: (() => void) | undefined;
26
- onClear?: (() => void) | undefined;
27
- onCreateItem?: ((value: string) => void) | undefined;
23
+ groupBy?: (item: Item) => string;
24
+ sortBy?: (a: Item, b: Item) => number;
25
+ onOpen?: () => void;
26
+ onClear?: () => void;
27
+ onCreateItem?: (value: string) => void;
28
28
  };
29
- events(): {};
30
- slots(): {};
29
+ exports: {};
30
+ bindings: "value";
31
+ slots: {};
32
+ events: {};
33
+ };
34
+ declare class __sveltets_Render<Item extends {
35
+ label?: string;
36
+ value: any;
37
+ }> {
38
+ props(): ReturnType<typeof $$render<Item>>['props'];
39
+ events(): ReturnType<typeof $$render<Item>>['events'];
40
+ slots(): ReturnType<typeof $$render<Item>>['slots'];
31
41
  bindings(): "value";
32
42
  exports(): {};
33
43
  }
@@ -6,7 +6,7 @@ import { untrack } from 'svelte';
6
6
  import { getLabel, processItems } from './utils.svelte';
7
7
  import SelectDropdown from './SelectDropdown.svelte';
8
8
  import { deepEqual } from 'fast-equals';
9
- let { items, placeholder = 'Please select', value = $bindable(), filterText = $bindable(''), class: className = '', clearable = false, listAutoWidth = true, disabled: _disabled = false, containerStyle = '', inputClass = '', disablePortal = false, loading = false, autofocus, RightIcon, createText, noItemsMsg, open = $bindable(false), groupBy, sortBy, onFocus, onBlur, onClear, onCreateItem, startSnippet } = $props();
9
+ let { items, placeholder = 'Please select', value = $bindable(), filterText = $bindable(''), class: className = '', clearable = false, listAutoWidth = true, disabled: _disabled = false, containerStyle = '', inputClass = '', disablePortal = false, loading = false, autofocus, RightIcon, createText, noItemsMsg, open = $bindable(false), id, groupBy, sortBy, onFocus, onBlur, onClear, onCreateItem, startSnippet } = $props();
10
10
  let disabled = $derived(_disabled || (loading && !value));
11
11
  let inputEl = $state();
12
12
  let processedItems = $derived.by(() => {
@@ -81,6 +81,7 @@ function clearValue() {
81
81
  autocomplete="off"
82
82
  onpointerdown={() => (open = true)}
83
83
  bind:this={inputEl}
84
+ {id}
84
85
  />
85
86
  <SelectDropdown
86
87
  {disablePortal}