windmill-components 1.383.8 → 1.389.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/package/assets/app.css +25 -1
  2. package/package/components/ArgInput.svelte +2 -1
  3. package/package/components/ChangeInstanceUsername.svelte +9 -108
  4. package/package/components/ChangeInstanceUsernameInner.svelte +112 -0
  5. package/package/components/ChangeInstanceUsernameInner.svelte.d.ts +21 -0
  6. package/package/components/DiffDrawer.svelte +27 -20
  7. package/package/components/DiffEditor.svelte +13 -1
  8. package/package/components/DisplayResult.svelte +39 -9
  9. package/package/components/DropdownV2.svelte +4 -26
  10. package/package/components/DropdownV2.svelte.d.ts +9 -1
  11. package/package/components/DropdownV2Inner.svelte +42 -0
  12. package/package/components/DropdownV2Inner.svelte.d.ts +40 -0
  13. package/package/components/Editor.svelte +142 -128
  14. package/package/components/Editor.svelte.d.ts +5 -4
  15. package/package/components/EditorBar.svelte +9 -11
  16. package/package/components/EditorSettings.svelte +44 -0
  17. package/package/components/EditorSettings.svelte.d.ts +17 -0
  18. package/package/components/EditorTheme.svelte +1 -1
  19. package/package/components/ErrorOrRecoveryHandler.svelte +27 -20
  20. package/package/components/FlowBuilder.svelte +17 -3
  21. package/package/components/FlowBuilder.svelte.d.ts +3 -0
  22. package/package/components/FlowGraphViewerStep.svelte +1 -1
  23. package/package/components/FlowStatusViewer.svelte +3 -1
  24. package/package/components/FlowStatusViewer.svelte.d.ts +1 -0
  25. package/package/components/FlowStatusViewerInner.svelte +5 -2
  26. package/package/components/FlowViewerInner.svelte +3 -7
  27. package/package/components/FormatOnSave.svelte +12 -29
  28. package/package/components/GraphqlSchemaViewer.svelte +1 -1
  29. package/package/components/GraphqlSchemaViewer.svelte.d.ts +1 -1
  30. package/package/components/HighlightCode.svelte +3 -0
  31. package/package/components/InstanceNameEditor.svelte +64 -0
  32. package/package/components/InstanceNameEditor.svelte.d.ts +23 -0
  33. package/package/components/LightweightArgInput.svelte +6 -11
  34. package/package/components/LogViewer.svelte +37 -29
  35. package/package/components/LogViewer.svelte.d.ts +2 -0
  36. package/package/components/ObjectResourceInput.svelte +1 -1
  37. package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
  38. package/package/components/Path.svelte +3 -3
  39. package/package/components/QueueMetricsDrawer.svelte +6 -218
  40. package/package/components/QueueMetricsDrawer.svelte.d.ts +2 -3
  41. package/package/components/QueueMetricsDrawerInner.svelte +211 -0
  42. package/package/components/QueueMetricsDrawerInner.svelte.d.ts +15 -0
  43. package/package/components/ResourceEditorDrawer.svelte +14 -11
  44. package/package/components/ResourceEditorDrawer.svelte.d.ts +1 -1
  45. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  46. package/package/components/S3FilePicker.svelte +20 -8
  47. package/package/components/ScheduleEditorInner.svelte +497 -469
  48. package/package/components/ScriptBuilder.svelte +12 -1
  49. package/package/components/ScriptBuilder.svelte.d.ts +3 -0
  50. package/package/components/ScriptEditor.svelte +2 -0
  51. package/package/components/ScriptEditor.svelte.d.ts +2 -1
  52. package/package/components/ServiceLogsInner.svelte +511 -0
  53. package/package/components/ServiceLogsInner.svelte.d.ts +20 -0
  54. package/package/components/SimpleEditor.svelte +75 -37
  55. package/package/components/SimpleEditor.svelte.d.ts +9 -3
  56. package/package/components/Summary.svelte +33 -31
  57. package/package/components/Summary.svelte.d.ts +1 -0
  58. package/package/components/SuperadminSettings.svelte +28 -10
  59. package/package/components/TemplateEditor.svelte +1 -1
  60. package/package/components/TestJobLoader.svelte.d.ts +1 -1
  61. package/package/components/VimMode.svelte +16 -0
  62. package/package/components/VimMode.svelte.d.ts +14 -0
  63. package/package/components/WorkerTagPicker.svelte +4 -1
  64. package/package/components/WorkspaceGroup.svelte +139 -68
  65. package/package/components/WorkspaceGroup.svelte.d.ts +3 -0
  66. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +19 -2
  67. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +1 -0
  68. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +2 -1
  69. package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte +2 -0
  70. package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte.d.ts +2 -1
  71. package/package/components/apps/components/display/table/AppAggridTable.svelte +45 -3
  72. package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +2 -1
  73. package/package/components/apps/components/display/table/AppAggridTableEe.svelte +2 -0
  74. package/package/components/apps/components/display/table/AppAggridTableEe.svelte.d.ts +2 -1
  75. package/package/components/apps/editor/AppEditor.svelte +239 -92
  76. package/package/components/apps/editor/AppEditorBottomPanel.svelte +22 -0
  77. package/package/components/apps/editor/AppEditorBottomPanel.svelte.d.ts +24 -0
  78. package/package/components/apps/editor/AppEditorHeader.svelte +44 -2
  79. package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +9 -0
  80. package/package/components/apps/editor/AppExportButton.svelte +1 -1
  81. package/package/components/apps/editor/AppPreview.svelte +4 -0
  82. package/package/components/apps/editor/DeploymentHistory.svelte +7 -3
  83. package/package/components/apps/editor/GridEditor.svelte +4 -13
  84. package/package/components/apps/editor/RunnableJobPanel.svelte +25 -58
  85. package/package/components/apps/editor/RunnableJobPanel.svelte.d.ts +10 -1
  86. package/package/components/apps/editor/RunnalbeJobPanelInner.svelte +56 -0
  87. package/package/components/apps/editor/RunnalbeJobPanelInner.svelte.d.ts +18 -0
  88. package/package/components/apps/editor/SubGridEditor.svelte +3 -1
  89. package/package/components/apps/editor/component/Component.svelte +26 -4
  90. package/package/components/apps/editor/component/Component.svelte.d.ts +1 -0
  91. package/package/components/apps/editor/component/components.d.ts +5 -0
  92. package/package/components/apps/editor/componentsPanel/CssProperty.svelte +2 -0
  93. package/package/components/apps/editor/componentsPanel/tailwindUtils.js +267 -1
  94. package/package/components/apps/editor/contextPanel/ContextPanel.svelte +9 -1
  95. package/package/components/apps/editor/contextPanel/ContextPanel.svelte.d.ts +2 -0
  96. package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +1 -0
  97. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +4 -0
  98. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +7 -2
  99. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte.d.ts +5 -1
  100. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +14 -2
  101. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte.d.ts +1 -0
  102. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +25 -5
  103. package/package/components/apps/editor/settingsPanel/HideButton.svelte +47 -0
  104. package/package/components/apps/editor/settingsPanel/HideButton.svelte.d.ts +22 -0
  105. package/package/components/apps/editor/settingsPanel/TableActions.svelte +43 -4
  106. package/package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -1
  107. package/package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +2 -1
  108. package/package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +1 -0
  109. package/package/components/apps/svelte-grid/Grid.svelte +6 -2
  110. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +1 -0
  111. package/package/components/apps/svelte-grid/MoveResize.svelte +11 -3
  112. package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +1 -0
  113. package/package/components/apps/svelte-grid/utils/item.d.ts +4 -1
  114. package/package/components/apps/svelte-grid/utils/item.js +11 -4
  115. package/package/components/build_workers.d.ts +1 -1
  116. package/package/components/build_workers.js +16 -122
  117. package/package/components/common/button/Button.svelte.d.ts +2 -2
  118. package/package/components/common/calendarPicker/CalendarPicker.svelte +6 -2
  119. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +2 -0
  120. package/package/components/common/drawer/ConditionalPortal.svelte +2 -1
  121. package/package/components/common/drawer/ConditionalPortal.svelte.d.ts +1 -0
  122. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  123. package/package/components/common/popup/Popup.svelte +2 -1
  124. package/package/components/common/popup/Popup.svelte.d.ts +1 -0
  125. package/package/components/common/table/AppRow.svelte +11 -8
  126. package/package/components/common/table/AppRow.svelte.d.ts +1 -2
  127. package/package/components/common/table/FlowRow.svelte +3 -3
  128. package/package/components/common/table/FlowRow.svelte.d.ts +1 -2
  129. package/package/components/common/table/RawAppRow.svelte +3 -3
  130. package/package/components/common/table/RawAppRow.svelte.d.ts +1 -2
  131. package/package/components/common/table/ScriptRow.svelte +3 -3
  132. package/package/components/common/table/ScriptRow.svelte.d.ts +1 -2
  133. package/package/components/copilot/CodeCompletionStatus.svelte +21 -46
  134. package/package/components/copilot/StepGen.svelte +2 -1
  135. package/package/components/custom_ui.d.ts +4 -1
  136. package/package/components/flows/CreateActionsApp.svelte +11 -8
  137. package/package/components/flows/CreateActionsFlow.svelte +11 -8
  138. package/package/components/flows/FlowEditor.svelte +1 -2
  139. package/package/components/flows/FlowEditor.svelte.d.ts +0 -1
  140. package/package/components/flows/FlowHistory.svelte +6 -3
  141. package/package/components/flows/content/FlowModuleComponent.svelte +1 -0
  142. package/package/components/flows/content/FlowModuleScript.svelte +15 -11
  143. package/package/components/flows/content/FlowSettings.svelte +1 -4
  144. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -0
  145. package/package/components/flows/header/FlowYamlEditor.svelte +55 -0
  146. package/package/components/flows/header/FlowYamlEditor.svelte.d.ts +17 -0
  147. package/package/components/flows/map/InsertTriggerButton.svelte +1 -1
  148. package/package/components/flows/map/InsertTriggerButton.svelte.d.ts +1 -0
  149. package/package/components/flows/map/VirtualItem.svelte +1 -1
  150. package/package/components/flows/pickers/PickHubScript.svelte +1 -0
  151. package/package/components/flows/types.d.ts +7 -6
  152. package/package/components/flows/utils.d.ts +9 -0
  153. package/package/components/flows/utils.js +21 -0
  154. package/package/components/graph/graphBuilder.js +1 -0
  155. package/package/components/graph/model.d.ts +1 -0
  156. package/package/components/graph/renderers/edges/BaseEdge.svelte +16 -0
  157. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
  158. package/package/components/graph/renderers/nodes/NoBranchNode.svelte +5 -1
  159. package/package/components/graph/renderers/nodes/NoBranchNode.svelte.d.ts +1 -0
  160. package/package/components/home/Item.svelte +0 -17
  161. package/package/components/home/deploy_ui.d.ts +2 -0
  162. package/package/components/home/deploy_ui.js +21 -0
  163. package/package/components/icons/RustIcon.svelte +70 -0
  164. package/package/components/icons/RustIcon.svelte.d.ts +25 -0
  165. package/package/components/icons/rust-logo.svg +1 -0
  166. package/package/components/instanceSettings.js +2 -2
  167. package/package/components/monaco_keybindings.d.ts +3 -0
  168. package/package/components/monaco_keybindings.js +9 -0
  169. package/package/components/preview/FlowPreviewStatus.svelte +6 -2
  170. package/package/components/runs/JobLoader.svelte +12 -3
  171. package/package/components/runs/JobLoader.svelte.d.ts +1 -1
  172. package/package/components/runs/ManuelDatePicker.svelte +31 -44
  173. package/package/components/runs/ManuelDatePicker.svelte.d.ts +6 -2
  174. package/package/components/runs/RunsFilter.svelte +4 -1
  175. package/package/components/runs/RunsFilter.svelte.d.ts +1 -0
  176. package/package/components/search/GlobalSearchModal.svelte +36 -25
  177. package/package/components/vscode.js +1 -1
  178. package/package/components/wizards/TableActionsWizard.svelte +84 -0
  179. package/package/components/wizards/TableActionsWizard.svelte.d.ts +22 -0
  180. package/package/editorUtils.js +2 -0
  181. package/package/gen/core/OpenAPI.js +1 -1
  182. package/package/gen/schemas.gen.d.ts +8 -8
  183. package/package/gen/schemas.gen.js +8 -8
  184. package/package/gen/services.gen.d.ts +4 -0
  185. package/package/gen/services.gen.js +16 -0
  186. package/package/gen/types.gen.d.ts +20 -8
  187. package/package/infer.d.ts +1 -1
  188. package/package/infer.js +48 -7
  189. package/package/script_helpers.d.ts +1 -0
  190. package/package/script_helpers.js +39 -1
  191. package/package/scripts.d.ts +1 -1
  192. package/package/scripts.js +12 -4
  193. package/package/stores.d.ts +5 -1
  194. package/package/stores.js +7 -2
  195. package/package.json +18 -9
@@ -15,6 +15,7 @@ import ScriptGen from '../../../copilot/ScriptGen.svelte';
15
15
  import DiffEditor from '../../../DiffEditor.svelte';
16
16
  import { userStore } from '../../../../stores';
17
17
  import CacheTtlPopup from './CacheTtlPopup.svelte';
18
+ import EditorSettings from '../../../EditorSettings.svelte';
18
19
  let inlineScriptEditorDrawer;
19
20
  export let inlineScript;
20
21
  export let name = undefined;
@@ -210,6 +211,7 @@ async function inferSuggestions(code) {
210
211
  }, {})}
211
212
  {transformer}
212
213
  />
214
+ <EditorSettings />
213
215
 
214
216
  <Button
215
217
  title="Delete"
@@ -306,6 +308,7 @@ async function inferSuggestions(code) {
306
308
  bind:this={simpleEditor}
307
309
  class="h-full max-w-full"
308
310
  small
311
+ allowVim
309
312
  {extraLib}
310
313
  bind:code={inlineScript.content}
311
314
  lang="javascript"
@@ -332,6 +335,7 @@ async function inferSuggestions(code) {
332
335
  class="h-full"
333
336
  automaticLayout
334
337
  fixedOverflowWidgets
338
+ defaultLang={scriptLangToEditorLang(inlineScript?.language)}
335
339
  />
336
340
  {/if}
337
341
  </div>
@@ -11,6 +11,7 @@ import { sendUserToast } from '../../../../toast';
11
11
  import { ScriptService } from '../../../../gen';
12
12
  import { workspaceStore } from '../../../../stores';
13
13
  import { findNextAvailablePath } from '../../../../path';
14
+ import { twMerge } from 'tailwind-merge';
14
15
  const { app, runnableComponents } = getContext('AppViewerContext');
15
16
  const { selectedComponentInEditor } = getContext('AppEditorContext');
16
17
  function deleteBackgroundScript(index) {
@@ -83,12 +84,16 @@ async function createScriptFromInlineScript(id, runnable) {
83
84
  });
84
85
  $app = $app;
85
86
  }
87
+ export let width = undefined;
86
88
  </script>
87
89
 
88
90
  <SplitPanesWrapper>
89
- <Splitpanes class="!overflow-visible">
91
+ <Splitpanes
92
+ class={twMerge('!overflow-visible')}
93
+ style={width !== undefined ? `width:${width}px;` : ''}
94
+ >
90
95
  <Pane size={25}>
91
- <InlineScriptsPanelList />
96
+ <InlineScriptsPanelList on:hidePanel />
92
97
  </Pane>
93
98
  <Pane size={75}>
94
99
  {#if !$selectedComponentInEditor}
@@ -1,7 +1,11 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
- props: Record<string, never>;
3
+ props: {
4
+ width?: number | undefined;
5
+ };
4
6
  events: {
7
+ hidePanel: CustomEvent<any>;
8
+ } & {
5
9
  [evt: string]: CustomEvent<any>;
6
10
  };
7
11
  slots: {};
@@ -1,6 +1,6 @@
1
1
  <script>import { Badge, Button } from '../../../common';
2
2
  import { Plus } from 'lucide-svelte';
3
- import { getContext } from 'svelte';
3
+ import { createEventDispatcher, getContext } from 'svelte';
4
4
  import Tooltip from '../../../Tooltip.svelte';
5
5
  import { BG_PREFIX, getAllScriptNames } from '../../utils';
6
6
  import PanelSection from '../settingsPanel/common/PanelSection.svelte';
@@ -10,6 +10,7 @@ import { tutorialsToDo } from '../../../../stores';
10
10
  import { ignoredTutorials } from '../../../tutorials/ignoredTutorials';
11
11
  import { tutorialInProgress } from '../../../../tutorialUtils';
12
12
  import DocLink from '../settingsPanel/DocLink.svelte';
13
+ import HideButton from '../settingsPanel/HideButton.svelte';
13
14
  const PREFIX = 'script-selector-';
14
15
  const { app, selectedComponent } = getContext('AppViewerContext');
15
16
  const { selectedComponentInEditor } = getContext('AppEditorContext');
@@ -62,11 +63,22 @@ function createBackgroundScript() {
62
63
  selectScript(`${BG_PREFIX}${$app.hiddenInlineScripts.length - 1}`);
63
64
  }
64
65
  let appTutorials = undefined;
66
+ const dispatch = createEventDispatcher();
65
67
  </script>
66
68
 
67
69
  <PanelSection title="Runnables" id="app-editor-runnable-panel">
68
70
  <svelte:fragment slot="action">
69
- <DocLink docLink="https://www.windmill.dev/docs/apps/app-runnable-panel#creating-a-runnable" />
71
+ <div class="flex flex-row gap-1">
72
+ <HideButton
73
+ direction="bottom"
74
+ on:click={() => {
75
+ dispatch('hidePanel')
76
+ }}
77
+ />
78
+ <DocLink
79
+ docLink="https://www.windmill.dev/docs/apps/app-runnable-panel#creating-a-runnable"
80
+ />
81
+ </div>
70
82
  </svelte:fragment>
71
83
  <div class="w-full flex flex-col gap-6 py-1">
72
84
  <div>
@@ -3,6 +3,7 @@ declare const __propDef: {
3
3
  props: Record<string, never>;
4
4
  events: {
5
5
  reload: CustomEvent<any>;
6
+ hidePanel: CustomEvent<any>;
6
7
  } & {
7
8
  [evt: string]: CustomEvent<any>;
8
9
  };
@@ -347,7 +347,11 @@ function transformToFrontend() {
347
347
  />
348
348
  {:else if componentSettings.item.data.type === 'aggridcomponentee'}
349
349
  <GridAgGridLicenseKey bind:license={componentSettings.item.data.license} />
350
- <TableActions id={component.id} bind:components={componentSettings.item.data.actions} />
350
+ <TableActions
351
+ id={component.id}
352
+ bind:components={componentSettings.item.data.actions}
353
+ bind:actionsOrder={componentSettings.item.data.actionsOrder}
354
+ />
351
355
  {:else if componentSettings.item.data.type === 'agchartscomponentee'}
352
356
  <GridAgChartsLicenseKe bind:license={componentSettings.item.data.license} />
353
357
  {:else if componentSettings.item.data.type === 'steppercomponent'}
@@ -378,14 +382,30 @@ function transformToFrontend() {
378
382
  bind:component={componentSettings.item.data}
379
383
  />
380
384
  {:else if componentSettings.item.data.type === 'aggridcomponent'}
381
- <TableActions id={component.id} bind:components={componentSettings.item.data.actions} />
385
+ <TableActions
386
+ id={component.id}
387
+ bind:components={componentSettings.item.data.actions}
388
+ bind:actionsOrder={componentSettings.item.data.actionsOrder}
389
+ />
382
390
  {:else if componentSettings.item.data.type === 'aggridinfinitecomponent'}
383
- <TableActions id={component.id} bind:components={componentSettings.item.data.actions} />
391
+ <TableActions
392
+ id={component.id}
393
+ bind:components={componentSettings.item.data.actions}
394
+ bind:actionsOrder={componentSettings.item.data.actionsOrder}
395
+ />
384
396
  {:else if componentSettings.item.data.type === 'aggridinfinitecomponentee'}
385
397
  <GridAgGridLicenseKey bind:license={componentSettings.item.data.license} />
386
- <TableActions id={component.id} bind:components={componentSettings.item.data.actions} />
398
+ <TableActions
399
+ id={component.id}
400
+ bind:components={componentSettings.item.data.actions}
401
+ bind:actionsOrder={componentSettings.item.data.actionsOrder}
402
+ />
387
403
  {:else if componentSettings.item.data.type === 'dbexplorercomponent'}
388
- <TableActions id={component.id} bind:components={componentSettings.item.data.actions} />
404
+ <TableActions
405
+ id={component.id}
406
+ bind:components={componentSettings.item.data.actions}
407
+ bind:actionsOrder={componentSettings.item.data.actionsOrder}
408
+ />
389
409
  {:else if componentSettings.item.data.type === 'tablecomponent' && Array.isArray(componentSettings.item.data.actionButtons)}
390
410
  <TableActions id={component.id} bind:components={componentSettings.item.data.actionButtons} />
391
411
  {:else if componentSettings.item.data.type === 'menucomponent' && Array.isArray(componentSettings.item.data.menuItems)}
@@ -0,0 +1,47 @@
1
+ <script>import Popover from '../../../Popover.svelte';
2
+ import { ButtonType } from '../../../common';
3
+ import Button from '../../../common/button/Button.svelte';
4
+ import { getModifierKey } from '../../../../utils';
5
+ import { PanelBottomClose, PanelLeftClose, PanelRightClose } from 'lucide-svelte';
6
+ import { twMerge } from 'tailwind-merge';
7
+ export let btnClasses = undefined;
8
+ export let size = 'xs';
9
+ export let direction = 'right';
10
+ export let hidden = false;
11
+ const IconMap = {
12
+ left: PanelLeftClose,
13
+ right: PanelRightClose,
14
+ bottom: PanelBottomClose
15
+ };
16
+ const shortcuts = {
17
+ left: 'B',
18
+ right: 'U',
19
+ bottom: 'L'
20
+ };
21
+ </script>
22
+
23
+ <Popover>
24
+ <svelte:fragment slot="text">
25
+ <div class="flex flex-row gap-1">
26
+ {hidden ? 'Show' : 'Hide '} the {direction} panel.
27
+
28
+ <div class="flex flex-row items-center !text-md opacity-60 gap-0 font-normal">
29
+ {getModifierKey()}{shortcuts[direction]}
30
+ </div>
31
+ </div>
32
+ </svelte:fragment>
33
+ <Button
34
+ iconOnly
35
+ startIcon={{
36
+ icon: IconMap[direction]
37
+ }}
38
+ {size}
39
+ btnClasses={twMerge(
40
+ 'p-1 text-gray-300 hover:!text-gray-600 dark:text-gray-500 dark:hover:!text-gray-200 bg-transparent',
41
+ hidden ? 'bg-surface-selected !text-primary' : '',
42
+ btnClasses
43
+ )}
44
+ on:click
45
+ color="light"
46
+ />
47
+ </Popover>
@@ -0,0 +1,22 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import { ButtonType } from '../../../common';
3
+ declare const __propDef: {
4
+ props: {
5
+ btnClasses?: string | undefined;
6
+ size?: ButtonType.Size | undefined;
7
+ direction?: "bottom" | "right" | "left" | undefined;
8
+ hidden?: boolean | undefined;
9
+ };
10
+ events: {
11
+ click: CustomEvent<any>;
12
+ } & {
13
+ [evt: string]: CustomEvent<any>;
14
+ };
15
+ slots: {};
16
+ };
17
+ export type HideButtonProps = typeof __propDef.props;
18
+ export type HideButtonEvents = typeof __propDef.events;
19
+ export type HideButtonSlots = typeof __propDef.slots;
20
+ export default class HideButton extends SvelteComponent<HideButtonProps, HideButtonEvents, HideButtonSlots> {
21
+ }
22
+ export {};
@@ -5,11 +5,14 @@ import { classNames, generateRandomString } from '../../../../utils';
5
5
  import { getContext, onMount } from 'svelte';
6
6
  import { appComponentFromType } from '../appUtils';
7
7
  import PanelSection from './common/PanelSection.svelte';
8
- import { GripVertical, Inspect, List, ToggleRightIcon } from 'lucide-svelte';
8
+ import { GripVertical, Inspect, List, ToggleRightIcon, ListOrdered } from 'lucide-svelte';
9
9
  import { dragHandle, dragHandleZone } from '@windmill-labs/svelte-dnd-action';
10
10
  import CloseButton from '../../../common/CloseButton.svelte';
11
11
  import { flip } from 'svelte/animate';
12
+ import TableActionsWizard from '../../../wizards/TableActionsWizard.svelte';
13
+ import Alert from '../../../common/alert/Alert.svelte';
12
14
  export let components;
15
+ export let actionsOrder = undefined;
13
16
  // Migration code:
14
17
  onMount(() => {
15
18
  if (components === undefined) {
@@ -65,6 +68,23 @@ function handleFinalize(e) {
65
68
 
66
69
  {#if components}
67
70
  <PanelSection title={`Table Actions`}>
71
+ <svelte:fragment slot="action">
72
+ <TableActionsWizard bind:actionsOrder selectedId={$selectedComponent?.[0] ?? ''} {components}>
73
+ <svelte:fragment slot="trigger">
74
+ <Button
75
+ color="light"
76
+ size="xs2"
77
+ nonCaptureEvent={true}
78
+ btnClasses={actionsOrder ? 'bg-blue-100 dark:bg-blue-900' : 'text-primary'}
79
+ title="Edit order programmatically"
80
+ >
81
+ <div class="flex flex-row items-center gap-2 text-xs font-normal">
82
+ <ListOrdered size={16} />
83
+ </div>
84
+ </Button>
85
+ </svelte:fragment>
86
+ </TableActionsWizard>
87
+ </svelte:fragment>
68
88
  {#if components.length == 0}
69
89
  <span class="text-xs text-tertiary">No action buttons</span>
70
90
  {/if}
@@ -116,9 +136,11 @@ function handleFinalize(e) {
116
136
  <CloseButton small on:close={() => deleteComponent(component.id, index)} />
117
137
  </div>
118
138
  </div>
119
- <div use:dragHandle class="handle w-4 h-4" aria-label="drag-handle">
120
- <GripVertical size={16} />
121
- </div>
139
+ {#if actionsOrder === undefined}
140
+ <div use:dragHandle class="handle w-4 h-4" aria-label="drag-handle">
141
+ <GripVertical size={16} />
142
+ </div>
143
+ {/if}
122
144
  </div>
123
145
  {/each}
124
146
  </section>
@@ -155,5 +177,22 @@ function handleFinalize(e) {
155
177
  + <List size={14} />
156
178
  </Button>
157
179
  </div>
180
+ <div class="w-full flex flex-col">
181
+ {#if actionsOrder}
182
+ <Alert size="xs" title="Order managed programmatically" type="info">
183
+ Actions order is managed programmatically. Adding or removing an action will require you
184
+ to update the order manually.
185
+ <Button
186
+ btnClasses="mt-2"
187
+ size="xs2"
188
+ on:click={() => {
189
+ actionsOrder = undefined
190
+ }}
191
+ >
192
+ Disable order management
193
+ </Button>
194
+ </Alert>
195
+ {/if}
196
+ </div>
158
197
  </PanelSection>
159
198
  {/if}
@@ -1,9 +1,10 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import type { BaseAppComponent } from '../../types';
2
+ import type { BaseAppComponent, RichConfiguration } from '../../types';
3
3
  import type { ButtonComponent, CheckboxComponent, SelectComponent } from '../component';
4
4
  declare const __propDef: {
5
5
  props: {
6
6
  components: (BaseAppComponent & (ButtonComponent | CheckboxComponent | SelectComponent))[] | undefined;
7
+ actionsOrder?: RichConfiguration | undefined;
7
8
  id: string;
8
9
  };
9
10
  events: {
@@ -1,4 +1,5 @@
1
- <script>import SimpleEditor from '../../../../SimpleEditor.svelte';
1
+ <script>import '@codingame/monaco-vscode-standalone-json-language-features';
2
+ import SimpleEditor from '../../../../SimpleEditor.svelte';
2
3
  export let code;
3
4
  export let value = undefined;
4
5
  export let error = '';
@@ -1,4 +1,5 @@
1
1
  import { SvelteComponent } from "svelte";
2
+ import '@codingame/monaco-vscode-standalone-json-language-features';
2
3
  import SimpleEditor from '../../../../SimpleEditor.svelte';
3
4
  declare const __propDef: {
4
5
  props: {
@@ -93,7 +93,9 @@ const updateMatrix = ({ detail }) => {
93
93
  ...shadows[id]
94
94
  }
95
95
  };
96
- sortedItems = moveItem(activeItem, sortedItems, getComputedCols);
96
+ let { items, overlap } = moveItem(activeItem, sortedItems, getComputedCols);
97
+ sortedItems = items;
98
+ overlapped = overlap ? id : undefined;
97
99
  }
98
100
  }
99
101
  for (let id of nselectedIds ?? []) {
@@ -140,6 +142,7 @@ export function handleInitMove({ detail }) {
140
142
  }
141
143
  });
142
144
  }
145
+ let overlapped = undefined;
143
146
  </script>
144
147
 
145
148
  <div class="svlt-grid-container" style="height: {containerHeight}px" bind:this={container}>
@@ -169,9 +172,10 @@ export function handleInitMove({ detail }) {
169
172
  {sensor}
170
173
  container={scroller}
171
174
  nativeContainer={container}
175
+ {overlapped}
172
176
  >
173
177
  {#if item[getComputedCols]}
174
- <slot dataItem={item} hidden={false} />
178
+ <slot dataItem={item} hidden={false} {overlapped} />
175
179
  {/if}
176
180
  </MoveResize>
177
181
  {/if}
@@ -32,6 +32,7 @@ declare class __sveltets_Render<T> {
32
32
  default: {
33
33
  dataItem: FilledItem<T>;
34
34
  hidden: boolean;
35
+ overlapped: undefined;
35
36
  };
36
37
  };
37
38
  }
@@ -1,5 +1,6 @@
1
1
  <script>import { createEventDispatcher, getContext, onMount } from 'svelte';
2
2
  import { writable } from 'svelte/store';
3
+ import { twMerge } from 'tailwind-merge';
3
4
  const dispatch = createEventDispatcher();
4
5
  export let sensor;
5
6
  export let width;
@@ -17,6 +18,7 @@ export let cols;
17
18
  export let nativeContainer;
18
19
  export let onTop;
19
20
  export let shadow = undefined;
21
+ export let overlapped = undefined;
20
22
  const ctx = getContext('AppEditorContext');
21
23
  const { mode } = getContext('AppViewerContext');
22
24
  const scale = ctx ? ctx.scale : writable(100);
@@ -313,7 +315,10 @@ const resizePointerUp = (e) => {
313
315
 
314
316
  {#if xPerPx > 0 && (active || trans) && shadow}
315
317
  <div
316
- class="svlt-grid-shadow shadow-active"
318
+ class={twMerge(
319
+ 'svlt-grid-shadow shadow-active',
320
+ overlapped ? 'svlte-grid-shadow-forbidden' : ''
321
+ )}
317
322
  style="width: {shadow.w * xPerPx - gapX * 2}px; height: {shadow.h * yPerPx -
318
323
  gapY * 2}px; transform: translate({shadow.x * xPerPx + gapX}px, {shadow.y * yPerPx +
319
324
  gapY}px); "
@@ -399,9 +404,12 @@ const resizePointerUp = (e) => {
399
404
 
400
405
  .svlt-grid-shadow {
401
406
  position: absolute;
402
- background: red;
403
407
  will-change: transform;
404
- background: pink;
405
408
  backface-visibility: hidden;
406
409
  -webkit-backface-visibility: hidden;
410
+ background: #93c4fdd0;
411
+ }
412
+
413
+ .svlte-grid-shadow-forbidden {
414
+ background: rgba(255, 99, 71, 0.2) !important;
407
415
  }</style>
@@ -22,6 +22,7 @@ declare const __propDef: {
22
22
  w: number;
23
23
  h: number;
24
24
  } | undefined;
25
+ overlapped?: string | undefined;
25
26
  inActivate?: (() => void) | undefined;
26
27
  initmove?: (() => void) | undefined;
27
28
  updateMove?: ((newCoordDiff: any, clientY: any) => void) | undefined;
@@ -5,7 +5,10 @@ export declare function findFreeSpaceForItem<T>(matrix: FilledItem<T>[][], item:
5
5
  x: number;
6
6
  y: number;
7
7
  };
8
- export declare function moveItem(active: any, items: any, cols: any): any;
8
+ export declare function moveItem(active: any, items: any, cols: any): {
9
+ items: any;
10
+ overlap: boolean;
11
+ };
9
12
  export declare function normalize(items: any, col: any): any;
10
13
  export declare function adjust<T>(items: FilledItem<T>[], col: any): FilledItem<T>[];
11
14
  export declare function getUndefinedItems(items: any, col: any, breakpoints: any): any;
@@ -105,8 +105,12 @@ export function moveItem(active, items, cols) {
105
105
  // Getting whenever of these items is fixed
106
106
  const fixed = closeObj.find((value) => value[cols].fixed);
107
107
  // If found fixed, reset the active to its original position
108
- if (fixed)
109
- return items;
108
+ if (fixed) {
109
+ return {
110
+ items: items,
111
+ overlap: closeBlocks.length > 0
112
+ };
113
+ }
110
114
  // Update items
111
115
  items = updateItem(items, active, item, cols);
112
116
  // Create matrix of items expect close elements
@@ -130,7 +134,10 @@ export function moveItem(active, items, cols) {
130
134
  matrix = makeMatrixFromItemsIgnore(tempItems, getIgnoreItems, getRowsCount(tempItems, cols), cols);
131
135
  });
132
136
  // Return result
133
- return tempItems;
137
+ return {
138
+ items: tempItems,
139
+ overlap: false
140
+ };
134
141
  }
135
142
  // Helper function
136
143
  export function normalize(items, col) {
@@ -138,7 +145,7 @@ export function normalize(items, col) {
138
145
  result.forEach((value) => {
139
146
  const getItem = value[col];
140
147
  if (!getItem.static) {
141
- result = moveItem(getItem, result, col);
148
+ result = moveItem(getItem, result, col).items;
142
149
  }
143
150
  });
144
151
  return result;
@@ -1 +1 @@
1
- export declare function buildWorkerDefinition(...args: any[]): void;
1
+ export declare function buildWorkerDefinition(workerPath: string, basePath: string, ...args: any[]): void;
@@ -1,125 +1,10 @@
1
- // inline to make it a library component easy to be imported until this if fixed: https://github.com/vitejs/vite/pull/16418
2
- // import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker&inline'
3
- // import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker&inline'
4
- // import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker&inline'
5
- // import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker&inline'
6
- // import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker&inline'
7
- // import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker'
8
- // import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker'
9
- // import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'
10
- // import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'
11
- // import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'
12
- // import type { Environment } from 'monaco-editor/esm/vs/editor/editor.api.js'
13
- // interface MonacoEnvironmentEnhanced extends Environment {
14
- // workerOverrideGlobals: WorkerOverrideGlobals
15
- // }
16
- // type WorkerOverrideGlobals = {
17
- // basePath: string
18
- // workerPath: string
19
- // workerOptions: WorkerOptions
20
- // }
21
- // export function buildWorkerDefinition(
22
- // workerPath: string,
23
- // basePath: string,
24
- // useModuleWorker: boolean
25
- // ) {
26
- // const monWin = self as Window
27
- // const workerOverrideGlobals: WorkerOverrideGlobals = {
28
- // basePath: basePath,
29
- // workerPath: workerPath,
30
- // workerOptions: {
31
- // type: useModuleWorker ? 'module' : 'classic'
32
- // }
33
- // }
34
- // if (!monWin.MonacoEnvironment) {
35
- // monWin.MonacoEnvironment = {
36
- // workerOverrideGlobals: workerOverrideGlobals,
37
- // createTrustedTypesPolicy: (_policyName: string) => {
38
- // return undefined
39
- // }
40
- // } as MonacoEnvironmentEnhanced
41
- // }
42
- // const monEnv = monWin.MonacoEnvironment as MonacoEnvironmentEnhanced
43
- // monEnv.workerOverrideGlobals = workerOverrideGlobals
44
- // const getWorker = (_: string, label: string) => {
45
- // console.log('getWorker: workerId: ' + _ + ' label: ' + label)
46
- // switch (label) {
47
- // case 'template':
48
- // case 'typescript':
49
- // case 'javascript':
50
- // return new tsWorker()
51
- // case 'html':
52
- // case 'handlebars':
53
- // case 'razor':
54
- // return new htmlWorker()
55
- // case 'css':
56
- // case 'scss':
57
- // case 'less':
58
- // return new cssWorker()
59
- // case 'json':
60
- // return new jsonWorker()
61
- // case 'graphql':
62
- // const workerFilename = `graphql.worker.bundle.js`
63
- // const workerPathLocal = `${workerOverrideGlobals.workerPath}/${workerFilename}`
64
- // const workerUrl = new URL(workerPathLocal, workerOverrideGlobals.basePath)
65
- // return new Worker(workerUrl.href, {
66
- // name: label
67
- // })
68
- // default:
69
- // return new editorWorker()
70
- // }
71
- // }
72
- // monWin.MonacoEnvironment.getWorker = getWorker
73
- // }
74
- // //
75
- // export type WorkerLoader = () => Worker
76
- // const workerLoaders: Partial<Record<string, WorkerLoader>> = {
77
- // editorWorkerService: () =>
78
- // new Worker(new URL('monaco-editor/esm/vs/editor/editor.worker.js', import.meta.url), {
79
- // type: 'module'
80
- // }),
81
- // textMateWorker: () =>
82
- // new Worker(
83
- // new URL('@codingame/monaco-vscode-textmate-service-override/worker', import.meta.url),
84
- // { type: 'module' }
85
- // ),
86
- // languageDetectionWorkerService: () =>
87
- // new Worker(
88
- // new URL(
89
- // '@codingame/monaco-vscode-language-detection-worker-service-override/worker',
90
- // import.meta.url
91
- // ),
92
- // { type: 'module' }
93
- // )
94
- // }
95
- // export function registerWorkerLoader(label: string, workerLoader: WorkerLoader): void {
96
- // workerLoaders[label] = workerLoader
97
- // }
98
- // export function buildWorkerDefinition() {
99
- // // Do not use monaco-editor-webpack-plugin because it doesn't handle properly cross origin workers
100
- // window.MonacoEnvironment = {
101
- // getWorker: function (moduleId, label) {
102
- // console.log('LOAD')
103
- // const workerFactory = workerLoaders[label]
104
- // if (workerFactory != null) {
105
- // return workerFactory()
106
- // }
107
- // throw new Error(`Unimplemented worker ${label} (${moduleId})`)
108
- // }
109
- // }
110
- // }
111
- // import { graphql } from 'graphql'
112
- import { useWorkerFactory } from '@windmill-labs/monaco-editor-wrapper/workerFactory';
113
- import cssWorker from '@windmill-labs/monaco-editor-wrapper/workers/module/css?worker';
114
- import htmlWorker from '@windmill-labs/monaco-editor-wrapper/workers/module/html?worker';
115
- import tsWorker from '@windmill-labs/monaco-editor-wrapper/workers/module/ts?worker';
116
- import jsonWorker from '@windmill-labs/monaco-editor-wrapper/workers/module/json?worker';
117
- import editorWorker from '@windmill-labs/monaco-editor-wrapper/workers/module/editor?worker';
118
- // import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker'
119
- // import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'
120
- // import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'
121
- // import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'
122
- export function buildWorkerDefinition(...args) {
1
+ import { useWorkerFactory } from 'monaco-editor-wrapper/workerFactory';
2
+ import cssWorker from 'monaco-editor-wrapper/workers/module/css?worker';
3
+ import htmlWorker from 'monaco-editor-wrapper/workers/module/html?worker';
4
+ import tsWorker from 'monaco-editor-wrapper/workers/module/ts?worker';
5
+ import jsonWorker from 'monaco-editor-wrapper/workers/module/json?worker';
6
+ import editorWorker from 'monaco-editor-wrapper/workers/module/editor?worker';
7
+ export function buildWorkerDefinition(workerPath, basePath, ...args) {
123
8
  useWorkerFactory({
124
9
  ignoreMapping: true,
125
10
  workerLoaders: {
@@ -146,6 +31,15 @@ export function buildWorkerDefinition(...args) {
146
31
  css: () => {
147
32
  console.log('html');
148
33
  return new cssWorker();
34
+ },
35
+ graphql: () => {
36
+ console.log('graphql');
37
+ const workerFilename = `graphql.worker.bundle.js`;
38
+ const workerPathLocal = `${workerPath}/${workerFilename}`;
39
+ const workerUrl = new URL(workerPathLocal, basePath);
40
+ return new Worker(workerUrl.href, {
41
+ name: 'graphql'
42
+ });
149
43
  }
150
44
  }
151
45
  });
@@ -35,12 +35,12 @@ declare const __propDef: {
35
35
  } | undefined;
36
36
  dropdownItems?: {
37
37
  label: string;
38
- onClick?: (() => void) | undefined;
38
+ onClick?: ((e?: Event) => void) | undefined;
39
39
  href?: string | undefined;
40
40
  icon?: any;
41
41
  }[] | (() => {
42
42
  label: string;
43
- onClick?: (() => void) | undefined;
43
+ onClick?: ((e?: Event) => void) | undefined;
44
44
  href?: string | undefined;
45
45
  icon?: any;
46
46
  }[]) | undefined;