windmill-components 1.352.9 → 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 (208) 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 +3 -2
  28. package/package/components/ResourceEditorDrawer.svelte +4 -1
  29. package/package/components/ResourcePicker.svelte +1 -0
  30. package/package/components/RunChart.svelte +6 -3
  31. package/package/components/RunChart.svelte.d.ts +1 -0
  32. package/package/components/RunForm.svelte +24 -23
  33. package/package/components/RunForm.svelte.d.ts +0 -2
  34. package/package/components/SavedInputs.svelte +50 -39
  35. package/package/components/ScheduleEditorInner.svelte +26 -4
  36. package/package/components/ScriptBuilder.svelte +47 -22
  37. package/package/components/ScriptBuilder.svelte.d.ts +1 -0
  38. package/package/components/SearchItems.svelte +5 -4
  39. package/package/components/Summary.svelte +74 -0
  40. package/package/components/Summary.svelte.d.ts +16 -0
  41. package/package/components/apps/components/display/AppMarkdown.svelte +3 -2
  42. package/package/components/apps/components/display/AppMenu.svelte +2 -2
  43. package/package/components/apps/components/display/AppNavbar.svelte +94 -0
  44. package/package/components/apps/components/display/AppNavbar.svelte.d.ts +24 -0
  45. package/package/components/apps/components/display/AppNavbarItem.svelte +146 -0
  46. package/package/components/apps/components/display/AppNavbarItem.svelte.d.ts +27 -0
  47. package/package/components/apps/components/display/ResolveNavbarItemPath.svelte +21 -0
  48. package/package/components/apps/components/display/ResolveNavbarItemPath.svelte.d.ts +20 -0
  49. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +16 -0
  50. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +12 -16
  51. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +1 -0
  52. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +5 -0
  53. package/package/components/apps/components/display/table/AppAggridTable.svelte +28 -6
  54. package/package/components/apps/components/display/table/AppAggridTableActions.svelte +68 -43
  55. package/package/components/apps/components/inputs/AppDateSelect.svelte +284 -0
  56. package/package/components/apps/components/inputs/AppDateSelect.svelte.d.ts +21 -0
  57. package/package/components/apps/components/inputs/AppDateTimeInput.svelte +2 -0
  58. package/package/components/apps/components/inputs/AppFileInput.svelte +22 -27
  59. package/package/components/apps/components/inputs/AppFileInput.svelte.d.ts +1 -0
  60. package/package/components/apps/components/inputs/AppTextInput.svelte +1 -1
  61. package/package/components/apps/components/layout/AppDecisionTree.svelte +32 -30
  62. package/package/components/apps/components/layout/AppModal.svelte +17 -6
  63. package/package/components/apps/editor/AppDeploymentHistory.svelte +2 -3
  64. package/package/components/apps/editor/AppDeploymentHistory.svelte.d.ts +3 -2
  65. package/package/components/apps/editor/AppEditor.svelte +9 -2
  66. package/package/components/apps/editor/AppEditorHeader.svelte +7 -10
  67. package/package/components/apps/editor/AppPreview.svelte +12 -3
  68. package/package/components/apps/editor/AppPreview.svelte.d.ts +2 -0
  69. package/package/components/apps/editor/DecisionTreeDebug.svelte +92 -68
  70. package/package/components/apps/editor/DeploymentHistory.svelte +0 -2
  71. package/package/components/apps/editor/appUtils.d.ts +1 -0
  72. package/package/components/apps/editor/appUtils.js +17 -0
  73. package/package/components/apps/editor/component/Component.svelte +23 -0
  74. package/package/components/apps/editor/component/components.d.ts +205 -3
  75. package/package/components/apps/editor/component/components.js +160 -1
  76. package/package/components/apps/editor/component/default-codes.js +13 -13
  77. package/package/components/apps/editor/component/sets.js +4 -2
  78. package/package/components/apps/editor/componentsPanel/ComponentList.svelte +12 -12
  79. package/package/components/apps/editor/componentsPanel/cssUtils.js +39 -3
  80. package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +6 -0
  81. package/package/components/apps/editor/contextPanel/ComponentOutput.svelte +2 -2
  82. package/package/components/apps/editor/contextPanel/ContextPanel.svelte +6 -0
  83. package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +11 -0
  84. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +4 -0
  85. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +21 -8
  86. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +64 -20
  87. package/package/components/apps/editor/settingsPanel/ContextVariables.svelte +48 -15
  88. package/package/components/apps/editor/settingsPanel/ContextVariables.svelte.d.ts +1 -0
  89. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +25 -5
  90. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte +2 -1
  91. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte.d.ts +1 -0
  92. package/package/components/apps/editor/settingsPanel/DocLink.svelte +33 -0
  93. package/package/components/apps/editor/settingsPanel/DocLink.svelte.d.ts +19 -0
  94. package/package/components/apps/editor/settingsPanel/GridNavbar.svelte +192 -0
  95. package/package/components/apps/editor/settingsPanel/GridNavbar.svelte.d.ts +18 -0
  96. package/package/components/apps/editor/settingsPanel/GridTab.svelte +2 -2
  97. package/package/components/apps/editor/settingsPanel/RefreshDatabaseStudioTable.svelte +17 -0
  98. package/package/components/apps/editor/settingsPanel/RefreshDatabaseStudioTable.svelte.d.ts +16 -0
  99. package/package/components/apps/editor/settingsPanel/TableActions.svelte +81 -38
  100. package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +12 -5
  101. package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +11 -12
  102. package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +4 -2
  103. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +4 -1
  104. package/package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +7 -1
  105. package/package/components/apps/inputType.d.ts +2 -2
  106. package/package/components/apps/svelte-select/lib/Select.svelte +2 -3
  107. package/package/components/apps/types.d.ts +3 -0
  108. package/package/components/auditLogs/AuditLogsTable.svelte +2 -2
  109. package/package/components/common/CloseButton.svelte +10 -10
  110. package/package/components/common/CloseButton.svelte.d.ts +6 -14
  111. package/package/components/common/calendarPicker/CalendarPicker.svelte +5 -0
  112. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +2 -0
  113. package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +7 -1
  114. package/package/components/common/fileInput/FileInput.svelte +2 -0
  115. package/package/components/common/fileInput/FileInput.svelte.d.ts +1 -0
  116. package/package/components/common/popup/Popup.svelte +4 -3
  117. package/package/components/common/popup/Popup.svelte.d.ts +1 -0
  118. package/package/components/common/table/AppRow.svelte +3 -10
  119. package/package/components/common/table/FlowRow.svelte +12 -1
  120. package/package/components/copilot/IteratorGen.svelte +1 -1
  121. package/package/components/copilot/PredicateGen.svelte +1 -1
  122. package/package/components/copilot/StepInputGen.svelte +8 -3
  123. package/package/components/copilot/StepInputsGen.svelte +5 -2
  124. package/package/components/details/WebhooksPanel.svelte +32 -1
  125. package/package/components/details/WebhooksPanel.svelte.d.ts +2 -11
  126. package/package/components/flows/FlowHistory.svelte +208 -0
  127. package/package/components/flows/FlowHistory.svelte.d.ts +21 -0
  128. package/package/components/flows/content/FlowBranchesAllWrapper.svelte +1 -1
  129. package/package/components/flows/content/FlowBranchesOneWrapper.svelte +1 -1
  130. package/package/components/flows/content/FlowEditorPanel.svelte +1 -1
  131. package/package/components/flows/content/FlowLoop.svelte +23 -26
  132. package/package/components/flows/content/FlowModuleComponent.svelte +2 -18
  133. package/package/components/flows/content/FlowModuleEarlyStop.svelte +10 -4
  134. package/package/components/flows/content/FlowModuleHeader.svelte +3 -4
  135. package/package/components/flows/content/FlowModuleScript.svelte +1 -1
  136. package/package/components/flows/content/FlowModuleSleep.svelte +1 -0
  137. package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
  138. package/package/components/flows/content/SuspendDrawer.svelte +7 -7
  139. package/package/components/flows/flowStateUtils.js +2 -1
  140. package/package/components/flows/flowStore.js +1 -1
  141. package/package/components/flows/header/FlowImportExportMenu.svelte +3 -16
  142. package/package/components/flows/header/FlowImportExportMenu.svelte.d.ts +4 -1
  143. package/package/components/flows/map/FlowJobsMenu.svelte +69 -0
  144. package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +22 -0
  145. package/package/components/flows/map/FlowModuleSchemaItem.svelte +7 -4
  146. package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
  147. package/package/components/flows/map/MapItem.svelte +20 -0
  148. package/package/components/flows/map/MapItem.svelte.d.ts +9 -0
  149. package/package/components/flows/map/VirtualItem.svelte +4 -2
  150. package/package/components/flows/map/VirtualItem.svelte.d.ts +1 -0
  151. package/package/components/flows/previousResults.d.ts +9 -0
  152. package/package/components/flows/previousResults.js +42 -8
  153. package/package/components/flows/propPicker/PropPickerWrapper.svelte +2 -0
  154. package/package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +1 -0
  155. package/package/components/flows/types.d.ts +1 -1
  156. package/package/components/graph/FlowGraph.svelte +80 -42
  157. package/package/components/graph/FlowGraph.svelte.d.ts +1 -0
  158. package/package/components/graph/model.d.ts +6 -1
  159. package/package/components/graph/svelvet/container/controllers/middleware.js +4 -4
  160. package/package/components/graph/svelvet/container/views/GraphView.svelte +2 -0
  161. package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +24 -25
  162. package/package/components/graph/util.d.ts +1 -1
  163. package/package/components/graph/util.js +1 -2
  164. package/package/components/home/ItemsList.svelte +22 -19
  165. package/package/components/jobs/JobPreview.svelte +11 -2
  166. package/package/components/propertyPicker/PropPicker.svelte +30 -0
  167. package/package/components/propertyPicker/PropPickerResult.svelte +14 -1
  168. package/package/components/propertyPicker/PropPickerResult.svelte.d.ts +1 -0
  169. package/package/components/runs/JobLoader.svelte +21 -8
  170. package/package/components/runs/JobLoader.svelte.d.ts +2 -0
  171. package/package/components/runs/JobPreview.svelte +5 -1
  172. package/package/components/runs/RunRow.svelte +12 -8
  173. package/package/components/runs/RunsFilter.svelte +2 -4
  174. package/package/components/runs/RunsFilter.svelte.d.ts +0 -1
  175. package/package/components/runs/RunsTable.svelte +63 -29
  176. package/package/components/runs/RunsTable.svelte.d.ts +1 -0
  177. package/package/components/schema/EditableSchemaWrapper.svelte +9 -1
  178. package/package/components/schema/PropertyEditor.svelte +1 -1
  179. package/package/components/search/GlobalSearchModal.svelte +559 -0
  180. package/package/components/search/GlobalSearchModal.svelte.d.ts +17 -0
  181. package/package/components/search/QuickMenuItem.svelte +76 -0
  182. package/package/components/search/QuickMenuItem.svelte.d.ts +27 -0
  183. package/package/components/sidebar/MenuButton.svelte +11 -0
  184. package/package/components/sidebar/MenuButton.svelte.d.ts +4 -0
  185. package/package/components/sidebar/changelogs.js +35 -0
  186. package/package/components/wizards/AppPicker.svelte +68 -0
  187. package/package/components/wizards/AppPicker.svelte.d.ts +17 -0
  188. package/package/components/wizards/NavbarWizard.svelte +131 -0
  189. package/package/components/wizards/NavbarWizard.svelte.d.ts +19 -0
  190. package/package/defaults.d.ts +1 -1
  191. package/package/defaults.js +1 -1
  192. package/package/es6.d.ts.txt +370 -1
  193. package/package/gen/core/OpenAPI.js +1 -1
  194. package/package/gen/schemas.gen.d.ts +42 -3
  195. package/package/gen/schemas.gen.js +42 -3
  196. package/package/gen/services.gen.d.ts +80 -5
  197. package/package/gen/services.gen.js +149 -8
  198. package/package/gen/types.gen.d.ts +265 -11
  199. package/package/inferArgSig.js +4 -0
  200. package/package/script_helpers.d.ts +3 -3
  201. package/package/script_helpers.js +46 -22
  202. package/package/stores.d.ts +1 -1
  203. package/package/stores.js +1 -1
  204. package/package/utils.d.ts +7 -23
  205. package/package/utils.js +54 -33
  206. package/package/windmill_fetch.d.ts.txt +6 -6
  207. package/package.json +3 -11
  208. package/package/components/ContentSearch.svelte +0 -355
@@ -0,0 +1,16 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ value: string;
5
+ };
6
+ events: {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {};
10
+ };
11
+ export type SummaryProps = typeof __propDef.props;
12
+ export type SummaryEvents = typeof __propDef.events;
13
+ export type SummarySlots = typeof __propDef.slots;
14
+ export default class Summary extends SvelteComponent<SummaryProps, SummaryEvents, SummarySlots> {
15
+ }
16
+ export {};
@@ -7,6 +7,7 @@ import { classNames } from '../../../../utils';
7
7
  import { components } from '../../editor/component';
8
8
  import ResolveConfig from '../helpers/ResolveConfig.svelte';
9
9
  import ResolveStyle from '../helpers/ResolveStyle.svelte';
10
+ import { gfmPlugin } from 'svelte-exmarkdown/gfm';
10
11
  export let id;
11
12
  export let componentInput;
12
13
  export let initializing = undefined;
@@ -54,7 +55,7 @@ const proseMapping = {
54
55
  e?.preventDefault()
55
56
  }}
56
57
  class={classNames(
57
- 'h-full w-full overflow-y-auto prose',
58
+ 'h-full w-full overflow-y-auto prose max-w-full',
58
59
  resolvedConfig?.size ? proseMapping[resolvedConfig.size] : '',
59
60
  css?.container?.class,
60
61
  ' dark:prose-invert',
@@ -73,7 +74,7 @@ const proseMapping = {
73
74
  >
74
75
  {#if result}
75
76
  {#key result}
76
- <Markdown md={result} />
77
+ <Markdown md={result} plugins={[gfmPlugin()]} />
77
78
  {/key}
78
79
  {/if}
79
80
  </RunnableWrapper>
@@ -72,12 +72,12 @@ async function handleAfterIcon() {
72
72
  btnClasses={twMerge(
73
73
  css?.button?.class,
74
74
  'wm-button',
75
- 'wm-download-button',
75
+ 'wm-menu-button',
76
76
  resolvedConfig.fillContainer ? 'w-full h-full' : ''
77
77
  )}
78
78
  wrapperClasses={twMerge(
79
79
  'wm-button-container',
80
- 'wm-download-button-container',
80
+ 'wm-menu-button-container',
81
81
  resolvedConfig.fillContainer ? 'w-full h-full' : ''
82
82
  )}
83
83
  style={css?.button?.style}
@@ -0,0 +1,94 @@
1
+ <script>import { getContext } from 'svelte';
2
+ import { initConfig, initOutput } from '../../editor/appUtils';
3
+ import { initCss } from '../../utils';
4
+ import { components } from '../../editor/component';
5
+ import ResolveConfig from '../helpers/ResolveConfig.svelte';
6
+ import ResolveStyle from '../helpers/ResolveStyle.svelte';
7
+ import InitializeComponent from '../helpers/InitializeComponent.svelte';
8
+ import Popover from '../../../Popover.svelte';
9
+ import { twMerge } from 'tailwind-merge';
10
+ import AppNavbarItem from './AppNavbarItem.svelte';
11
+ export let id;
12
+ export let configuration;
13
+ export let customCss = undefined;
14
+ export let render;
15
+ export let navbarItems = [];
16
+ const { app, worldStore } = getContext('AppViewerContext');
17
+ let resolvedConfig = initConfig(components['navbarcomponent'].initialData.configuration, configuration);
18
+ let output = initOutput($worldStore, id, {
19
+ result: {
20
+ currentPath: undefined
21
+ }
22
+ });
23
+ let css = initCss($app.css?.navbarcomponent, customCss);
24
+ </script>
25
+
26
+ {#each Object.keys(components['navbarcomponent'].initialData.configuration) as key (key)}
27
+ <ResolveConfig
28
+ {id}
29
+ {key}
30
+ bind:resolvedConfig={resolvedConfig[key]}
31
+ configuration={configuration[key]}
32
+ />
33
+ {/each}
34
+
35
+ {#each Object.keys(css ?? {}) as key (key)}
36
+ <ResolveStyle
37
+ {id}
38
+ {customCss}
39
+ {key}
40
+ bind:css={css[key]}
41
+ componentStyle={$app.css?.navbarcomponent}
42
+ />
43
+ {/each}
44
+
45
+ <InitializeComponent {id} />
46
+ {#if render}
47
+ <div
48
+ class={twMerge(
49
+ resolvedConfig?.orientation === 'horizontal'
50
+ ? 'flex flex-row w-full items-center border-b px-4 gap-4 h-12'
51
+ : 'flex flex-col h-full items-start border-r px-8 gap-2 w-56 mt-4'
52
+ )}
53
+ >
54
+ {#if resolvedConfig.logo?.selected === 'yes'}
55
+ <img
56
+ on:pointerdown|preventDefault
57
+ src={resolvedConfig.logo?.configuration?.yes?.sourceKind == 'png encoded as base64'
58
+ ? 'data:image/png;base64,' + resolvedConfig.logo?.configuration?.yes?.source
59
+ : resolvedConfig.logo?.configuration?.yes?.sourceKind == 'jpeg encoded as base64'
60
+ ? 'data:image/jpeg;base64,' + resolvedConfig.logo?.configuration?.yes?.source
61
+ : resolvedConfig.logo?.configuration?.yes?.sourceKind == 'svg encoded as base64'
62
+ ? 'data:image/svg+xml;base64,' + resolvedConfig.logo?.configuration?.yes?.source
63
+ : resolvedConfig.logo?.configuration?.yes?.source}
64
+ alt={resolvedConfig.logo?.configuration?.yes?.altText}
65
+ style={css?.image?.style ?? ''}
66
+ class={twMerge(`w-auto h-8`, css?.image?.class, 'wm-image')}
67
+ />
68
+ {/if}
69
+ <div class="font-semibold">
70
+ {resolvedConfig?.title ?? 'No Title'}
71
+ </div>
72
+ <div
73
+ class={twMerge(
74
+ resolvedConfig?.orientation === 'horizontal'
75
+ ? 'flex flex-row gap-4 overflow-x-auto'
76
+ : 'flex flex-col gap-4 overflow-y-auto'
77
+ )}
78
+ >
79
+ {#each navbarItems ?? [] as navbarItem, index (index)}
80
+ <Popover notClickable disablePopup={!Boolean(navbarItem.caption)}>
81
+ <svelte:fragment slot="text">{navbarItem.caption}</svelte:fragment>
82
+ <AppNavbarItem
83
+ {navbarItem}
84
+ {id}
85
+ borderColor={resolvedConfig?.borderColor}
86
+ {index}
87
+ bind:output
88
+ orientation={resolvedConfig?.orientation}
89
+ />
90
+ </Popover>
91
+ {/each}
92
+ </div>
93
+ </div>
94
+ {/if}
@@ -0,0 +1,24 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { ComponentCustomCSS, RichConfigurations } from '../../types';
3
+ import { type NavbarItem } from '../../editor/component';
4
+ declare const __propDef: {
5
+ props: {
6
+ id: string;
7
+ configuration: RichConfigurations;
8
+ customCss?: ComponentCustomCSS<'navbarcomponent'> | undefined;
9
+ render: boolean;
10
+ navbarItems?: NavbarItem[] | undefined;
11
+ };
12
+ events: {
13
+ pointerdown: PointerEvent;
14
+ } & {
15
+ [evt: string]: CustomEvent<any>;
16
+ };
17
+ slots: {};
18
+ };
19
+ export type AppNavbarProps = typeof __propDef.props;
20
+ export type AppNavbarEvents = typeof __propDef.events;
21
+ export type AppNavbarSlots = typeof __propDef.slots;
22
+ export default class AppNavbar extends SvelteComponent<AppNavbarProps, AppNavbarEvents, AppNavbarSlots> {
23
+ }
24
+ export {};
@@ -0,0 +1,146 @@
1
+ <script context="module">import { writable } from 'svelte/store';
2
+ let selected = writable(undefined);
3
+ </script>
4
+
5
+ <script>import { getContext, onMount } from 'svelte';
6
+ import {} from '../../editor/component';
7
+ import Button from '../../../common/button/Button.svelte';
8
+ import { loadIcon } from '../icon';
9
+ import ResolveConfig from '../helpers/ResolveConfig.svelte';
10
+ import { twMerge } from 'tailwind-merge';
11
+ import ResolveNavbarItemPath from './ResolveNavbarItemPath.svelte';
12
+ export let navbarItem;
13
+ export let id;
14
+ export let borderColor = undefined;
15
+ export let index;
16
+ export let output;
17
+ export let orientation = undefined;
18
+ let icon;
19
+ $: navbarItem.icon && icon && handleIcon();
20
+ async function handleIcon() {
21
+ if (navbarItem.icon) {
22
+ icon = await loadIcon(navbarItem.icon, icon, 14, undefined, undefined);
23
+ }
24
+ }
25
+ const { appPath, replaceStateFn, gotoFn, isEditor, worldStore } = getContext('AppViewerContext');
26
+ let resolvedPath = undefined;
27
+ let resolvedLabel = undefined;
28
+ let resolvedDisabled = undefined;
29
+ let resolvedHidden = undefined;
30
+ function extractPathDetails() {
31
+ const url = window.location.pathname + window.location.search + window.location.hash;
32
+ const processedUrl = url.replace('/apps/edit/', '').replace('/apps/get/', '');
33
+ return processedUrl;
34
+ }
35
+ onMount(() => {
36
+ $selected = resolvedPath === extractPathDetails() ? resolvedPath : undefined;
37
+ });
38
+ let initialized = false;
39
+ function initSelection() {
40
+ initialized = true;
41
+ if ($selected)
42
+ return;
43
+ $selected = resolvedPath === extractPathDetails() ? resolvedPath : undefined;
44
+ }
45
+ $: !initialized && resolvedPath && initSelection();
46
+ function getButtonProps(resolvedPath) {
47
+ if (appPath && resolvedPath?.includes(appPath)) {
48
+ return {
49
+ onClick: () => {
50
+ output.result.set({ currentPath: resolvedPath ?? '' });
51
+ if (!resolvedPath)
52
+ return;
53
+ const url = new URL(resolvedPath, window.location.origin);
54
+ const queryParams = url.search;
55
+ const hash = url.hash;
56
+ replaceStateFn?.(`${window.location.pathname}${queryParams}${hash}`);
57
+ $worldStore.outputsById['ctx'].query.set(Object.fromEntries(new URLSearchParams(queryParams).entries()));
58
+ $worldStore.outputsById['ctx'].hash.set(url.hash);
59
+ $selected = resolvedPath === extractPathDetails() ? resolvedPath : undefined;
60
+ },
61
+ href: undefined,
62
+ target: undefined
63
+ };
64
+ }
65
+ else if (navbarItem.path.selected === 'app') {
66
+ if (isEditor) {
67
+ return {
68
+ href: `/apps/get/${resolvedPath}`,
69
+ target: '_blank',
70
+ onClick: undefined
71
+ };
72
+ }
73
+ else {
74
+ return {
75
+ onClick: () => {
76
+ if (resolvedPath) {
77
+ gotoFn?.(`/apps/get/${resolvedPath}`);
78
+ }
79
+ },
80
+ href: undefined,
81
+ target: undefined
82
+ };
83
+ }
84
+ }
85
+ else {
86
+ return {
87
+ href: resolvedPath,
88
+ target: '_blank',
89
+ onClick: undefined
90
+ };
91
+ }
92
+ }
93
+ $: buttonProps = getButtonProps(resolvedPath);
94
+ </script>
95
+
96
+ <ResolveNavbarItemPath {navbarItem} {id} {index} bind:resolvedPath />
97
+
98
+ <ResolveConfig
99
+ {id}
100
+ key={'label'}
101
+ extraKey={String(index)}
102
+ bind:resolvedConfig={resolvedLabel}
103
+ configuration={navbarItem.label}
104
+ />
105
+
106
+ <ResolveConfig
107
+ {id}
108
+ key={'disabled'}
109
+ extraKey={String(index)}
110
+ bind:resolvedConfig={resolvedDisabled}
111
+ configuration={navbarItem.disabled}
112
+ />
113
+
114
+ <ResolveConfig
115
+ {id}
116
+ key={'hidden'}
117
+ extraKey={String(index)}
118
+ bind:resolvedConfig={resolvedHidden}
119
+ configuration={navbarItem.hidden}
120
+ />
121
+
122
+ {#if !resolvedHidden}
123
+ <div
124
+ class={twMerge('py-2 border-b-2')}
125
+ style={`border-color: ${
126
+ $selected === resolvedPath ? borderColor ?? 'transparent' : 'transparent'
127
+ }`}
128
+ >
129
+ <Button
130
+ on:click={buttonProps.onClick}
131
+ href={buttonProps.href}
132
+ target={buttonProps.target ?? '_self'}
133
+ color="light"
134
+ size="xs"
135
+ disabled={resolvedDisabled}
136
+ btnClasses={orientation === 'vertical' ? '!justify-start !whitespace-normal !text-left' : ''}
137
+ >
138
+ {#if navbarItem.icon}
139
+ {#key navbarItem.icon}
140
+ <div class="min-w-4" bind:this={icon} />
141
+ {/key}
142
+ {/if}
143
+ {resolvedLabel ?? 'No Label'}
144
+ </Button>
145
+ </div>
146
+ {/if}
@@ -0,0 +1,27 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import { type NavbarItem } from '../../editor/component';
3
+ import type { Output } from '../../rx';
4
+ declare const __propDef: {
5
+ props: {
6
+ navbarItem: NavbarItem;
7
+ id: string;
8
+ borderColor?: string | undefined;
9
+ index: number;
10
+ output: {
11
+ result: Output<{
12
+ currentPath: string;
13
+ }>;
14
+ };
15
+ orientation?: 'horizontal' | 'vertical' | undefined;
16
+ };
17
+ events: {
18
+ [evt: string]: CustomEvent<any>;
19
+ };
20
+ slots: {};
21
+ };
22
+ export type AppNavbarItemProps = typeof __propDef.props;
23
+ export type AppNavbarItemEvents = typeof __propDef.events;
24
+ export type AppNavbarItemSlots = typeof __propDef.slots;
25
+ export default class AppNavbarItem extends SvelteComponent<AppNavbarItemProps, AppNavbarItemEvents, AppNavbarItemSlots> {
26
+ }
27
+ export {};
@@ -0,0 +1,21 @@
1
+ <script>import {} from '../../editor/component';
2
+ import ResolveConfig from '../helpers/ResolveConfig.svelte';
3
+ import { initConfig } from '../../editor/appUtils';
4
+ export let navbarItem;
5
+ export let id;
6
+ export let index;
7
+ export let resolvedPath = undefined;
8
+ let resolvedConfig = initConfig({ path: navbarItem.path }, { path: navbarItem.path });
9
+ $: resolvedPath = (resolvedConfig?.path?.selected === 'href'
10
+ ? resolvedConfig?.path?.configuration?.href?.href
11
+ : resolvedConfig?.path?.configuration?.app?.path +
12
+ (resolvedConfig?.path?.configuration?.app?.queryParamsOrHash ?? ''));
13
+ </script>
14
+
15
+ <ResolveConfig
16
+ {id}
17
+ key={'path'}
18
+ extraKey={String(index)}
19
+ bind:resolvedConfig={resolvedConfig.path}
20
+ configuration={navbarItem.path}
21
+ />
@@ -0,0 +1,20 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import { type NavbarItem } from '../../editor/component';
3
+ declare const __propDef: {
4
+ props: {
5
+ navbarItem: NavbarItem;
6
+ id: string;
7
+ index: number;
8
+ resolvedPath?: string | undefined;
9
+ };
10
+ events: {
11
+ [evt: string]: CustomEvent<any>;
12
+ };
13
+ slots: {};
14
+ };
15
+ export type ResolveNavbarItemPathProps = typeof __propDef.props;
16
+ export type ResolveNavbarItemPathEvents = typeof __propDef.events;
17
+ export type ResolveNavbarItemPathSlots = typeof __propDef.slots;
18
+ export default class ResolveNavbarItemPath extends SvelteComponent<ResolveNavbarItemPathProps, ResolveNavbarItemPathEvents, ResolveNavbarItemPathSlots> {
19
+ }
20
+ export {};
@@ -37,6 +37,9 @@ function clearColumns() {
37
37
  if (lastTable && !table) {
38
38
  lastTable = undefined;
39
39
  }
40
+ clearColumnDefs();
41
+ }
42
+ function clearColumnDefs() {
40
43
  const gridItem = findGridItem($app, id);
41
44
  if (!gridItem) {
42
45
  return;
@@ -170,6 +173,10 @@ let datasource = {
170
173
  if (!render) {
171
174
  return;
172
175
  }
176
+ if (!runnableComponent) {
177
+ params.successCallback([], 0);
178
+ return;
179
+ }
173
180
  runnableComponent?.runComponent(undefined, undefined, undefined, currentParams, {
174
181
  done: (items) => {
175
182
  let lastRow = -1;
@@ -298,6 +305,10 @@ async function listColumnsIfAvailable() {
298
305
  return o;
299
306
  });
300
307
  state = undefined;
308
+ // If in the mean time the table has changed, we don't want to update the columnDefs
309
+ if (lastTable !== table) {
310
+ return;
311
+ }
301
312
  //@ts-ignore
302
313
  gridItem.data.configuration.columnDefs = { value: ncols, type: 'static', loading: false };
303
314
  gridItem.data = gridItem.data;
@@ -489,6 +500,11 @@ let loading = false;
489
500
  on:update={onUpdate}
490
501
  on:delete={onDelete}
491
502
  allowColumnDefsActions={false}
503
+ on:recompute={() => {
504
+ lastTable = undefined
505
+ clearColumnDefs()
506
+ listColumnsIfAvailable()
507
+ }}
492
508
  {actions}
493
509
  />
494
510
  {/key}
@@ -26,6 +26,7 @@ export let result = undefined;
26
26
  export let allowColumnDefsActions = true;
27
27
  let inputs = {};
28
28
  const context = getContext('AppViewerContext');
29
+ const contextPanel = getContext('ContextPanel');
29
30
  const { app, selectedComponent, componentControl, darkMode } = context;
30
31
  let css = initCss($app.css?.aggridcomponent, customCss);
31
32
  let selectedRowIndex = -1;
@@ -90,6 +91,10 @@ $: actions && refreshActions(actions);
90
91
  const tableActionsFactory = cellRendererFactory((c, p) => {
91
92
  const rowIndex = p.node.rowIndex ?? 0;
92
93
  const row = p.data;
94
+ const componentContext = new Map([
95
+ ['AppViewerContext', context],
96
+ ['ContextPanel', contextPanel]
97
+ ]);
93
98
  new AppAggridTableActions({
94
99
  target: c.eGui,
95
100
  props: {
@@ -125,7 +130,7 @@ const tableActionsFactory = cellRendererFactory((c, p) => {
125
130
  outputs?.inputs.set(inputs, true);
126
131
  }
127
132
  },
128
- context: new Map([['AppViewerContext', context]])
133
+ context: componentContext
129
134
  });
130
135
  });
131
136
  function transformColumnDefs(columnDefs) {
@@ -170,7 +175,9 @@ function transformColumnDefs(columnDefs) {
170
175
  }
171
176
  if (actions && actions.length > 0) {
172
177
  r.push({
173
- headerName: 'Actions',
178
+ headerName: resolvedConfig?.customActionsHeader
179
+ ? resolvedConfig?.customActionsHeader
180
+ : 'Actions',
174
181
  cellRenderer: tableActionsFactory,
175
182
  autoHeight: true,
176
183
  cellStyle: { textAlign: 'center' },
@@ -251,6 +258,9 @@ function mountGrid() {
251
258
  agGrid: { api: e.api, columnApi: e.columnApi },
252
259
  setSelectedIndex: (index) => {
253
260
  e.api.getRowNode(index.toString())?.setSelected(true);
261
+ },
262
+ recompute: () => {
263
+ dispatch('recompute');
254
264
  }
255
265
  };
256
266
  api = e.api;
@@ -382,17 +392,3 @@ function updateOptions() {
382
392
  {/if}
383
393
  </div>
384
394
  </SyncColumnDefs>
385
-
386
- <style>
387
- .ag-theme-alpine {
388
- --ag-row-border-style: solid;
389
- --ag-border-color: rgb(209 213 219);
390
- --ag-header-border-style: solid;
391
- --ag-border-radius: 0;
392
- --ag-alpine-active-color: #d1d5db;
393
- }
394
-
395
- .ag-theme-alpine-dark {
396
- --ag-border-color: #4b5563;
397
- --ag-alpine-active-color: #64748b;
398
- }</style>
@@ -25,6 +25,7 @@ declare const __propDef: {
25
25
  events: {
26
26
  update: CustomEvent<any>;
27
27
  delete: CustomEvent<any>;
28
+ recompute: CustomEvent<any>;
28
29
  } & {
29
30
  [evt: string]: CustomEvent<any>;
30
31
  };
@@ -66,6 +66,11 @@ const datasource = {
66
66
  outputs.params.set(currentParams);
67
67
  if (!runnableComponent && result) {
68
68
  params.successCallback(result, result.length);
69
+ return;
70
+ }
71
+ if (!runnableComponent && !result) {
72
+ params.successCallback([], 0);
73
+ return;
69
74
  }
70
75
  runnableComponent?.runComponent(undefined, undefined, undefined, currentParams, {
71
76
  done: (items) => {
@@ -27,6 +27,7 @@ export let render;
27
27
  export let customCss = undefined;
28
28
  export let actions = undefined;
29
29
  const context = getContext('AppViewerContext');
30
+ const contextPanel = getContext('ContextPanel');
30
31
  const iterContext = getContext('ListWrapperContext');
31
32
  const listInputs = getContext('ListInputs');
32
33
  const { app, worldStore, selectedComponent, componentControl, darkMode } = context;
@@ -142,6 +143,10 @@ let inputs = {};
142
143
  const tableActionsFactory = cellRendererFactory((c, p) => {
143
144
  const rowIndex = p.node.rowIndex ?? 0;
144
145
  const row = p.data;
146
+ const componentContext = new Map([
147
+ ['AppViewerContext', context],
148
+ ['ContextPanel', contextPanel]
149
+ ]);
145
150
  new AppAggridTableActions({
146
151
  target: c.eGui,
147
152
  props: {
@@ -177,7 +182,7 @@ const tableActionsFactory = cellRendererFactory((c, p) => {
177
182
  outputs?.inputs.set(inputs, true);
178
183
  }
179
184
  },
180
- context: new Map([['AppViewerContext', context]])
185
+ context: componentContext
181
186
  });
182
187
  });
183
188
  function mountGrid() {
@@ -189,7 +194,9 @@ function mountGrid() {
189
194
  // Add the action column if actions are defined
190
195
  if (actions && actions.length > 0) {
191
196
  columnDefs.push({
192
- headerName: 'Actions',
197
+ headerName: resolvedConfig?.customActionsHeader
198
+ ? resolvedConfig?.customActionsHeader
199
+ : 'Actions',
193
200
  cellRenderer: tableActionsFactory,
194
201
  autoHeight: true,
195
202
  cellStyle: { textAlign: 'center' },
@@ -316,7 +323,9 @@ function updateOptions() {
316
323
  // Add the action column if actions are defined
317
324
  if (actions && actions.length > 0) {
318
325
  columnDefs.push({
319
- headerName: 'Actions',
326
+ headerName: resolvedConfig?.customActionsHeader
327
+ ? resolvedConfig?.customActionsHeader
328
+ : 'Actions',
320
329
  cellRenderer: tableActionsFactory,
321
330
  autoHeight: true,
322
331
  cellStyle: { textAlign: 'center' },
@@ -516,8 +525,8 @@ let footerRenderCount = 0;
516
525
  </SyncColumnDefs>
517
526
  </RunnableWrapper>
518
527
 
519
- <style>
520
- .ag-theme-alpine {
528
+ <style global>
529
+ :global(.ag-theme-alpine) {
521
530
  --ag-row-border-style: solid;
522
531
  --ag-border-color: rgb(209 213 219);
523
532
  --ag-header-border-style: solid;
@@ -525,7 +534,20 @@ let footerRenderCount = 0;
525
534
  --ag-alpine-active-color: #d1d5db;
526
535
  }
527
536
 
528
- .ag-theme-alpine-dark {
537
+ :global(.ag-theme-alpine-dark) {
529
538
  --ag-border-color: #4b5563;
530
539
  --ag-alpine-active-color: #64748b;
540
+ }
541
+
542
+ :global(.grid-cell-centered) {
543
+ display: flex;
544
+ align-items: center;
545
+ justify-content: center;
546
+ }
547
+ :global(.grid-cell-centered) :global(.svelte-select) {
548
+ height: 32px !important;
549
+ }
550
+
551
+ :global(.grid-cell-centered) :global(.selected-item) {
552
+ margin-top: -4px;
531
553
  }</style>