windmill-components 1.339.2 → 1.352.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 (231) hide show
  1. package/package/assets/app.css +0 -12
  2. package/package/ata/index.js +1 -0
  3. package/package/autosize.js +1 -1
  4. package/package/common.d.ts +6 -2
  5. package/package/common.js +2 -1
  6. package/package/components/AppConnectDrawer.svelte +1 -1
  7. package/package/components/AppConnectInner.svelte +9 -15
  8. package/package/components/ArgEnum.svelte +4 -1
  9. package/package/components/ArgEnum.svelte.d.ts +3 -1
  10. package/package/components/ArgInput.svelte +184 -141
  11. package/package/components/ArgInput.svelte.d.ts +7 -7
  12. package/package/components/ArrayTypeNarrowing.svelte +29 -27
  13. package/package/components/CenteredPage.svelte +2 -2
  14. package/package/components/DefaultTagsInner.svelte +1 -1
  15. package/package/components/Dev.svelte +2 -1
  16. package/package/components/DiffDrawer.svelte +1 -2
  17. package/package/components/DisplayResult.svelte +293 -233
  18. package/package/components/DurationMs.svelte +11 -3
  19. package/package/components/DurationMs.svelte.d.ts +2 -0
  20. package/package/components/EditableSchemaForm.svelte +447 -103
  21. package/package/components/EditableSchemaForm.svelte.d.ts +16 -6
  22. package/package/components/Editor.svelte +3 -1
  23. package/package/components/EditorBar.svelte +2 -2
  24. package/package/components/FlowBuilder.svelte +14 -6
  25. package/package/components/FlowGraphViewer.svelte +1 -1
  26. package/package/components/FlowGraphViewerStep.svelte +37 -9
  27. package/package/components/FlowGraphViewerStep.svelte.d.ts +2 -7
  28. package/package/components/FlowJobResult.svelte +1 -3
  29. package/package/components/FlowMetadata.svelte +1 -1
  30. package/package/components/FlowPreviewContent.svelte +5 -3
  31. package/package/components/FlowStatusViewer.svelte +4 -0
  32. package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
  33. package/package/components/FlowStatusViewerInner.svelte +50 -17
  34. package/package/components/FlowStatusViewerInner.svelte.d.ts +3 -0
  35. package/package/components/FlowTimeline.svelte +13 -0
  36. package/package/components/FlowTimeline.svelte.d.ts +2 -0
  37. package/package/components/FlowViewer.svelte +0 -5
  38. package/package/components/FolderEditor.svelte +25 -0
  39. package/package/components/FolderEditor.svelte.d.ts +2 -0
  40. package/package/components/GroupEditor.svelte +36 -91
  41. package/package/components/GroupInfo.svelte +1 -1
  42. package/package/components/InputTransformForm.svelte +16 -1
  43. package/package/components/InputTransformForm.svelte.d.ts +2 -0
  44. package/package/components/InputTransformSchemaForm.svelte +6 -0
  45. package/package/components/InputTransformSchemaForm.svelte.d.ts +2 -0
  46. package/package/components/InstanceSettings.svelte +36 -3
  47. package/package/components/InstanceSettings.svelte.d.ts +2 -0
  48. package/package/components/JobStatus.svelte +2 -2
  49. package/package/components/LightweightArgInput.svelte +66 -14
  50. package/package/components/LightweightArgInput.svelte.d.ts +3 -2
  51. package/package/components/LightweightSchemaForm.svelte +24 -15
  52. package/package/components/ModulePreviewForm.svelte +1 -0
  53. package/package/components/NumberTypeNarrowing.svelte +71 -44
  54. package/package/components/ObjectResourceInput.svelte +2 -0
  55. package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
  56. package/package/components/ObjectTypeNarrowing.svelte +0 -1
  57. package/package/components/ParqetCsvTableRenderer.svelte +181 -0
  58. package/package/components/ParqetCsvTableRenderer.svelte.d.ts +21 -0
  59. package/package/components/Path.svelte +2 -2
  60. package/package/components/PersistentScriptDrawer.svelte +6 -3
  61. package/package/components/Range.svelte +88 -286
  62. package/package/components/Range.svelte.d.ts +9 -23
  63. package/package/components/ResourceEditor.svelte +138 -141
  64. package/package/components/ResourceEditor.svelte.d.ts +9 -2
  65. package/package/components/ResourceEditorDrawer.svelte +45 -0
  66. package/package/components/ResourceEditorDrawer.svelte.d.ts +21 -0
  67. package/package/components/ResourcePicker.svelte +5 -2
  68. package/package/components/ResourceTypePicker.svelte +88 -36
  69. package/package/components/RunChart.svelte +55 -5
  70. package/package/components/RunChart.svelte.d.ts +1 -0
  71. package/package/components/RunForm.svelte +1 -1
  72. package/package/components/S3FilePicker.svelte +20 -8
  73. package/package/components/S3FilePicker.svelte.d.ts +2 -0
  74. package/package/components/ScheduleEditorInner.svelte +40 -37
  75. package/package/components/SchemaForm.svelte +192 -103
  76. package/package/components/SchemaForm.svelte.d.ts +16 -2
  77. package/package/components/ScriptBuilder.svelte +13 -8
  78. package/package/components/ScriptSchedules.svelte +11 -8
  79. package/package/components/ScriptSchema.svelte +3 -21
  80. package/package/components/ScriptVersionHistory.svelte +1 -1
  81. package/package/components/StringTypeNarrowing.svelte +217 -174
  82. package/package/components/StringTypeNarrowing.svelte.d.ts +5 -1
  83. package/package/components/Toggle.svelte +6 -3
  84. package/package/components/Toggle.svelte.d.ts +1 -0
  85. package/package/components/UserSettings.svelte +24 -1
  86. package/package/components/WorkspaceGroup.svelte +11 -13
  87. package/package/components/apps/components/buttons/AppButton.svelte +2 -0
  88. package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
  89. package/package/components/apps/components/display/AppFlowStatusComponent.svelte +13 -70
  90. package/package/components/apps/components/display/AppFlowStatusComponent.svelte.d.ts +1 -9
  91. package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +21 -8
  92. package/package/components/apps/components/display/AppJobIdFlowStatus.svelte.d.ts +1 -3
  93. package/package/components/apps/components/display/AppJobIdLogComponent.svelte +19 -7
  94. package/package/components/apps/components/display/AppJobIdLogComponent.svelte.d.ts +1 -3
  95. package/package/components/apps/components/display/AppLogsComponent.svelte +13 -70
  96. package/package/components/apps/components/display/AppLogsComponent.svelte.d.ts +1 -9
  97. package/package/components/apps/components/display/charts/AppAgCharts.svelte +25 -15
  98. package/package/components/apps/components/display/table/AppAggridTableActions.svelte +2 -0
  99. package/package/components/apps/components/display/table/SyncColumnDefs.svelte +1 -1
  100. package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -1
  101. package/package/components/apps/components/helpers/RunnableComponent.svelte +18 -8
  102. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -0
  103. package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -0
  104. package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -0
  105. package/package/components/apps/components/helpers/eval.js +1 -36
  106. package/package/components/apps/components/inputs/AppFileInput.svelte +3 -1
  107. package/package/components/apps/components/inputs/AppFileInput.svelte.d.ts +1 -0
  108. package/package/components/apps/components/inputs/AppS3FileInput.svelte +3 -1
  109. package/package/components/apps/components/inputs/AppS3FileInput.svelte.d.ts +1 -0
  110. package/package/components/apps/components/layout/AppConditionalWrapper.svelte +3 -1
  111. package/package/components/apps/components/layout/AppConditionalWrapper.svelte.d.ts +1 -0
  112. package/package/components/apps/components/layout/AppStepper.svelte +5 -1
  113. package/package/components/apps/components/layout/AppStepper.svelte.d.ts +2 -0
  114. package/package/components/apps/components/layout/AppTabs.svelte +3 -1
  115. package/package/components/apps/components/layout/AppTabs.svelte.d.ts +1 -0
  116. package/package/components/apps/editor/AppEditorHeader.svelte +6 -7
  117. package/package/components/apps/editor/SettingsPanel.svelte +13 -3
  118. package/package/components/apps/editor/component/Component.svelte +8 -16
  119. package/package/components/apps/editor/component/components.d.ts +11 -2
  120. package/package/components/apps/editor/component/components.js +2 -1
  121. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +1 -1
  122. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +5 -34
  123. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +3 -41
  124. package/package/components/apps/editor/settingsPanel/EventHandlerItem.svelte +33 -0
  125. package/package/components/apps/editor/settingsPanel/EventHandlerItem.svelte.d.ts +19 -0
  126. package/package/components/apps/editor/settingsPanel/EventHandlers.svelte +103 -0
  127. package/package/components/apps/editor/settingsPanel/EventHandlers.svelte.d.ts +18 -0
  128. package/package/components/apps/editor/settingsPanel/GridCondition.svelte +21 -45
  129. package/package/components/apps/editor/settingsPanel/GridTab.svelte +3 -23
  130. package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +5 -1
  131. package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +0 -2
  132. package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +0 -1
  133. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +7 -1
  134. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +7 -14
  135. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +0 -1
  136. package/package/components/common/button/ButtonDropdown.svelte +1 -0
  137. package/package/components/common/drawer/Disposable.svelte +3 -2
  138. package/package/components/common/drawer/Disposable.svelte.d.ts +1 -0
  139. package/package/components/common/drawer/Drawer.svelte +12 -2
  140. package/package/components/common/drawer/Drawer.svelte.d.ts +1 -0
  141. package/package/components/common/fileDownload/FileDownload.svelte +4 -2
  142. package/package/components/common/fileUpload/FileUpload.svelte +4 -3
  143. package/package/components/common/modal/Modal.svelte +4 -1
  144. package/package/components/common/modal/Modal.svelte.d.ts +1 -0
  145. package/package/components/common/popup/Popup.svelte +1 -1
  146. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +4 -1
  147. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -0
  148. package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte +79 -0
  149. package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte.d.ts +18 -0
  150. package/package/components/flows/content/FlowEditorPanel.svelte +16 -2
  151. package/package/components/flows/content/FlowInput.svelte +63 -53
  152. package/package/components/flows/content/FlowModuleComponent.svelte +26 -3
  153. package/package/components/flows/content/FlowModuleScript.svelte +40 -1
  154. package/package/components/flows/content/FlowModuleScript.svelte.d.ts +2 -0
  155. package/package/components/flows/content/FlowModuleSuspend.svelte +99 -59
  156. package/package/components/flows/content/FlowModuleWrapper.svelte +16 -1
  157. package/package/components/flows/content/FlowSchedules.svelte +11 -8
  158. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -4
  159. package/package/components/flows/flowStateUtils.js +4 -1
  160. package/package/components/flows/map/FlowModuleSchemaItem.svelte +16 -1
  161. package/package/components/flows/map/FlowModuleSchemaMap.svelte +6 -1
  162. package/package/components/flows/types.d.ts +4 -0
  163. package/package/components/flows/utils.d.ts +5 -1
  164. package/package/components/flows/utils.js +36 -0
  165. package/package/components/graph/FlowGraph.svelte +5 -2
  166. package/package/components/graph/FlowGraph.svelte.d.ts +2 -0
  167. package/package/components/graph/svelvet/container/models/index.d.ts +0 -5
  168. package/package/components/graph/svelvet/container/models/index.js +1 -1
  169. package/package/components/graph/svelvet/container/views/Svelvet.svelte +2 -5
  170. package/package/components/graph/util.d.ts +1 -37
  171. package/package/components/graph/util.js +0 -34
  172. package/package/components/instanceSettings.js +2 -1
  173. package/package/components/jobs/JobPreview.svelte +1 -1
  174. package/package/components/multiselect/MultiSelect.svelte +4 -3
  175. package/package/components/multiselect/MultiSelect.svelte.d.ts +1 -0
  176. package/package/components/multiselect/MultiSelectWrapper.svelte +89 -0
  177. package/package/components/multiselect/MultiSelectWrapper.svelte.d.ts +20 -0
  178. package/package/components/propertyPicker/ObjectViewer.svelte +6 -2
  179. package/package/components/runs/JobPreview.svelte +5 -1
  180. package/package/components/runs/RunRow.svelte +22 -3
  181. package/package/components/runs/RunRow.svelte.d.ts +2 -1
  182. package/package/components/runs/RunsTable.svelte +22 -9
  183. package/package/components/runs/RunsTable.svelte.d.ts +2 -1
  184. package/package/components/schema/AddProperty.svelte +149 -0
  185. package/package/components/schema/AddProperty.svelte.d.ts +23 -0
  186. package/package/components/schema/AddPropertyForm.svelte +33 -0
  187. package/package/components/schema/AddPropertyForm.svelte.d.ts +16 -0
  188. package/package/components/schema/EditableSchemaDrawer.svelte +198 -0
  189. package/package/components/schema/EditableSchemaDrawer.svelte.d.ts +21 -0
  190. package/package/components/schema/EditableSchemaWrapper.svelte +31 -0
  191. package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +22 -0
  192. package/package/components/schema/FlowPropertyEditor.svelte +393 -0
  193. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +47 -0
  194. package/package/components/schema/PropertyEditor.svelte +185 -0
  195. package/package/components/schema/PropertyEditor.svelte.d.ts +46 -0
  196. package/package/components/schema/SchemaFormDND.svelte +75 -0
  197. package/package/components/schema/SchemaFormDND.svelte.d.ts +28 -0
  198. package/package/components/table/AutoDataTable.svelte +90 -104
  199. package/package/components/table/Cell.svelte +4 -1
  200. package/package/components/table/Cell.svelte.d.ts +1 -0
  201. package/package/components/table/DownloadCsv.svelte +30 -0
  202. package/package/components/table/DownloadCsv.svelte.d.ts +17 -0
  203. package/package/components/table/tableUtils.d.ts +8 -0
  204. package/package/components/table/tableUtils.js +37 -0
  205. package/package/consts.js +3 -1
  206. package/package/deno_fetch.d.ts.txt +6 -0
  207. package/package/gen/core/OpenAPI.js +1 -1
  208. package/package/gen/schemas.gen.d.ts +76 -0
  209. package/package/gen/schemas.gen.js +76 -0
  210. package/package/gen/services.gen.d.ts +100 -5
  211. package/package/gen/services.gen.js +216 -16
  212. package/package/gen/types.gen.d.ts +378 -5
  213. package/package/inferArgSig.d.ts +10 -0
  214. package/package/inferArgSig.js +59 -2
  215. package/package/scripts.d.ts +2 -0
  216. package/package/scripts.js +6 -3
  217. package/package/utils.d.ts +4 -3
  218. package/package/utils.js +9 -4
  219. package/package/workspace_settings.d.ts +15 -0
  220. package/package/workspace_settings.js +81 -0
  221. package/package.json +16 -7
  222. package/package/components/ParqetTableRenderer.svelte +0 -117
  223. package/package/components/ParqetTableRenderer.svelte.d.ts +0 -18
  224. package/package/components/PropertyRow.svelte +0 -88
  225. package/package/components/PropertyRow.svelte.d.ts +0 -23
  226. package/package/components/SchemaEditor.svelte +0 -346
  227. package/package/components/SchemaEditor.svelte.d.ts +0 -25
  228. package/package/components/SchemaModal.svelte +0 -443
  229. package/package/components/SchemaModal.svelte.d.ts +0 -33
  230. package/package/components/apps/editor/settingsPanel/Recompute.svelte +0 -55
  231. package/package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +0 -20
@@ -1,12 +1,13 @@
1
1
  <script>import { computeKind } from '../utils';
2
2
  import Label from './Label.svelte';
3
- import RadioButton from './RadioButton.svelte';
4
3
  import ResourceTypePicker from './ResourceTypePicker.svelte';
5
4
  import Toggle from './Toggle.svelte';
6
5
  import Tooltip from './Tooltip.svelte';
7
6
  import { Button } from './common';
8
7
  import Alert from './common/alert/Alert.svelte';
9
8
  import ClearableInput from './common/clearableInput/ClearableInput.svelte';
9
+ import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
10
+ import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
10
11
  import RegexGen from './copilot/RegexGen.svelte';
11
12
  export let pattern;
12
13
  export let enum_;
@@ -19,7 +20,11 @@ export let disableVariablePicker = false;
19
20
  export let password = false;
20
21
  export let noExtra = false;
21
22
  export let dateFormat;
23
+ export let enumLabels = {};
24
+ export let overrideAllowKindChange = true;
25
+ export let originalType = undefined;
22
26
  let kind = computeKind(enum_, contentEncoding, pattern, format);
27
+ const allowKindChange = overrideAllowKindChange || originalType === 'string';
23
28
  let patternStr = pattern ?? '';
24
29
  let resource;
25
30
  const FORMATS = [
@@ -47,6 +52,9 @@ $: {
47
52
  }
48
53
  }
49
54
  function add() {
55
+ if (enumLabels === undefined) {
56
+ enumLabels = {};
57
+ }
50
58
  let choice = `choice ${enum_?.length ? enum_?.length + 1 : 1}`;
51
59
  enum_ = enum_ ? enum_.concat(choice) : [choice];
52
60
  }
@@ -55,204 +63,239 @@ function remove(item) {
55
63
  if (enum_.length == 0) {
56
64
  enum_ = undefined;
57
65
  }
66
+ if (enumLabels !== undefined) {
67
+ delete enumLabels[item];
68
+ }
58
69
  }
59
70
  const presetOptions = [
60
71
  { label: 'ISO Format', format: 'yyyy-MM-dd' },
61
72
  { label: 'US Format', format: 'MM/dd/yyyy' },
62
73
  { label: 'EU Format', format: 'dd/MM/yyyy' }
63
74
  ];
75
+ function onEnumKeyChange(oldKey, newKey) {
76
+ if (oldKey !== newKey) {
77
+ enumLabels[newKey] = enumLabels[oldKey];
78
+ delete enumLabels[oldKey];
79
+ }
80
+ }
64
81
  </script>
65
82
 
66
- <RadioButton
67
- label="Kind"
68
- options={[
69
- ['None', 'none'],
70
- ['File (base64)', 'base64'],
71
- ['Enum', 'enum'],
72
- ['Format', 'format'],
73
- ['Pattern', 'pattern']
74
- ]}
75
- bind:value={kind}
76
- on:change={(e) => {
77
- if (e.detail != 'enum') {
78
- enum_ = undefined
79
- }
80
- if (e.detail == 'none') {
81
- pattern = undefined
82
- format = undefined
83
- contentEncoding = undefined
84
- customErrorMessage = undefined
85
- minRows = undefined
86
- disableCreate = undefined
87
- disableVariablePicker = undefined
88
- }
89
- }}
90
- />
91
- <div class="my-2" />
92
-
93
- {#if kind == 'pattern'}
94
- <label for="input" class="mb-2 text-secondary text-xs">
95
- Pattern (Regex)
96
- <div class="flex flex-row gap-1">
83
+ <div class="flex flex-col gap-2">
84
+ {#if allowKindChange}
85
+ <ToggleButtonGroup
86
+ bind:selected={kind}
87
+ on:selected={(e) => {
88
+ if (e.detail != 'enum') {
89
+ enum_ = undefined
90
+ }
91
+ if (e.detail == 'none') {
92
+ pattern = undefined
93
+ format = undefined
94
+ contentEncoding = undefined
95
+ customErrorMessage = undefined
96
+ minRows = undefined
97
+ disableCreate = undefined
98
+ disableVariablePicker = undefined
99
+ }
100
+ }}
101
+ >
102
+ {#each [['None', 'none'], ['File', 'base64', 'Encoded as Base 64'], ['Enum', 'enum'], ['Format', 'format'], ['Pattern', 'pattern']] as x}
103
+ <ToggleButton value={x[1]} label={x[0]} tooltip={x[2]} showTooltipIcon={Boolean(x[2])} />
104
+ {/each}
105
+ </ToggleButtonGroup>
106
+ {/if}
107
+ {#if kind == 'pattern'}
108
+ <Label label="Pattern (Regex)">
109
+ <svelte:fragment slot="header">
110
+ <Tooltip light>
111
+ Setting a pattern will allow you to specify a regular expression that the input should
112
+ adhere to. You can use the regex generator to help you create a pattern.
113
+ </Tooltip>
114
+ </svelte:fragment>
115
+ <div class="flex flex-row gap-1">
116
+ <ClearableInput
117
+ id="input"
118
+ type="text"
119
+ placeholder="^(\\([0-9]{3}\\))?[0-9]{3}-[0-9]{4}$"
120
+ bind:value={patternStr}
121
+ />
122
+ <RegexGen
123
+ on:gen={(e) => {
124
+ const { res, prompt } = e.detail
125
+ patternStr = res
126
+ customErrorMessage = 'does not match: ' + prompt
127
+ }}
128
+ />
129
+ </div>
130
+ </Label>
131
+ <Label label="Custom error message" class="w-full">
132
+ <svelte:fragment slot="header">
133
+ <Tooltip light>
134
+ Setting a custom error message will allow you to specify a message that will be shown when
135
+ the input does not match the pattern.
136
+ </Tooltip>
137
+ </svelte:fragment>
138
+ <svelte:fragment slot="action">
139
+ <Toggle
140
+ size="xs"
141
+ options={{ right: 'Enable' }}
142
+ checked={customErrorMessage != undefined && customErrorMessage != ''}
143
+ on:change={(e) => {
144
+ if (e.detail) {
145
+ customErrorMessage = 'Custom error message'
146
+ } else {
147
+ customErrorMessage = undefined
148
+ }
149
+ }}
150
+ />
151
+ </svelte:fragment>
97
152
  <input
98
- id="input"
99
153
  type="text"
100
- placeholder="^(\\([0-9]{3}\\))?[0-9]{3}-[0-9]{4}$"
101
- bind:value={patternStr}
102
- class="text-sm"
103
- />
104
- <RegexGen
105
- on:gen={(e) => {
106
- const { res, prompt } = e.detail
107
- patternStr = res
108
- customErrorMessage = 'does not match: ' + prompt
109
- }}
154
+ bind:value={customErrorMessage}
155
+ disabled={customErrorMessage == undefined || customErrorMessage == ''}
110
156
  />
111
- <Button
112
- variant="border"
113
- color="blue"
114
- size="sm"
115
- on:click={() => {
116
- patternStr = ''
117
- }}
118
- >
119
- clear
120
- </Button>
121
- </div>
122
- <div class="mt-2 flex gap-2">
157
+ </Label>
158
+ {:else if kind == 'enum'}
159
+ <Label label="Enums">
160
+ <svelte:fragment slot="header">
161
+ <Tooltip light>
162
+ Setting enums will allow you to specify a list of values that the input can take. If you
163
+ want to allow custom values, you can disable the option below.
164
+ </Tooltip>
165
+ </svelte:fragment>
166
+ <div class="flex flex-col gap-1">
167
+ {#each enum_ || [] as e}
168
+ <div class="flex flex-row w-full gap-2 pt-2">
169
+ <input
170
+ id="input"
171
+ type="text"
172
+ bind:value={e}
173
+ on:input={(event) => onEnumKeyChange(event?.currentTarget.value, e)}
174
+ />
175
+ {#if enumLabels !== undefined}
176
+ <input
177
+ id="input"
178
+ type="text"
179
+ bind:value={enumLabels[e]}
180
+ placeholder="Optional title..."
181
+ on:input={(event) => {
182
+ if (event?.currentTarget.value === '') {
183
+ delete enumLabels[e]
184
+ }
185
+ }}
186
+ />
187
+ {/if}
188
+
189
+ {#if allowKindChange}
190
+ <Button size="sm" on:click={() => remove(e)}>-</Button>
191
+ {/if}
192
+ </div>
193
+ {/each}
194
+ </div>
195
+ {#if allowKindChange}
196
+ <div class="flex flex-row my-1">
197
+ <Button color="light" size="sm" on:click={add}>+</Button>
198
+ </div>
199
+ {/if}
200
+ </Label>
201
+ {#if !noExtra}
123
202
  <Toggle
124
203
  size="xs"
125
- options={{ right: 'Custom error message' }}
126
- checked={customErrorMessage != undefined && customErrorMessage != ''}
204
+ options={{ right: 'Disallow creating custom values' }}
205
+ checked={disableCreate != undefined && disableCreate}
127
206
  on:change={(e) => {
128
207
  if (e.detail) {
129
- customErrorMessage = 'Custom error message'
208
+ disableCreate = true
130
209
  } else {
131
- customErrorMessage = undefined
210
+ disableCreate = undefined
132
211
  }
133
212
  }}
134
- >Custom error message
135
- </Toggle>
136
- <input type="text" bind:value={customErrorMessage} />
137
- </div>
138
- </label>
139
- {:else if kind == 'enum'}
140
- <label for="input" class="mb-2 text-secondary text-xs">
141
- Enums
142
- <div class="flex flex-col gap-1">
143
- {#each enum_ || [] as e}
144
- <div class="flex flex-row max-w-md">
145
- <input id="input" type="text" bind:value={e} />
146
- <Button size="sm" btnClasses="ml-6" on:click={() => remove(e)}>-</Button>
147
- </div>
148
- {/each}
149
- </div>
150
- <div class="flex flex-row my-1">
151
- <Button color="light" size="sm" on:click={add}>+</Button>
152
- <Button
153
- color="light"
154
- variant="border"
155
- size="sm"
156
- btnClasses="ml-2"
157
- on:click={() => (enum_ = undefined)}
158
- >
159
- Clear
160
- </Button>
161
- </div>
162
- </label>
163
- {#if !noExtra}
213
+ />
214
+ {/if}
215
+ {:else if kind == 'resource'}
216
+ <div class="mt-1" />
217
+ <ResourceTypePicker bind:value={resource} />
218
+ {:else if kind == 'format'}
219
+ <Label label="Format">
220
+ <svelte:fragment slot="header">
221
+ <Tooltip light>
222
+ Setting the format will allow you to specify a format that the input should adhere to.
223
+ </Tooltip>
224
+ </svelte:fragment>
225
+ <select bind:value={format}>
226
+ <option value={undefined} />
227
+ {#each FORMATS as f}
228
+ <option value={f}>{f}</option>
229
+ {/each}
230
+ </select>
231
+ </Label>
232
+ {#if format == 'date'}
233
+ <div class="mt-1" />
234
+
235
+ <div class="grid grid-cols-3 gap-2"
236
+ >x
237
+ <Label label="Date format passed to script" class="col-span-2">
238
+ <svelte:fragment slot="header">
239
+ <Tooltip light>
240
+ Setting the date output format will allow you to specify how the date will be passed
241
+ to the script.
242
+ </Tooltip>
243
+ </svelte:fragment>
244
+ <ClearableInput type="text" bind:value={dateFormat} placeholder="yyyy-MM-dd" />
245
+ </Label>
246
+ <Label label="Presets">
247
+ <select
248
+ bind:value={dateFormat}
249
+ disabled={dateFormat ? !presetOptions.map((f) => f.format).includes(dateFormat) : false}
250
+ >
251
+ {#each presetOptions as f}
252
+ <option value={f.format}>{f.label}</option>
253
+ {/each}
254
+ </select>
255
+ </Label>
256
+ </div>
257
+ {/if}
258
+ {:else if kind == 'none'}
259
+ {#if !noExtra}
260
+ <Label label="Min textarea rows">
261
+ <input type="number" bind:value={minRows} />
262
+ </Label>
263
+ {/if}
264
+ {:else if kind === 'base64'}
265
+ <Alert
266
+ type="warning"
267
+ title="S3 Object recommended"
268
+ size="xs"
269
+ tooltip="Check out the documentation for more information:"
270
+ documentationLink="https://www.windmill.dev/docs/core_concepts/persistent_storage#large-data-files-s3-r2-minio-azure-blob"
271
+ >
272
+ For large files, we recommend using the S3 Object type instead of the base64 string type.
273
+ </Alert>
274
+ {/if}
275
+ {#if (kind == 'none' || kind == 'pattern' || kind == 'format') && !noExtra}
164
276
  <Toggle
165
- size="sm"
166
- options={{ right: 'Disallow creating custom values' }}
167
- checked={disableCreate != undefined && disableCreate}
277
+ size="xs"
278
+ options={{ right: 'Disable variable picker' }}
279
+ checked={disableVariablePicker != undefined && disableVariablePicker}
168
280
  on:change={(e) => {
169
281
  if (e.detail) {
170
- disableCreate = true
282
+ disableVariablePicker = true
171
283
  } else {
172
- disableCreate = undefined
284
+ disableVariablePicker = undefined
173
285
  }
174
286
  }}
287
+ disabled={['email', 'yaml', 'sql', 'date-time', 'date'].includes(format ?? '')}
175
288
  />
176
289
  {/if}
177
- {:else if kind == 'resource'}
178
- <div class="mt-1" />
179
- <ResourceTypePicker bind:value={resource} />
180
- {:else if kind == 'format'}
181
- <select class="mt-1" bind:value={format}>
182
- <option value={undefined} />
183
- {#each FORMATS as f}
184
- <option value={f}>{f}</option>
185
- {/each}
186
- </select>
187
-
188
- {#if format == 'date'}
189
- <div class="mt-1" />
190
290
 
191
- <div class="grid grid-cols-3 gap-2">
192
- <Label label="Date format passed to script" class="col-span-2">
193
- <svelte:fragment slot="header">
194
- <Tooltip light>
195
- Setting the date output format will allow you to specify how the date will be passed to
196
- the script.
197
- </Tooltip>
198
- </svelte:fragment>
199
- <ClearableInput type="text" bind:value={dateFormat} placeholder="yyyy-MM-dd" />
200
- </Label>
201
- <Label label="Presets">
202
- <select
203
- bind:value={dateFormat}
204
- disabled={dateFormat ? !presetOptions.map((f) => f.format).includes(dateFormat) : false}
205
- >
206
- {#each presetOptions as f}
207
- <option value={f.format}>{f.label}</option>
208
- {/each}
209
- </select>
210
- </Label>
211
- </div>
212
- {/if}
213
- {:else if kind == 'none'}
214
- {#if !noExtra}
215
- <label
216
- >min textarea rows:
217
- <input type="number" bind:value={minRows} />
218
- </label>
291
+ {#if kind == 'none' || kind == 'pattern'}
292
+ <Toggle
293
+ size="xs"
294
+ options={{ right: 'Is Password' }}
295
+ checked={password}
296
+ on:change={(e) => {
297
+ password = e.detail
298
+ }}
299
+ />
219
300
  {/if}
220
- {:else if kind === 'base64'}
221
- <Alert
222
- type="warning"
223
- title="S3 Object recommended"
224
- collapsible
225
- size="xs"
226
- documentationLink="https://www.windmill.dev/docs/core_concepts/persistent_storage/large_data_files"
227
- >
228
- For large files, we recommend using the S3 Object type instead of the base64 string type.
229
- </Alert>
230
- {/if}
231
- {#if (kind == 'none' || kind == 'pattern' || kind == 'format') && !noExtra}
232
- <div class="mt-1" />
233
- <Toggle
234
- size="xs"
235
- options={{ right: 'Disable variable picker' }}
236
- checked={disableVariablePicker != undefined && disableVariablePicker}
237
- on:change={(e) => {
238
- if (e.detail) {
239
- disableVariablePicker = true
240
- } else {
241
- disableVariablePicker = undefined
242
- }
243
- }}
244
- />
245
- {/if}
246
-
247
- {#if kind == 'none' || kind == 'pattern'}
248
- <div class="mt-1" />
249
- <Toggle
250
- size="xs"
251
- options={{ right: 'Is Password' }}
252
- checked={password}
253
- on:change={(e) => {
254
- password = e.detail
255
- }}
256
- />
257
- <div class="mb-4" />
258
- {/if}
301
+ </div>
@@ -1,8 +1,9 @@
1
1
  import { SvelteComponent } from "svelte";
2
+ import type { EnumType } from '../common';
2
3
  declare const __propDef: {
3
4
  props: {
4
5
  pattern: string | undefined;
5
- enum_: string[] | undefined;
6
+ enum_: EnumType;
6
7
  format: string | undefined;
7
8
  contentEncoding: 'base64' | 'binary' | undefined;
8
9
  customErrorMessage: string | undefined;
@@ -12,6 +13,9 @@ declare const __propDef: {
12
13
  password?: boolean | undefined;
13
14
  noExtra?: boolean | undefined;
14
15
  dateFormat: string | undefined;
16
+ enumLabels?: Record<string, string> | undefined;
17
+ overrideAllowKindChange?: boolean | undefined;
18
+ originalType?: string | undefined;
15
19
  };
16
20
  events: {
17
21
  [evt: string]: CustomEvent<any>;
@@ -9,6 +9,7 @@ export let textClass = '';
9
9
  export let textStyle = '';
10
10
  export let color = 'blue';
11
11
  export let id = (Math.random() + 1).toString(36).substring(10);
12
+ export let lightMode = false;
12
13
  export let size = 'sm';
13
14
  const dispatch = createEventDispatcher();
14
15
  const bothOptions = Boolean(options.left) && Boolean(options.right);
@@ -32,7 +33,7 @@ const bothOptions = Boolean(options.left) && Boolean(options.right);
32
33
  >
33
34
  {options?.left}
34
35
  {#if options?.leftTooltip}
35
- <Tooltip>{options?.leftTooltip}</Tooltip>
36
+ <Tooltip light={lightMode}>{options?.leftTooltip}</Tooltip>
36
37
  {/if}
37
38
  </span>
38
39
  {/if}
@@ -55,7 +56,9 @@ const bothOptions = Boolean(options.left) && Boolean(options.right);
55
56
  <div
56
57
  class={classNames(
57
58
  "transition-all bg-surface-selected rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:bg-surface after:border-white after:border after:rounded-full after:transition-all ",
58
- color == 'red' ? 'peer-checked:bg-red-600' : 'peer-checked:bg-blue-600 dark:peer-checked:bg-blue-500',
59
+ color == 'red'
60
+ ? 'peer-checked:bg-red-600'
61
+ : 'peer-checked:bg-blue-600 dark:peer-checked:bg-blue-500',
59
62
  size === 'sm'
60
63
  ? 'w-11 h-6 after:top-0.5 after:left-[2px] after:h-5 after:w-5'
61
64
  : 'w-7 h-4 after:top-0.5 after:left-[2px] after:h-3 after:w-3'
@@ -74,7 +77,7 @@ const bothOptions = Boolean(options.left) && Boolean(options.right);
74
77
  >
75
78
  {options?.right}
76
79
  {#if options?.rightTooltip}
77
- <Tooltip>{options?.rightTooltip}</Tooltip>
80
+ <Tooltip light={lightMode}>{options?.rightTooltip}</Tooltip>
78
81
  {/if}
79
82
  </span>
80
83
  {/if}
@@ -14,6 +14,7 @@ declare const __propDef: {
14
14
  textStyle?: string | undefined;
15
15
  color?: "blue" | "red" | undefined;
16
16
  id?: string | undefined;
17
+ lightMode?: boolean | undefined;
17
18
  size?: "xs" | "sm" | undefined;
18
19
  };
19
20
  events: {
@@ -71,8 +71,9 @@ async function createToken() {
71
71
  listTokens();
72
72
  displayCreateToken = false;
73
73
  }
74
+ let tokenPage = 1;
74
75
  async function listTokens() {
75
- tokens = await UserService.listTokens({ excludeEphemeral: true });
76
+ tokens = await UserService.listTokens({ excludeEphemeral: true, page: tokenPage, perPage: 100 });
76
77
  }
77
78
  async function deleteToken(tokenPrefix) {
78
79
  await UserService.deleteToken({ tokenPrefix });
@@ -324,6 +325,28 @@ loadSettings();
324
325
  {/if}
325
326
  </tbody>
326
327
  </TableCustom>
328
+ <div class="flex flex-row-reverse gap-2 w-full">
329
+ {#if tokens?.length == 100}
330
+ <button
331
+ class=" p-1 underline text-sm whitespace-nowrap text-center"
332
+ on:click={() => {
333
+ tokenPage += 1
334
+ listTokens()
335
+ }}
336
+ >Next
337
+ </button>
338
+ {/if}
339
+ {#if tokenPage > 1}
340
+ <button
341
+ class="p-1 underline text-sm whitespace-nowrap text-center"
342
+ on:click={() => {
343
+ tokenPage -= 1
344
+ listTokens()
345
+ }}
346
+ >Previous
347
+ </button>
348
+ {/if}
349
+ </div>
327
350
  </div>
328
351
  </div>
329
352
  </div>
@@ -1,4 +1,4 @@
1
- <script>import { Plus, X } from 'lucide-svelte';
1
+ <script>import { Copy, Plus, RefreshCcwIcon, Settings, Trash, X } from 'lucide-svelte';
2
2
  import { Alert, Button, Drawer } from './common';
3
3
  import Multiselect from 'svelte-multiselect';
4
4
  import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
@@ -714,7 +714,7 @@ let createdTags = [];
714
714
  dirtyCode = true
715
715
  const code = e.detail
716
716
  if (code != '') {
717
- nconfig.init_bash = code
717
+ nconfig.init_bash = code?.replace(/\r\n/g, '\n')
718
718
  } else {
719
719
  nconfig.init_bash = undefined
720
720
  }
@@ -765,8 +765,7 @@ let createdTags = [];
765
765
  </DrawerContent>
766
766
  </Drawer>
767
767
 
768
- <div class="flex gap-2 items-center"
769
- ><h4 class="py-4 truncate w-40 text-primary">{name}</h4>
768
+ <div class="flex gap-2 items-center justify-end flex-row my-2">
770
769
  {#if $superadmin}
771
770
  <Button
772
771
  color="light"
@@ -776,9 +775,10 @@ let createdTags = [];
776
775
  loadNConfig()
777
776
  drawer.openDrawer()
778
777
  }}
778
+ startIcon={{ icon: config == undefined ? Plus : Settings }}
779
779
  >
780
780
  <div class="flex flex-row gap-1 items-center">
781
- {config == undefined ? 'create' : 'edit'} config
781
+ {config == undefined ? 'Create' : 'Edit'} config
782
782
  </div>
783
783
  </Button>
784
784
 
@@ -794,8 +794,9 @@ let createdTags = [];
794
794
  )
795
795
  sendUserToast('Worker config copied to clipboard as YAML')
796
796
  }}
797
+ startIcon={{ icon: Copy }}
797
798
  >
798
- copy config
799
+ Copy config
799
800
  </Button>
800
801
 
801
802
  {#if config}
@@ -809,9 +810,10 @@ let createdTags = [];
809
810
  openDelete = true
810
811
  }
811
812
  }}
813
+ startIcon={{ icon: Trash }}
812
814
  btnClasses="text-red-400"
813
815
  >
814
- delete config
816
+ Delete config
815
817
  </Button>
816
818
  {/if}
817
819
 
@@ -824,8 +826,9 @@ let createdTags = [];
824
826
  openClean = true
825
827
  }}
826
828
  btnClasses="text-red-400"
829
+ startIcon={{ icon: RefreshCcwIcon }}
827
830
  >
828
- clean cache
831
+ Clean cache
829
832
  </Button>
830
833
  {:else if config}
831
834
  <Button
@@ -839,9 +842,4 @@ let createdTags = [];
839
842
  <div class="flex flex-row gap-1 items-center"> config </div>
840
843
  </Button>
841
844
  {/if}
842
- {#if activeWorkers > 1}
843
- <span class="ml-4 text-xs"
844
- >{activeWorkers} Workers <Tooltip>Number of workers active in the last 10s</Tooltip></span
845
- >
846
- {/if}
847
845
  </div>
@@ -26,6 +26,7 @@ export let errorHandledByComponent = false;
26
26
  export let extraKey = undefined;
27
27
  export let isMenuItem = false;
28
28
  export let noInitialize = false;
29
+ export let replaceCallback = false;
29
30
  export let controls = undefined;
30
31
  const { worldStore, app, componentControl, selectedComponent } = getContext('AppViewerContext');
31
32
  const rowContext = getContext('RowWrapperContext');
@@ -149,6 +150,7 @@ let css = initCss($app.css?.buttoncomponent, customCss);
149
150
  }
150
151
  }}
151
152
  refreshOnStart={resolvedConfig.triggerOnAppLoad}
153
+ {replaceCallback}
152
154
  >
153
155
  <AlignWrapper {noWFull} {horizontalAlignment} {verticalAlignment} class="wm-button-wrapper">
154
156
  {#if errorsMessage}
@@ -18,6 +18,7 @@ declare const __propDef: {
18
18
  extraKey?: string | undefined;
19
19
  isMenuItem?: boolean | undefined;
20
20
  noInitialize?: boolean | undefined;
21
+ replaceCallback?: boolean | undefined;
21
22
  controls?: {
22
23
  left: () => boolean;
23
24
  right: () => boolean | string;