windmill-components 1.352.8 → 1.362.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 (210) hide show
  1. package/package/assets/app.css +8 -45
  2. package/package/components/ApiConnectForm.svelte +1 -0
  3. package/package/components/ArgInput.svelte +5 -1
  4. package/package/components/ChangeInstanceUsername.svelte +20 -12
  5. package/package/components/ContentSearchInner.svelte +359 -0
  6. package/package/components/{ContentSearch.svelte.d.ts → ContentSearchInner.svelte.d.ts} +9 -5
  7. package/package/components/CustomPopover.svelte +73 -0
  8. package/package/components/CustomPopover.svelte.d.ts +29 -0
  9. package/package/components/DateTimeInput.svelte +29 -3
  10. package/package/components/DateTimeInput.svelte.d.ts +4 -0
  11. package/package/components/Dev.svelte +8 -3
  12. package/package/components/DurationMs.svelte +2 -2
  13. package/package/components/FlowBuilder.svelte +122 -24
  14. package/package/components/FlowBuilder.svelte.d.ts +1 -0
  15. package/package/components/FlowGraphViewerStep.svelte +2 -2
  16. package/package/components/FlowJobResult.svelte +5 -3
  17. package/package/components/FlowStatusViewer.svelte +4 -3
  18. package/package/components/FlowStatusViewerInner.svelte +265 -160
  19. package/package/components/FlowStatusViewerInner.svelte.d.ts +15 -2
  20. package/package/components/HighlightTheme.svelte +75 -77
  21. package/package/components/InputTransformForm.svelte +2 -0
  22. package/package/components/JobArgs.svelte +59 -44
  23. package/package/components/JobArgs.svelte.d.ts +2 -0
  24. package/package/components/LightweightArgInput.svelte +27 -2
  25. package/package/components/Path.svelte +3 -8
  26. package/package/components/Popover.svelte +1 -1
  27. package/package/components/ResourceEditor.svelte +6 -3
  28. package/package/components/ResourceEditor.svelte.d.ts +2 -0
  29. package/package/components/ResourceEditorDrawer.svelte +4 -1
  30. package/package/components/ResourcePicker.svelte +1 -0
  31. package/package/components/RunChart.svelte +6 -3
  32. package/package/components/RunChart.svelte.d.ts +1 -0
  33. package/package/components/RunForm.svelte +24 -23
  34. package/package/components/RunForm.svelte.d.ts +0 -2
  35. package/package/components/SavedInputs.svelte +50 -39
  36. package/package/components/ScheduleEditorInner.svelte +26 -4
  37. package/package/components/ScriptBuilder.svelte +47 -22
  38. package/package/components/ScriptBuilder.svelte.d.ts +1 -0
  39. package/package/components/SearchItems.svelte +5 -4
  40. package/package/components/Summary.svelte +74 -0
  41. package/package/components/Summary.svelte.d.ts +16 -0
  42. package/package/components/apps/components/display/AppMarkdown.svelte +3 -2
  43. package/package/components/apps/components/display/AppMenu.svelte +2 -2
  44. package/package/components/apps/components/display/AppNavbar.svelte +94 -0
  45. package/package/components/apps/components/display/AppNavbar.svelte.d.ts +24 -0
  46. package/package/components/apps/components/display/AppNavbarItem.svelte +146 -0
  47. package/package/components/apps/components/display/AppNavbarItem.svelte.d.ts +27 -0
  48. package/package/components/apps/components/display/ResolveNavbarItemPath.svelte +21 -0
  49. package/package/components/apps/components/display/ResolveNavbarItemPath.svelte.d.ts +20 -0
  50. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +16 -0
  51. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +12 -16
  52. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +1 -0
  53. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +5 -0
  54. package/package/components/apps/components/display/table/AppAggridTable.svelte +28 -6
  55. package/package/components/apps/components/display/table/AppAggridTableActions.svelte +68 -43
  56. package/package/components/apps/components/inputs/AppDateSelect.svelte +284 -0
  57. package/package/components/apps/components/inputs/AppDateSelect.svelte.d.ts +21 -0
  58. package/package/components/apps/components/inputs/AppDateTimeInput.svelte +2 -0
  59. package/package/components/apps/components/inputs/AppFileInput.svelte +22 -27
  60. package/package/components/apps/components/inputs/AppFileInput.svelte.d.ts +1 -0
  61. package/package/components/apps/components/inputs/AppTextInput.svelte +1 -1
  62. package/package/components/apps/components/layout/AppDecisionTree.svelte +32 -30
  63. package/package/components/apps/components/layout/AppModal.svelte +17 -6
  64. package/package/components/apps/editor/AppDeploymentHistory.svelte +2 -3
  65. package/package/components/apps/editor/AppDeploymentHistory.svelte.d.ts +3 -2
  66. package/package/components/apps/editor/AppEditor.svelte +9 -2
  67. package/package/components/apps/editor/AppEditorHeader.svelte +7 -10
  68. package/package/components/apps/editor/AppPreview.svelte +12 -3
  69. package/package/components/apps/editor/AppPreview.svelte.d.ts +2 -0
  70. package/package/components/apps/editor/DecisionTreeDebug.svelte +92 -68
  71. package/package/components/apps/editor/DeploymentHistory.svelte +0 -2
  72. package/package/components/apps/editor/appUtils.d.ts +1 -0
  73. package/package/components/apps/editor/appUtils.js +17 -0
  74. package/package/components/apps/editor/component/Component.svelte +23 -0
  75. package/package/components/apps/editor/component/components.d.ts +205 -3
  76. package/package/components/apps/editor/component/components.js +160 -1
  77. package/package/components/apps/editor/component/default-codes.js +13 -13
  78. package/package/components/apps/editor/component/sets.js +4 -2
  79. package/package/components/apps/editor/componentsPanel/ComponentList.svelte +12 -12
  80. package/package/components/apps/editor/componentsPanel/cssUtils.js +39 -3
  81. package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +6 -0
  82. package/package/components/apps/editor/contextPanel/ComponentOutput.svelte +2 -2
  83. package/package/components/apps/editor/contextPanel/ContextPanel.svelte +6 -0
  84. package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +11 -0
  85. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +4 -0
  86. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +21 -8
  87. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +64 -20
  88. package/package/components/apps/editor/settingsPanel/ContextVariables.svelte +48 -15
  89. package/package/components/apps/editor/settingsPanel/ContextVariables.svelte.d.ts +1 -0
  90. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +25 -5
  91. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte +2 -1
  92. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte.d.ts +1 -0
  93. package/package/components/apps/editor/settingsPanel/DocLink.svelte +33 -0
  94. package/package/components/apps/editor/settingsPanel/DocLink.svelte.d.ts +19 -0
  95. package/package/components/apps/editor/settingsPanel/GridNavbar.svelte +192 -0
  96. package/package/components/apps/editor/settingsPanel/GridNavbar.svelte.d.ts +18 -0
  97. package/package/components/apps/editor/settingsPanel/GridTab.svelte +2 -2
  98. package/package/components/apps/editor/settingsPanel/RefreshDatabaseStudioTable.svelte +17 -0
  99. package/package/components/apps/editor/settingsPanel/RefreshDatabaseStudioTable.svelte.d.ts +16 -0
  100. package/package/components/apps/editor/settingsPanel/TableActions.svelte +81 -38
  101. package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +12 -5
  102. package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +11 -12
  103. package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +4 -2
  104. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +4 -1
  105. package/package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +7 -1
  106. package/package/components/apps/inputType.d.ts +2 -2
  107. package/package/components/apps/svelte-select/lib/Select.svelte +2 -3
  108. package/package/components/apps/types.d.ts +3 -0
  109. package/package/components/auditLogs/AuditLogsTable.svelte +2 -2
  110. package/package/components/common/CloseButton.svelte +10 -10
  111. package/package/components/common/CloseButton.svelte.d.ts +6 -14
  112. package/package/components/common/calendarPicker/CalendarPicker.svelte +5 -0
  113. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +2 -0
  114. package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +7 -1
  115. package/package/components/common/fileInput/FileInput.svelte +2 -0
  116. package/package/components/common/fileInput/FileInput.svelte.d.ts +1 -0
  117. package/package/components/common/popup/Popup.svelte +4 -3
  118. package/package/components/common/popup/Popup.svelte.d.ts +1 -0
  119. package/package/components/common/table/AppRow.svelte +3 -10
  120. package/package/components/common/table/FlowRow.svelte +12 -1
  121. package/package/components/copilot/IteratorGen.svelte +1 -1
  122. package/package/components/copilot/PredicateGen.svelte +1 -1
  123. package/package/components/copilot/StepInputGen.svelte +8 -3
  124. package/package/components/copilot/StepInputsGen.svelte +5 -2
  125. package/package/components/details/WebhooksPanel.svelte +32 -1
  126. package/package/components/details/WebhooksPanel.svelte.d.ts +2 -11
  127. package/package/components/flows/FlowHistory.svelte +208 -0
  128. package/package/components/flows/FlowHistory.svelte.d.ts +21 -0
  129. package/package/components/flows/content/FlowBranchesAllWrapper.svelte +1 -1
  130. package/package/components/flows/content/FlowBranchesOneWrapper.svelte +1 -1
  131. package/package/components/flows/content/FlowEditorPanel.svelte +1 -1
  132. package/package/components/flows/content/FlowLoop.svelte +23 -26
  133. package/package/components/flows/content/FlowModuleComponent.svelte +2 -18
  134. package/package/components/flows/content/FlowModuleEarlyStop.svelte +10 -4
  135. package/package/components/flows/content/FlowModuleHeader.svelte +3 -4
  136. package/package/components/flows/content/FlowModuleScript.svelte +1 -1
  137. package/package/components/flows/content/FlowModuleSleep.svelte +1 -0
  138. package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
  139. package/package/components/flows/content/SuspendDrawer.svelte +7 -7
  140. package/package/components/flows/flowStateUtils.js +2 -1
  141. package/package/components/flows/flowStore.js +1 -1
  142. package/package/components/flows/header/FlowImportExportMenu.svelte +3 -16
  143. package/package/components/flows/header/FlowImportExportMenu.svelte.d.ts +4 -1
  144. package/package/components/flows/map/FlowJobsMenu.svelte +69 -0
  145. package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +22 -0
  146. package/package/components/flows/map/FlowModuleSchemaItem.svelte +7 -4
  147. package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
  148. package/package/components/flows/map/MapItem.svelte +20 -0
  149. package/package/components/flows/map/MapItem.svelte.d.ts +9 -0
  150. package/package/components/flows/map/VirtualItem.svelte +4 -2
  151. package/package/components/flows/map/VirtualItem.svelte.d.ts +1 -0
  152. package/package/components/flows/previousResults.d.ts +9 -0
  153. package/package/components/flows/previousResults.js +42 -8
  154. package/package/components/flows/propPicker/PropPickerWrapper.svelte +2 -0
  155. package/package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +1 -0
  156. package/package/components/flows/types.d.ts +1 -1
  157. package/package/components/graph/FlowGraph.svelte +80 -42
  158. package/package/components/graph/FlowGraph.svelte.d.ts +1 -0
  159. package/package/components/graph/model.d.ts +6 -1
  160. package/package/components/graph/svelvet/container/controllers/middleware.js +4 -4
  161. package/package/components/graph/svelvet/container/views/GraphView.svelte +2 -0
  162. package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +24 -25
  163. package/package/components/graph/util.d.ts +1 -1
  164. package/package/components/graph/util.js +1 -2
  165. package/package/components/home/ItemsList.svelte +22 -19
  166. package/package/components/jobs/JobPreview.svelte +11 -2
  167. package/package/components/propertyPicker/PropPicker.svelte +30 -0
  168. package/package/components/propertyPicker/PropPickerResult.svelte +14 -1
  169. package/package/components/propertyPicker/PropPickerResult.svelte.d.ts +1 -0
  170. package/package/components/runs/JobLoader.svelte +21 -8
  171. package/package/components/runs/JobLoader.svelte.d.ts +2 -0
  172. package/package/components/runs/JobPreview.svelte +5 -1
  173. package/package/components/runs/RunRow.svelte +12 -8
  174. package/package/components/runs/RunsFilter.svelte +2 -4
  175. package/package/components/runs/RunsFilter.svelte.d.ts +0 -1
  176. package/package/components/runs/RunsTable.svelte +63 -29
  177. package/package/components/runs/RunsTable.svelte.d.ts +1 -0
  178. package/package/components/schema/EditableSchemaWrapper.svelte +12 -0
  179. package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +3 -0
  180. package/package/components/schema/PropertyEditor.svelte +1 -1
  181. package/package/components/search/GlobalSearchModal.svelte +559 -0
  182. package/package/components/search/GlobalSearchModal.svelte.d.ts +17 -0
  183. package/package/components/search/QuickMenuItem.svelte +76 -0
  184. package/package/components/search/QuickMenuItem.svelte.d.ts +27 -0
  185. package/package/components/sidebar/MenuButton.svelte +11 -0
  186. package/package/components/sidebar/MenuButton.svelte.d.ts +4 -0
  187. package/package/components/sidebar/changelogs.js +35 -0
  188. package/package/components/wizards/AppPicker.svelte +68 -0
  189. package/package/components/wizards/AppPicker.svelte.d.ts +17 -0
  190. package/package/components/wizards/NavbarWizard.svelte +131 -0
  191. package/package/components/wizards/NavbarWizard.svelte.d.ts +19 -0
  192. package/package/defaults.d.ts +1 -1
  193. package/package/defaults.js +1 -1
  194. package/package/es6.d.ts.txt +370 -1
  195. package/package/gen/core/OpenAPI.js +1 -1
  196. package/package/gen/schemas.gen.d.ts +42 -3
  197. package/package/gen/schemas.gen.js +42 -3
  198. package/package/gen/services.gen.d.ts +80 -5
  199. package/package/gen/services.gen.js +149 -8
  200. package/package/gen/types.gen.d.ts +265 -11
  201. package/package/inferArgSig.js +4 -0
  202. package/package/script_helpers.d.ts +3 -3
  203. package/package/script_helpers.js +46 -22
  204. package/package/stores.d.ts +1 -1
  205. package/package/stores.js +1 -1
  206. package/package/utils.d.ts +7 -23
  207. package/package/utils.js +54 -33
  208. package/package/windmill_fetch.d.ts.txt +6 -6
  209. package/package.json +3 -11
  210. package/package/components/ContentSearch.svelte +0 -355
@@ -28,6 +28,7 @@
28
28
  list-style-type: '- ';
29
29
  padding-left: 3rem;
30
30
  }
31
+
31
32
  .autocomplete-list-item-create {
32
33
  @apply !text-primary-inverse !bg-surface-inverse;
33
34
  }
@@ -47,32 +48,8 @@
47
48
  .autocomplete-list {
48
49
  @apply !bg-surface;
49
50
  }
50
-
51
- .ol-overlaycontainer-stopevent {
52
- @apply flex flex-col justify-start items-end;
53
- }
54
- .ol-control button {
55
- @apply w-7 h-7 center-center bg-surface border text-secondary
56
- rounded mt-1 mr-1 shadow duration-200 hover:bg-surface-hover focus:bg-surface-hover;
57
- }
58
-
59
- /* Components */
60
- .component-wrapper {
61
- @apply rounded-component border overflow-hidden border-gray-300 dark:border-gray-600;
62
- }
63
-
64
- .app-editor-input {
65
- @apply rounded-component border border-gray-300 dark:border-gray-500 focus:border-gray-300 focus:dark:border-gray-500 focus:!ring-1 focus:!ring-blue-300;
66
- @apply placeholder:text-gray-400 dark:placeholder:text-gray-600;
67
- }
68
51
  }
69
52
 
70
- @layer components {
71
- /* Flow graph viewer -> Svelvet library internal class overwrite */
72
- .Node {
73
- display: flex !important;
74
- }
75
- }
76
53
  @layer utilities {
77
54
  @variants responsive {
78
55
  /* Hide scrollbar for Chrome, Safari and Opera */
@@ -104,14 +81,6 @@
104
81
  z-index: 10001 !important;
105
82
  }
106
83
 
107
- .z5000 {
108
- z-index: 5000 !important;
109
- }
110
-
111
- .foo {
112
- color: red !important;
113
- }
114
-
115
84
  svelte-virtual-list-row {
116
85
  overflow: visible !important;
117
86
  }
@@ -125,19 +94,13 @@ svelte-virtual-list-contents > * + * {
125
94
  box-shadow: none !important;
126
95
  }
127
96
 
128
- .Template-editor span.mtk20 {
129
- color: black !important;
130
- }
131
-
132
- .grid-cell-centered {
133
- display: flex;
134
- align-items: center;
135
- justify-content: center;
136
- }
137
- .grid-cell-centered .svelte-select {
138
- height: 32px !important;
97
+ .component-wrapper {
98
+ @apply rounded-component border overflow-hidden border-gray-300 dark:border-gray-600;
139
99
  }
140
100
 
141
- .grid-cell-centered .selected-item {
142
- margin-top: -4px;
101
+ .app-editor-input {
102
+ @apply rounded-component border border-gray-300 dark:border-gray-500 focus:border-gray-300 focus:dark:border-gray-500 focus:!ring-1 focus:!ring-blue-300;
103
+ @apply placeholder:text-gray-400 dark:placeholder:text-gray-200;
104
+ @apply bg-surface;
105
+ @apply disabled:placeholder:text-gray-200 disabled:placeholder:dark:text-gray-500 disabled:text-gray-200 disabled:dark:text-gray-500 disabled:border-gray-200 disabled:dark:border-gray-600;
143
106
  }
@@ -28,6 +28,7 @@ async function loadSchema() {
28
28
  viewJsonSchema = false;
29
29
  try {
30
30
  schema = resourceTypeInfo.schema;
31
+ schema.order = schema.order ?? Object.keys(schema.properties).sort();
31
32
  notFound = false;
32
33
  }
33
34
  catch (e) {
@@ -683,7 +683,11 @@ $: shouldDispatchChanges && debounced(value);
683
683
  multiple={false}
684
684
  />
685
685
  {#if value?.length}
686
- <div class="text-2xs text-tertiary mt-1">File length: {value.length} base64 chars</div>
686
+ <div class="text-2xs text-tertiary mt-1"
687
+ >File length: {value.length} base64 chars ({(value.length / 1024 / 1024).toFixed(
688
+ 2
689
+ )}MB)</div
690
+ >
687
691
  {/if}
688
692
  </div>
689
693
  {:else if inputCat == 'resource-string'}
@@ -7,6 +7,7 @@ import { createEventDispatcher } from 'svelte';
7
7
  export let email;
8
8
  export let username;
9
9
  export let isConflict = false;
10
+ let loading = false;
10
11
  let usernameInfo = undefined;
11
12
  function handleKeyUp(event) {
12
13
  const key = event.key;
@@ -26,19 +27,25 @@ async function getUsernameInfo() {
26
27
  getUsernameInfo();
27
28
  const dispatch = createEventDispatcher();
28
29
  async function renameUser() {
29
- const automateUsernameCreation = (await SettingService.getGlobal({ key: 'automate_username_creation' })) ?? false;
30
- if (!automateUsernameCreation) {
31
- sendUserToast('Modifying the username is only possible when the creation of usernames is automated and defined at instance level..');
32
- return;
33
- }
34
- await UserService.globalUserRename({
35
- email,
36
- requestBody: {
37
- new_username: username
30
+ loading = true;
31
+ try {
32
+ const automateUsernameCreation = (await SettingService.getGlobal({ key: 'automate_username_creation' })) ?? false;
33
+ if (!automateUsernameCreation) {
34
+ sendUserToast('Modifying the username is only possible when the creation of usernames is automated and defined at instance level..');
35
+ return;
38
36
  }
39
- });
40
- sendUserToast(`Rename user ${email} to ${username}`);
41
- dispatch('renamed');
37
+ await UserService.globalUserRename({
38
+ email,
39
+ requestBody: {
40
+ new_username: username
41
+ }
42
+ });
43
+ sendUserToast(`Renamed user ${email} to ${username}`);
44
+ dispatch('renamed');
45
+ }
46
+ finally {
47
+ loading = false;
48
+ }
42
49
  }
43
50
  </script>
44
51
 
@@ -116,6 +123,7 @@ async function renameUser() {
116
123
  })
117
124
  }}
118
125
  disabled={email === undefined || !username}
126
+ {loading}
119
127
  >
120
128
  Confirm username change
121
129
  </Button>
@@ -0,0 +1,359 @@
1
+ <script>import { AppService, FlowService, ResourceService, ScriptService } from '../gen';
2
+ import { enterpriseLicense, workspaceStore } from '../stores';
3
+ import { Boxes, Code2, Edit, LayoutDashboard, Loader2 } from 'lucide-svelte';
4
+ import SearchItems from './SearchItems.svelte';
5
+ import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
6
+ import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
7
+ import FlowIcon from './home/FlowIcon.svelte';
8
+ import { Alert, Button } from './common';
9
+ import YAML from 'yaml';
10
+ export let search = '';
11
+ export let classNameInner = 'max-h-[80vh]';
12
+ export async function open(nsearch) {
13
+ await Promise.all([loadScripts(), loadResources(), loadApps(), loadFlows()]);
14
+ if (nsearch) {
15
+ search = nsearch;
16
+ }
17
+ }
18
+ export async function loadScripts() {
19
+ scripts = await ScriptService.listSearchScript({ workspace: $workspaceStore ?? '' });
20
+ }
21
+ export async function loadResources() {
22
+ resources = await ResourceService.listSearchResource({ workspace: $workspaceStore ?? '' });
23
+ }
24
+ export async function loadApps() {
25
+ apps = await AppService.listSearchApp({ workspace: $workspaceStore ?? '' });
26
+ }
27
+ export async function loadFlows() {
28
+ flows = await FlowService.listSearchFlow({ workspace: $workspaceStore ?? '' });
29
+ }
30
+ let searchKind = 'all';
31
+ let scripts = undefined;
32
+ let filteredScriptItems = [];
33
+ let resources = undefined;
34
+ let filteredResourceItems = [];
35
+ let flows = undefined;
36
+ let filteredFlowItems = [];
37
+ let apps = undefined;
38
+ let filteredAppItems = [];
39
+ function getCounts(n) {
40
+ return ` (${n})`;
41
+ }
42
+ function escape(htmlStr) {
43
+ return htmlStr
44
+ .replace(/&/g, '&amp;')
45
+ .replace(/</g, '&lt;')
46
+ .replace(/>/g, '&gt;')
47
+ .replace(/"/g, '&quot;')
48
+ .replace(/'/g, '&#39;');
49
+ }
50
+ $: counts =
51
+ search == '' ||
52
+ !scripts ||
53
+ !resources ||
54
+ !flows ||
55
+ !apps ||
56
+ !filteredAppItems ||
57
+ !filteredFlowItems ||
58
+ !filteredResourceItems ||
59
+ !filteredScriptItems
60
+ ? {
61
+ all: '',
62
+ apps: '',
63
+ flows: '',
64
+ resources: '',
65
+ scripts: ''
66
+ }
67
+ : {
68
+ all: getCounts(filteredAppItems.length +
69
+ filteredFlowItems.length +
70
+ filteredResourceItems.length +
71
+ filteredScriptItems.length),
72
+ apps: getCounts(filteredAppItems.length),
73
+ resources: getCounts(filteredResourceItems.length),
74
+ flows: getCounts(filteredFlowItems.length),
75
+ scripts: getCounts(filteredScriptItems.length)
76
+ };
77
+ let showNbScripts = 10;
78
+ let showNbApps = 10;
79
+ let showNbResources = 10;
80
+ let showNbFlows = 10;
81
+ $: search && resetShows();
82
+ function resetShows() {
83
+ showNbScripts = 10;
84
+ showNbApps = 10;
85
+ showNbResources = 10;
86
+ showNbFlows = 10;
87
+ }
88
+ </script>
89
+
90
+ <SearchItems
91
+ filter={search}
92
+ items={scripts}
93
+ f={(s) => {
94
+ return escape(s.content)
95
+ }}
96
+ bind:filteredItems={filteredScriptItems}
97
+ />
98
+
99
+ <SearchItems
100
+ filter={search}
101
+ items={resources}
102
+ f={(s) => {
103
+ return escape(YAML.stringify(s.value))
104
+ }}
105
+ bind:filteredItems={filteredResourceItems}
106
+ />
107
+
108
+ <SearchItems
109
+ filter={search}
110
+ items={flows}
111
+ f={(s) => {
112
+ return escape(YAML.stringify(s.value, null, 4))
113
+ }}
114
+ bind:filteredItems={filteredFlowItems}
115
+ />
116
+
117
+ <SearchItems
118
+ filter={search}
119
+ items={apps}
120
+ f={(s) => {
121
+ return escape(YAML.stringify(s.value, null, 4))
122
+ }}
123
+ bind:filteredItems={filteredAppItems}
124
+ />
125
+
126
+ <div class="px-2 py-2 overflow-auto">
127
+ <div class="flex gap-2 flex-wrap">
128
+ <div class="flex justify-start">
129
+ <ToggleButtonGroup bind:selected={searchKind} class="h-10">
130
+ <ToggleButton small light value="all" label={'All' + counts.all} />
131
+ <ToggleButton small light value="scripts" icon={Code2} label={'Scripts' + counts.scripts} />
132
+ <ToggleButton
133
+ small
134
+ light
135
+ value="resources"
136
+ icon={Boxes}
137
+ label={'Resources' + counts.resources}
138
+ />
139
+ <ToggleButton
140
+ small
141
+ light
142
+ value="flows"
143
+ label={'Flows' + counts.flows}
144
+ icon={FlowIcon}
145
+ selectedColor="#14b8a6"
146
+ />
147
+ <ToggleButton
148
+ small
149
+ light
150
+ value="apps"
151
+ label={'Apps' + counts.apps}
152
+ icon={LayoutDashboard}
153
+ selectedColor="#fb923c"
154
+ />
155
+ </ToggleButtonGroup>
156
+ </div>
157
+ <div class="relative text-tertiary grow min-w-[100px]">
158
+ <slot name="input-slot" />
159
+ <button type="submit" class="absolute right-0 top-0 mt-3 mr-4">
160
+ <svg
161
+ class="h-4 w-4 fill-current"
162
+ xmlns="http://www.w3.org/2000/svg"
163
+ xmlns:xlink="http://www.w3.org/1999/xlink"
164
+ version="1.1"
165
+ id="Capa_1"
166
+ x="0px"
167
+ y="0px"
168
+ viewBox="0 0 56.966 56.966"
169
+ style="enable-background:new 0 0 56.966 56.966;"
170
+ xml:space="preserve"
171
+ width="512px"
172
+ height="512px"
173
+ >
174
+ <path
175
+ d="M55.146,51.887L41.588,37.786c3.486-4.144,5.396-9.358,5.396-14.786c0-12.682-10.318-23-23-23s-23,10.318-23,23 s10.318,23,23,23c4.761,0,9.298-1.436,13.177-4.162l13.661,14.208c0.571,0.593,1.339,0.92,2.162,0.92 c0.779,0,1.518-0.297,2.079-0.837C56.255,54.982,56.293,53.08,55.146,51.887z M23.984,6c9.374,0,17,7.626,17,17s-7.626,17-17,17 s-17-7.626-17-17S14.61,6,23.984,6z"
176
+ />
177
+ </svg>
178
+ </button>
179
+ </div>
180
+ </div>
181
+ <div class="mt-1">
182
+ <div class="text-xs text-secondary"
183
+ >Searching among <div class="inline-flex"
184
+ >{#if scripts}{scripts?.length}{:else}
185
+ <Loader2 size={10} class="animate-spin " />
186
+ {/if}</div
187
+ >
188
+ scripts,
189
+ <div class="inline-flex"
190
+ >{#if resources}{resources?.length}{:else}
191
+ <Loader2 size={10} class="animate-spin " />
192
+ {/if}</div
193
+ >
194
+ resources,
195
+ <div class="inline-flex"
196
+ >{#if flows}{flows?.length}{:else}
197
+ <Loader2 size={10} class="animate-spin " />
198
+ {/if}</div
199
+ >
200
+ flows,
201
+ <div class="inline-flex"
202
+ >{#if apps}{apps?.length}{:else}
203
+ <Loader2 size={10} class="animate-spin " />
204
+ {/if}</div
205
+ >
206
+ apps</div
207
+ >
208
+ </div>
209
+
210
+ <div class="mt-1 overflow-auto {classNameInner}">
211
+ {#if !$enterpriseLicense}
212
+ <div class="py-1" />
213
+
214
+ <Alert title="Content Search is an EE feature" type="warning">
215
+ Without EE, content search will only search among 10 scripts, 3 flows, 3 apps and 3
216
+ resources.
217
+ </Alert>
218
+ <div class="py-1" />
219
+ {/if}
220
+
221
+ {#if search.trim().length > 0}
222
+ <div class="flex flex-col gap-4">
223
+ {#if (searchKind == 'all' || searchKind == 'scripts') && filteredScriptItems?.length > 0}
224
+ {#each filteredScriptItems.slice(0, showNbScripts) ?? [] as item}
225
+ <div>
226
+ <div class="text-sm font-semibold"
227
+ ><a href="/scripts/get/{item.path}">Script: {item.path}</a></div
228
+ >
229
+ <div class="flex gap-2 justify-between">
230
+ <pre class="text-xs border p-2 overflow-auto max-h-40 w-full max-w-2xl"
231
+ ><code>{@html item.marked}</code></pre
232
+ >
233
+ <div>
234
+ <div class="flex gap-2">
235
+ <Button
236
+ on:click|once={() => {
237
+ window.open(`/scripts/edit/${item.path}?no_draft=true`, '_blank')?.focus()
238
+ }}
239
+ color="light"
240
+ size="sm"
241
+ startIcon={{ icon: Edit }}
242
+ >
243
+ Edit
244
+ </Button>
245
+ </div>
246
+ </div>
247
+ </div>
248
+ </div>
249
+ {/each}
250
+ {#if filteredScriptItems.length > showNbScripts}
251
+ <a
252
+ href="#"
253
+ class="text-center font-semibold cursor-pointer pb-40"
254
+ on:click={() => {
255
+ showNbScripts += 30
256
+ }}
257
+ >
258
+ ({showNbScripts} of {filteredScriptItems.length}) Show more scripts
259
+ </a>
260
+ {/if}
261
+ {/if}
262
+ {#if (searchKind == 'all' || searchKind == 'resources') && filteredResourceItems?.length > 0}
263
+ {#each filteredResourceItems.slice(0, showNbResources) ?? [] as item}
264
+ <div>
265
+ <div class="text-sm font-semibold">Resource: {item.path}</div>
266
+ <div class="flex gap-2 justify-between">
267
+ <pre class="text-xs border p-2 overflow-auto max-h-40 w-full max-w-2xl"
268
+ ><code>{@html item.marked}</code></pre
269
+ >
270
+ </div>
271
+ </div>
272
+ {/each}
273
+ {#if filteredResourceItems.length > showNbResources}
274
+ <a
275
+ href="#"
276
+ class="text-center font-semibold cursor-pointer pb-40"
277
+ on:click={() => {
278
+ showNbResources += 30
279
+ }}
280
+ >
281
+ ({showNbResources} of {filteredResourceItems.length}) Show more resources
282
+ </a>
283
+ {/if}
284
+ {/if}
285
+ {#if (searchKind == 'all' || searchKind == 'flows') && filteredFlowItems?.length > 0}
286
+ {#each filteredFlowItems.slice(0, showNbFlows) ?? [] as item}
287
+ <div>
288
+ <div class="text-sm font-semibold"
289
+ ><a href="/flows/get/{item.path}">Flow: {item.path}</a></div
290
+ >
291
+ <div class="flex gap-2 justify-between">
292
+ <pre class="text-xs border p-2 overflow-auto max-h-40 w-full max-w-2xl"
293
+ ><code>{@html item.marked}</code></pre
294
+ >
295
+ <div>
296
+ <div class="flex gap-2">
297
+ <Button
298
+ on:click|once={() => {
299
+ window.open(`/flows/edit/${item.path}?no_draft=true`, '_blank')?.focus()
300
+ }}
301
+ color="light"
302
+ size="sm"
303
+ startIcon={{ icon: Edit }}>Edit</Button
304
+ >
305
+ </div>
306
+ </div>
307
+ </div>
308
+ </div>
309
+ {/each}
310
+ {#if filteredFlowItems.length > showNbFlows}
311
+ <a
312
+ href="#"
313
+ class="text-center font-semibold cursor-pointer pb-40"
314
+ on:click={() => {
315
+ showNbScripts += 30
316
+ }}
317
+ >
318
+ ({showNbFlows} of {filteredFlowItems.length}) Show more flows
319
+ </a>
320
+ {/if}
321
+ {/if}
322
+ {#if (searchKind == 'all' || searchKind == 'apps') && filteredAppItems?.length > 0}
323
+ {#each filteredAppItems.slice(0, showNbApps) ?? [] as item}
324
+ <div>
325
+ <div class="text-sm font-semibold"
326
+ ><a href="/apps/get/{item.path}">App: {item.path}</a></div
327
+ >
328
+ <div class="flex gap-2 justify-between">
329
+ <pre class="text-xs border p-2 overflow-auto max-h-40 w-full max-w-2xl"
330
+ ><code>{@html item.marked}</code></pre
331
+ >
332
+ </div>
333
+ </div>
334
+ {/each}
335
+ {#if filteredAppItems.length > showNbApps}
336
+ <a
337
+ href="#"
338
+ class="text-center font-semibold cursor-pointer pb-40"
339
+ on:click={() => {
340
+ showNbApps += 30
341
+ }}
342
+ >
343
+ ({showNbApps} of {filteredAppItems.length}) Show more apps
344
+ </a>
345
+ {/if}
346
+ {/if}
347
+ </div>
348
+ {:else}
349
+ <div class="flex justify-center items-center h-48">
350
+ <div class="text-tertiary text-center">
351
+ <div class="text-2xl font-bold">Empty Search Filter</div>
352
+ <div class="text-sm"
353
+ >Start writing, search everywhere a path is referenced for instance</div
354
+ >
355
+ </div>
356
+ </div>
357
+ {/if}
358
+ </div>
359
+ </div>
@@ -1,6 +1,8 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
+ search?: string | undefined;
5
+ classNameInner?: string | undefined;
4
6
  open?: ((nsearch?: string) => Promise<void>) | undefined;
5
7
  loadScripts?: (() => Promise<void>) | undefined;
6
8
  loadResources?: (() => Promise<void>) | undefined;
@@ -10,12 +12,14 @@ declare const __propDef: {
10
12
  events: {
11
13
  [evt: string]: CustomEvent<any>;
12
14
  };
13
- slots: {};
15
+ slots: {
16
+ 'input-slot': {};
17
+ };
14
18
  };
15
- export type ContentSearchProps = typeof __propDef.props;
16
- export type ContentSearchEvents = typeof __propDef.events;
17
- export type ContentSearchSlots = typeof __propDef.slots;
18
- export default class ContentSearch extends SvelteComponent<ContentSearchProps, ContentSearchEvents, ContentSearchSlots> {
19
+ export type ContentSearchInnerProps = typeof __propDef.props;
20
+ export type ContentSearchInnerEvents = typeof __propDef.events;
21
+ export type ContentSearchInnerSlots = typeof __propDef.slots;
22
+ export default class ContentSearchInner extends SvelteComponent<ContentSearchInnerProps, ContentSearchInnerEvents, ContentSearchInnerSlots> {
19
23
  get open(): (nsearch?: string | undefined) => Promise<void>;
20
24
  get loadScripts(): () => Promise<void>;
21
25
  get loadResources(): () => Promise<void>;
@@ -0,0 +1,73 @@
1
+ <script>import { createPopperActions } from 'svelte-popperjs';
2
+ import Portal from 'svelte-portal';
3
+ export let placement = 'bottom-end';
4
+ export let notClickable = false;
5
+ export let disablePopup = false;
6
+ export let disappearTimeout = 100;
7
+ export let appearTimeout = 300;
8
+ export let style = undefined;
9
+ export let focusEl = undefined;
10
+ const [popperRef, popperContent] = createPopperActions({ placement });
11
+ const popperOptions = {
12
+ placement,
13
+ strategy: 'fixed',
14
+ modifiers: [
15
+ { name: 'offset', options: { offset: [8, 8] } },
16
+ {
17
+ name: 'arrow',
18
+ options: {
19
+ padding: 10
20
+ }
21
+ }
22
+ ]
23
+ };
24
+ let showTooltip = false;
25
+ let timeout = undefined;
26
+ let inTimeout = undefined;
27
+ function open() {
28
+ clearTimeout(timeout);
29
+ if (appearTimeout == 0) {
30
+ showTooltip = true;
31
+ }
32
+ else {
33
+ inTimeout = setTimeout(() => (showTooltip = true), appearTimeout);
34
+ }
35
+ }
36
+ function close() {
37
+ inTimeout && clearTimeout(inTimeout);
38
+ inTimeout = undefined;
39
+ timeout = setTimeout(() => (showTooltip = false), disappearTimeout);
40
+ }
41
+ $: focusEl && focusEl?.focus();
42
+ </script>
43
+
44
+ {#if notClickable}
45
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
46
+ <span {style} use:popperRef on:mouseenter={open} on:mouseleave={close} class={$$props.class}>
47
+ <slot />
48
+ </span>
49
+ {:else}
50
+ <button
51
+ {style}
52
+ use:popperRef
53
+ on:mouseenter={open}
54
+ on:mouseleave={close}
55
+ on:click
56
+ class={$$props.class}
57
+ >
58
+ <slot />
59
+ </button>
60
+ {/if}
61
+ {#if showTooltip && !disablePopup}
62
+ <Portal>
63
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
64
+ <div
65
+ use:popperContent={popperOptions}
66
+ on:mouseenter={open}
67
+ on:mouseleave={close}
68
+ class="z-[5001] border rounded-lg shadow-lg p-4 bg-surface"
69
+ >
70
+ <slot name="overlay" />
71
+ </div>
72
+ </Portal>
73
+ {/if}
@@ -0,0 +1,29 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { PopoverPlacement } from './Popover.model';
3
+ declare const __propDef: {
4
+ props: {
5
+ [x: string]: any;
6
+ placement?: PopoverPlacement | undefined;
7
+ notClickable?: boolean | undefined;
8
+ disablePopup?: boolean | undefined;
9
+ disappearTimeout?: number | undefined;
10
+ appearTimeout?: number | undefined;
11
+ style?: string | undefined;
12
+ focusEl?: HTMLElement | undefined;
13
+ };
14
+ events: {
15
+ click: MouseEvent;
16
+ } & {
17
+ [evt: string]: CustomEvent<any>;
18
+ };
19
+ slots: {
20
+ default: {};
21
+ overlay: {};
22
+ };
23
+ };
24
+ export type CustomPopoverProps = typeof __propDef.props;
25
+ export type CustomPopoverEvents = typeof __propDef.events;
26
+ export type CustomPopoverSlots = typeof __propDef.slots;
27
+ export default class CustomPopover extends SvelteComponent<CustomPopoverProps, CustomPopoverEvents, CustomPopoverSlots> {
28
+ }
29
+ export {};