windmill-components 1.79.0 → 1.82.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 (204) hide show
  1. package/components/ArgInput.svelte +3 -0
  2. package/components/ArgInput.svelte.d.ts +1 -0
  3. package/components/DisplayResult.svelte +18 -15
  4. package/components/Multiselect.svelte.d.ts +2 -2
  5. package/components/SchemaEditor.svelte +15 -10
  6. package/components/SettingSection.svelte +1 -1
  7. package/components/Toggle.svelte +5 -2
  8. package/components/Toggle.svelte.d.ts +1 -0
  9. package/components/apps/components/buttons/AppButton.svelte +35 -56
  10. package/components/apps/components/buttons/AppButton.svelte.d.ts +2 -1
  11. package/components/apps/components/buttons/AppForm.svelte +24 -24
  12. package/components/apps/components/buttons/AppForm.svelte.d.ts +1 -1
  13. package/components/apps/components/buttons/AppFormButton.svelte +79 -94
  14. package/components/apps/components/buttons/AppFormButton.svelte.d.ts +1 -3
  15. package/components/apps/components/display/AppBarChart.svelte +2 -2
  16. package/components/apps/components/display/AppBarChart.svelte.d.ts +1 -1
  17. package/components/apps/components/display/AppDisplayComponent.svelte +2 -2
  18. package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +1 -1
  19. package/components/apps/components/display/AppHtml.svelte +10 -2
  20. package/components/apps/components/display/AppHtml.svelte.d.ts +1 -1
  21. package/components/apps/components/display/AppIcon.svelte +4 -1
  22. package/components/apps/components/display/AppIcon.svelte.d.ts +1 -1
  23. package/components/apps/components/display/AppImage.svelte +28 -15
  24. package/components/apps/components/display/AppImage.svelte.d.ts +1 -1
  25. package/components/apps/components/display/AppMap.svelte.d.ts +1 -1
  26. package/components/apps/components/display/AppPdf.svelte +3 -2
  27. package/components/apps/components/display/AppPdf.svelte.d.ts +1 -1
  28. package/components/apps/components/display/AppPieChart.svelte +2 -2
  29. package/components/apps/components/display/AppPieChart.svelte.d.ts +1 -1
  30. package/components/apps/components/display/AppScatterChart.svelte +2 -2
  31. package/components/apps/components/display/AppScatterChart.svelte.d.ts +1 -1
  32. package/components/apps/components/display/AppText.svelte +35 -22
  33. package/components/apps/components/display/AppText.svelte.d.ts +1 -1
  34. package/components/apps/components/display/AppTimeseries.svelte +2 -2
  35. package/components/apps/components/display/AppTimeseries.svelte.d.ts +1 -1
  36. package/components/apps/components/display/PlotlyHtml.svelte +3 -3
  37. package/components/apps/components/display/VegaLiteHtml.svelte +2 -2
  38. package/components/apps/components/display/table/AppAggridTable.svelte +1 -1
  39. package/components/apps/components/display/table/AppTable.svelte +40 -17
  40. package/components/apps/components/display/table/AppTable.svelte.d.ts +1 -1
  41. package/components/apps/components/helpers/HiddenComponent.svelte +6 -3
  42. package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +1 -1
  43. package/components/apps/components/helpers/InputValue.svelte +9 -9
  44. package/components/apps/components/helpers/Loader.svelte +18 -0
  45. package/components/apps/components/helpers/Loader.svelte.d.ts +18 -0
  46. package/components/apps/components/helpers/NonRunnableComponent.svelte +1 -12
  47. package/components/apps/components/helpers/ResolveConfig.svelte +29 -0
  48. package/components/apps/components/helpers/ResolveConfig.svelte.d.ts +21 -0
  49. package/components/apps/components/helpers/RunnableComponent.svelte +117 -89
  50. package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +14 -3
  51. package/components/apps/components/helpers/RunnableWrapper.svelte +50 -9
  52. package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +27 -2
  53. package/components/apps/components/inputs/AppCheckbox.svelte +1 -1
  54. package/components/apps/components/inputs/AppCheckbox.svelte.d.ts +1 -1
  55. package/components/apps/components/inputs/AppDateInput.svelte.d.ts +1 -1
  56. package/components/apps/components/inputs/AppFileInput.svelte.d.ts +1 -1
  57. package/components/apps/components/inputs/AppMultiSelect.svelte +0 -1
  58. package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +1 -1
  59. package/components/apps/components/inputs/AppNumberInput.svelte +1 -1
  60. package/components/apps/components/inputs/AppNumberInput.svelte.d.ts +1 -3
  61. package/components/apps/components/inputs/AppRangeInput.svelte +7 -1
  62. package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +2 -1
  63. package/components/apps/components/inputs/AppSelect.svelte +8 -3
  64. package/components/apps/components/inputs/AppSelect.svelte.d.ts +1 -1
  65. package/components/apps/components/inputs/AppSliderInputs.svelte +7 -1
  66. package/components/apps/components/inputs/AppSliderInputs.svelte.d.ts +2 -1
  67. package/components/apps/components/inputs/AppTextInput.svelte +4 -4
  68. package/components/apps/components/inputs/AppTextInput.svelte.d.ts +1 -3
  69. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +17 -19
  70. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +1 -1
  71. package/components/apps/components/layout/AppContainer.svelte +7 -4
  72. package/components/apps/components/layout/AppContainer.svelte.d.ts +1 -1
  73. package/components/apps/components/layout/AppDivider.svelte +4 -1
  74. package/components/apps/components/layout/AppDivider.svelte.d.ts +1 -1
  75. package/components/apps/components/layout/AppDrawer.svelte +7 -4
  76. package/components/apps/components/layout/AppDrawer.svelte.d.ts +1 -1
  77. package/components/apps/components/layout/AppSplitpanes.svelte +34 -21
  78. package/components/apps/components/layout/AppSplitpanes.svelte.d.ts +1 -3
  79. package/components/apps/components/layout/AppTabs.svelte +17 -34
  80. package/components/apps/components/layout/AppTabs.svelte.d.ts +1 -2
  81. package/components/apps/editor/AppEditor.svelte +17 -13
  82. package/components/apps/editor/AppEditorHeader.svelte +2 -3
  83. package/components/apps/editor/AppPreview.svelte +11 -17
  84. package/components/apps/editor/ComponentHeader.svelte +10 -8
  85. package/components/apps/editor/ComponentHeader.svelte.d.ts +0 -1
  86. package/components/apps/editor/GridEditor.svelte +21 -50
  87. package/components/apps/editor/GridEditor.svelte.d.ts +0 -2
  88. package/components/apps/editor/RecomputeAllComponents.svelte +13 -2
  89. package/components/apps/editor/SettingsPanel.svelte +103 -40
  90. package/components/apps/editor/SubGridEditor.svelte +32 -41
  91. package/components/apps/editor/SubGridEditor.svelte.d.ts +1 -2
  92. package/components/apps/editor/appUtils.d.ts +49 -7
  93. package/components/apps/editor/appUtils.js +133 -37
  94. package/components/apps/editor/component/Component.svelte +22 -11
  95. package/components/apps/editor/component/Component.svelte.d.ts +1 -2
  96. package/components/apps/editor/component/ComponentNavigation.svelte +19 -12
  97. package/components/apps/editor/component/README.md +4 -0
  98. package/components/apps/editor/component/components.d.ts +1550 -17
  99. package/components/apps/editor/component/components.js +295 -325
  100. package/components/apps/editor/component/default-codes.d.ts +1 -1
  101. package/components/apps/editor/component/default-codes.js +25 -25
  102. package/components/apps/editor/componentsPanel/ComponentList.svelte +18 -3
  103. package/components/apps/editor/componentsPanel/CssProperty.svelte +92 -50
  104. package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +8 -3
  105. package/components/apps/editor/componentsPanel/CssSettings.svelte +48 -90
  106. package/components/apps/editor/componentsPanel/ListItem.svelte +3 -0
  107. package/components/apps/editor/componentsPanel/ListItem.svelte.d.ts +2 -0
  108. package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte +167 -0
  109. package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte.d.ts +18 -0
  110. package/components/apps/editor/componentsPanel/QuickStyleProperty.svelte +130 -0
  111. package/components/apps/editor/componentsPanel/QuickStyleProperty.svelte.d.ts +21 -0
  112. package/components/apps/editor/componentsPanel/quickStyleProperties.d.ts +535 -0
  113. package/components/apps/editor/componentsPanel/quickStyleProperties.js +595 -0
  114. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +1 -1
  115. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +146 -130
  116. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +2 -1
  117. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +31 -3
  118. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +1 -0
  119. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +42 -76
  120. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +67 -17
  121. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte.d.ts +1 -3
  122. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelWithTable.svelte +27 -0
  123. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelWithTable.svelte.d.ts +17 -0
  124. package/components/apps/editor/inlineScriptsPanel/utils.d.ts +2 -0
  125. package/components/apps/editor/inlineScriptsPanel/utils.js +6 -5
  126. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +10 -2
  127. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +37 -31
  128. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +4 -104
  129. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +113 -67
  130. package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +5 -3
  131. package/components/apps/editor/settingsPanel/GridTab.svelte +0 -1
  132. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +99 -80
  133. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +8 -0
  134. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +25 -2
  135. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +1 -0
  136. package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +52 -0
  137. package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte.d.ts +28 -0
  138. package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +70 -26
  139. package/components/apps/editor/settingsPanel/SelectedRunnable.svelte.d.ts +2 -0
  140. package/components/apps/editor/settingsPanel/StylePanel.svelte +23 -0
  141. package/components/apps/editor/settingsPanel/StylePanel.svelte.d.ts +17 -0
  142. package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +7 -5
  143. package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +3 -2
  144. package/components/apps/editor/settingsPanel/TableActions.svelte +8 -63
  145. package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +12 -12
  146. package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte.d.ts +3 -4
  147. package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +3 -1
  148. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +2 -4
  149. package/components/apps/editor/settingsPanel/inputEditor/RunnableInputEditor.svelte +5 -5
  150. package/components/apps/editor/settingsPanel/inputEditor/RunnableInputEditor.svelte.d.ts +2 -0
  151. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +48 -32
  152. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +8 -2
  153. package/components/apps/editor/settingsPanel/inputEditor/TabSelectInput.svelte +46 -0
  154. package/components/apps/editor/settingsPanel/inputEditor/TabSelectInput.svelte.d.ts +20 -0
  155. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +7 -0
  156. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte.d.ts +1 -0
  157. package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +47 -0
  158. package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte.d.ts +14 -0
  159. package/components/apps/editor/settingsPanel/secondaryMenu/index.d.ts +2 -0
  160. package/components/apps/editor/settingsPanel/secondaryMenu/index.js +2 -0
  161. package/components/apps/editor/settingsPanel/secondaryMenu/menuStore.d.ts +12 -0
  162. package/components/apps/editor/settingsPanel/secondaryMenu/menuStore.js +10 -0
  163. package/components/apps/editor/settingsPanel/triggerLists/BackgroundScriptTriggerList.svelte +20 -70
  164. package/components/apps/editor/settingsPanel/triggerLists/BackgroundScriptTriggerList.svelte.d.ts +1 -0
  165. package/components/apps/editor/settingsPanel/triggerLists/ComponentTriggerList.svelte +14 -8
  166. package/components/apps/editor/settingsPanel/triggerLists/ComponentTriggerList.svelte.d.ts +5 -1
  167. package/components/apps/editor/settingsPanel/triggerLists/TriggerBadgesList.svelte +85 -27
  168. package/components/apps/editor/settingsPanel/triggerLists/TriggerBadgesList.svelte.d.ts +4 -6
  169. package/components/apps/gridUtils.js +1 -1
  170. package/components/apps/inputType.d.ts +12 -16
  171. package/components/apps/rx.d.ts +2 -0
  172. package/components/apps/rx.js +8 -2
  173. package/components/apps/svelte-grid/Grid.svelte +0 -4
  174. package/components/apps/svelte-grid/Grid.svelte.d.ts +1 -1
  175. package/components/apps/svelte-grid/MoveResize.svelte +24 -30
  176. package/components/apps/svelte-grid/MoveResize.svelte.d.ts +0 -4
  177. package/components/apps/svelte-grid/types.d.ts +1 -7
  178. package/components/apps/svelte-grid/utils/helper.js +6 -10
  179. package/components/apps/types.d.ts +22 -22
  180. package/components/apps/utils.d.ts +2 -2
  181. package/components/apps/utils.js +13 -11
  182. package/components/common/button/ButtonPopup.svelte +5 -2
  183. package/components/common/button/ButtonPopup.svelte.d.ts +5 -1
  184. package/components/common/button/ButtonPopupItem.svelte +2 -1
  185. package/components/common/button/ButtonPopupItem.svelte.d.ts +1 -0
  186. package/components/common/clearableInput/ClearableInput.svelte +56 -0
  187. package/components/common/clearableInput/ClearableInput.svelte.d.ts +28 -0
  188. package/components/common/index.d.ts +1 -0
  189. package/components/common/index.js +1 -0
  190. package/components/common/kbd/Kbd.svelte +4 -1
  191. package/components/common/kbd/Kbd.svelte.d.ts +6 -14
  192. package/components/common/menu/Menu.svelte +8 -2
  193. package/components/common/menu/Menu.svelte.d.ts +4 -1
  194. package/components/common/modal/AlwaysMountedModal.svelte +109 -0
  195. package/components/common/modal/AlwaysMountedModal.svelte.d.ts +22 -0
  196. package/components/common/skeleton/Skeleton.svelte +1 -1
  197. package/components/flows/flowStateUtils.js +8 -1
  198. package/package.json +672 -659
  199. package/utils.d.ts +1 -0
  200. package/utils.js +3 -0
  201. package/components/apps/editor/GridPanel.svelte +0 -31
  202. package/components/apps/editor/GridPanel.svelte.d.ts +0 -18
  203. package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +0 -12
  204. package/components/apps/editor/componentsPanel/componentStaticValues.js +0 -25
@@ -6,18 +6,19 @@ import { getAllScriptNames } from '../../utils';
6
6
  import PanelSection from '../settingsPanel/common/PanelSection.svelte';
7
7
  import { getAppScripts } from './utils';
8
8
  const PREFIX = 'script-selector-';
9
- export let selectedScriptComponentId = undefined;
10
9
  const { app, selectedComponent } = getContext('AppViewerContext');
10
+ const { selectedComponentInEditor } = getContext('AppEditorContext');
11
11
  function selectScript(id) {
12
- selectedScriptComponentId = id;
12
+ $selectedComponentInEditor = id;
13
13
  if (!id.startsWith('unused-') || !id.startsWith('bg_')) {
14
- $selectedComponent = selectedScriptComponentId;
14
+ $selectedComponent = $selectedComponentInEditor.split('_transformer')[0];
15
15
  }
16
16
  }
17
17
  $: runnables = getAppScripts($app.grid, $app.subgrids);
18
18
  // When selected component changes, update selectedScriptComponentId
19
- $: if ($selectedComponent != selectedScriptComponentId) {
20
- selectedScriptComponentId = $selectedComponent;
19
+ $: if ($selectedComponent != $selectedComponentInEditor &&
20
+ !$selectedComponentInEditor?.includes('_transformer')) {
21
+ $selectedComponentInEditor = $selectedComponent;
21
22
  }
22
23
  function createBackgroundScript() {
23
24
  let index = 0;
@@ -33,6 +34,7 @@ function createBackgroundScript() {
33
34
  $app.hiddenInlineScripts.push({
34
35
  name: newScriptPath,
35
36
  inlineScript: undefined,
37
+ autoRefresh: true,
36
38
  fields: {}
37
39
  });
38
40
  $app.hiddenInlineScripts = $app.hiddenInlineScripts;
@@ -47,11 +49,11 @@ function createBackgroundScript() {
47
49
  <div class="flex flex-col gap-2 w-full">
48
50
  {#if runnables.inline.length > 0}
49
51
  <div class="flex gap-1 flex-col ">
50
- {#each runnables.inline as { name, id }, index (index)}
52
+ {#each runnables.inline as { name, id, transformer }, index (index)}
51
53
  <button
52
54
  id={PREFIX + id}
53
- class="border flex gap-1 truncate font-normal justify-between w-full items-center py-1 px-2 rounded-sm duration-200
54
- {selectedScriptComponentId === id ? 'border-blue-500 bg-blue-100' : 'hover:bg-blue-50'}"
55
+ class="panel-item
56
+ {$selectedComponentInEditor === id ? 'border-blue-500 bg-blue-100' : 'hover:bg-blue-50'}"
55
57
  on:click={() => selectScript(id)}
56
58
  >
57
59
  <span class="text-2xs truncate">{name}</span>
@@ -59,6 +61,20 @@ function createBackgroundScript() {
59
61
  <Badge color="dark-indigo">{id}</Badge>
60
62
  </div>
61
63
  </button>
64
+ {#if transformer}
65
+ <div class="w-full pl-4">
66
+ <button
67
+ id={PREFIX + id + '_transformer'}
68
+ class="border flex gap-1 truncate font-normal justify-between w-full items-center px-2 py-0.5 rounded-sm duration-200;
69
+ {$selectedComponentInEditor === id + '_transformer'
70
+ ? 'border-blue-500 bg-blue-100'
71
+ : 'hover:bg-blue-50'}"
72
+ on:click={() => selectScript(id + '_transformer')}
73
+ >
74
+ <span class="text-2xs truncate">Transformer</span>
75
+ </button>
76
+ </div>
77
+ {/if}
62
78
  {/each}
63
79
  </div>
64
80
  {/if}
@@ -68,8 +84,8 @@ function createBackgroundScript() {
68
84
  {@const id = `unused-${index}`}
69
85
  <button
70
86
  id={PREFIX + id}
71
- class="border flex gap-1 truncate font-normal justify-between w-full items-center py-1 px-2 rounded-sm duration-200
72
- {selectedScriptComponentId === id ? 'border-blue-500 bg-blue-100' : 'hover:bg-blue-50'}"
87
+ class="panel-item
88
+ {$selectedComponentInEditor === id ? 'border-blue-500 bg-blue-100' : 'hover:bg-blue-50'}"
73
89
  on:click={() => selectScript(id)}
74
90
  >
75
91
  <span class="text-2xs truncate">{unusedInlineScript.name}</span>
@@ -88,16 +104,30 @@ function createBackgroundScript() {
88
104
  <div class="text-sm font-semibold truncate mb-1"> Workspace/Hub </div>
89
105
  <div class="flex flex-col gap-1 w-full">
90
106
  {#if runnables.imported.length > 0}
91
- {#each runnables.imported as { name, id }, index (index)}
107
+ {#each runnables.imported as { name, id, transformer }, index (index)}
92
108
  <button
93
109
  id={PREFIX + id}
94
- class="border flex gap-1 truncate font-normal justify-between w-full items-center py-1 px-2 rounded-sm duration-200
95
- {selectedScriptComponentId === id ? 'border-blue-500 bg-blue-100' : 'hover:bg-blue-50'}"
110
+ class="panel-item
111
+ {$selectedComponentInEditor === id ? 'border-blue-500 bg-blue-100' : 'hover:bg-blue-50'}"
96
112
  on:click={() => selectScript(id)}
97
113
  >
98
114
  <span class="text-2xs truncate">{name}</span>
99
115
  <Badge color="dark-indigo">{id}</Badge>
100
116
  </button>
117
+ {#if transformer}
118
+ <div class="w-full pl-4">
119
+ <button
120
+ id={PREFIX + id + '_transformer'}
121
+ class="border flex gap-1 truncate font-normal justify-between w-full items-center px-2 py-0.5 rounded-sm duration-200;
122
+ {$selectedComponentInEditor === id + '_transformer'
123
+ ? 'border-blue-500 bg-blue-100'
124
+ : 'hover:bg-blue-50'}"
125
+ on:click={() => selectScript(id + '_transformer')}
126
+ >
127
+ <span class="text-2xs truncate">Transformer</span>
128
+ </button>
129
+ </div>
130
+ {/if}
101
131
  {/each}
102
132
  {:else}
103
133
  <div class="text-xs text-gray-500">No imported scripts/flows</div>
@@ -106,8 +136,8 @@ function createBackgroundScript() {
106
136
  </div>
107
137
 
108
138
  <div>
109
- <div class="w-full flex justify-between items-center">
110
- <div class="text-sm font-semibold truncate mb-1">
139
+ <div class="w-full flex justify-between items-center mb-1">
140
+ <div class="text-sm font-semibold truncate">
111
141
  Background scripts
112
142
  <Tooltip class="mb-0.5">
113
143
  Background scripts are triggered upon global refresh or when their input changes. The
@@ -132,8 +162,8 @@ function createBackgroundScript() {
132
162
  {@const id = `bg_${index}`}
133
163
  <button
134
164
  id={PREFIX + id}
135
- class="border flex gap-1 truncate font-normal justify-between w-full items-center py-1 px-2 rounded-sm duration-200
136
- {selectedScriptComponentId === id ? 'border-blue-500 bg-blue-100' : 'hover:bg-blue-50'}"
165
+ class="panel-item
166
+ {$selectedComponentInEditor === id ? 'border-blue-500 bg-blue-100' : 'hover:bg-blue-50'}"
137
167
  on:click={() => selectScript(id)}
138
168
  >
139
169
  <span class="text-2xs truncate">{name}</span>
@@ -147,3 +177,23 @@ function createBackgroundScript() {
147
177
  </div>
148
178
  </div>
149
179
  </PanelSection>
180
+
181
+ <style>
182
+ .panel-item {
183
+ display: flex;
184
+ width: 100%;
185
+ align-items: center;
186
+ justify-content: space-between;
187
+ gap: 0.25rem;
188
+ overflow: hidden;
189
+ text-overflow: ellipsis;
190
+ white-space: nowrap;
191
+ border-radius: 0.125rem;
192
+ border-width: 1px;
193
+ padding-top: 0.25rem;
194
+ padding-bottom: 0.25rem;
195
+ padding-left: 0.5rem;
196
+ padding-right: 0.5rem;
197
+ font-weight: 400;
198
+ transition-duration: 200ms
199
+ }</style>
@@ -1,8 +1,6 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
- props: {
4
- selectedScriptComponentId?: string | undefined;
5
- };
3
+ props: Record<string, never>;
6
4
  events: {
7
5
  [evt: string]: CustomEvent<any>;
8
6
  };
@@ -0,0 +1,27 @@
1
+ <script>import { getContext } from 'svelte';
2
+ import InlineScriptEditorPanel from './InlineScriptEditorPanel.svelte';
3
+ const { selectedComponentInEditor } = getContext('AppEditorContext');
4
+ export let gridItem;
5
+ </script>
6
+
7
+ {#if gridItem?.data?.id === $selectedComponentInEditor || gridItem?.data?.id + '_transformer' === $selectedComponentInEditor}
8
+ <InlineScriptEditorPanel
9
+ defaultUserInput={gridItem.data?.type == 'formcomponent' ||
10
+ gridItem?.data?.type == 'formbuttoncomponent'}
11
+ id={gridItem.data.id}
12
+ transformer={$selectedComponentInEditor?.endsWith('_transformer')}
13
+ bind:componentInput={gridItem.data.componentInput}
14
+ />
15
+ {/if}
16
+
17
+ {#if gridItem?.data?.type === 'tablecomponent'}
18
+ {#each gridItem.data.actionButtons as actionButton, index (index)}
19
+ {#if actionButton?.id === $selectedComponentInEditor || actionButton?.id + '_transformer' === $selectedComponentInEditor}
20
+ <InlineScriptEditorPanel
21
+ id={actionButton.id}
22
+ transformer={$selectedComponentInEditor?.endsWith('_transformer')}
23
+ bind:componentInput={actionButton.componentInput}
24
+ />
25
+ {/if}
26
+ {/each}
27
+ {/if}
@@ -0,0 +1,17 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import type { GridItem } from '../../types';
3
+ declare const __propDef: {
4
+ props: {
5
+ gridItem: GridItem;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ };
12
+ export type InlineScriptsPanelWithTableProps = typeof __propDef.props;
13
+ export type InlineScriptsPanelWithTableEvents = typeof __propDef.events;
14
+ export type InlineScriptsPanelWithTableSlots = typeof __propDef.slots;
15
+ export default class InlineScriptsPanelWithTable extends SvelteComponentTyped<InlineScriptsPanelWithTableProps, InlineScriptsPanelWithTableEvents, InlineScriptsPanelWithTableSlots> {
16
+ }
17
+ export {};
@@ -5,10 +5,12 @@ export interface AppScriptsList {
5
5
  inline: {
6
6
  name: string;
7
7
  id: string;
8
+ transformer: boolean;
8
9
  }[];
9
10
  imported: {
10
11
  name: string;
11
12
  id: string;
13
+ transformer: boolean;
12
14
  }[];
13
15
  }
14
16
  export declare function computeFields(schema: Schema, defaultUserInput: boolean, fields: AppInputs): Record<string, import("../../inputType").StaticAppInput>;
@@ -37,17 +37,17 @@ function processGridItemRunnable(gridItem, list) {
37
37
  if (actionButton.componentInput?.type !== 'runnable') {
38
38
  return;
39
39
  }
40
- processRunnable(actionButton.componentInput.runnable, actionButton.id, list);
40
+ processRunnable(actionButton.componentInput.runnable, actionButton.componentInput.transformer, actionButton.id, list);
41
41
  });
42
42
  }
43
43
  if (componentInput?.type === 'runnable') {
44
- processRunnable(componentInput.runnable, gridItem.id, list);
44
+ processRunnable(componentInput.runnable, componentInput.transformer, gridItem.id, list);
45
45
  }
46
46
  }
47
47
  return list;
48
48
  }
49
49
  export function getAppScripts(grid, subgrids) {
50
- const scriptsList = grid.reduce((acc, gridComponent) => processGridItemRunnable(gridComponent, acc), { inline: [], imported: [] });
50
+ const scriptsList = grid.reduce((acc, gridComponent) => processGridItemRunnable(gridComponent, acc), { inline: [], imported: [], transformer: false });
51
51
  if (subgrids) {
52
52
  Object.values(subgrids).forEach((subgrid) => {
53
53
  subgrid.forEach((subgridComponent) => {
@@ -57,13 +57,14 @@ export function getAppScripts(grid, subgrids) {
57
57
  }
58
58
  return scriptsList;
59
59
  }
60
- function processRunnable(runnable, id, list) {
60
+ function processRunnable(runnable, transformer, id, list) {
61
61
  if (runnable?.type === undefined) {
62
62
  return;
63
63
  }
64
64
  const type = runnable.type === 'runnableByPath' ? 'imported' : 'inline';
65
65
  list[type].push({
66
66
  name: runnable[runnable.type === 'runnableByPath' ? 'path' : 'name'],
67
- id
67
+ id,
68
+ transformer: transformer !== undefined
68
69
  });
69
70
  }
@@ -1,6 +1,8 @@
1
1
  <script>import { ToggleButton, ToggleButtonGroup } from '../../../common';
2
2
  import { AlignCenterHorizontal, AlignCenterVertical, AlignEndHorizontal, AlignEndVertical, AlignStartHorizontal, AlignStartVertical } from 'lucide-svelte';
3
+ import { getContext } from 'svelte';
3
4
  import PanelSection from './common/PanelSection.svelte';
5
+ const { app } = getContext('AppViewerContext');
4
6
  export let component;
5
7
  </script>
6
8
 
@@ -11,7 +13,10 @@ export let component;
11
13
  <div class="flex flex-col gap-0.5">
12
14
  <div class="text-xs font-semibold">Horizontal</div>
13
15
  <div>
14
- <ToggleButtonGroup bind:selected={component.horizontalAlignment}>
16
+ <ToggleButtonGroup
17
+ on:selected={() => (component = component)}
18
+ bind:selected={component.horizontalAlignment}
19
+ >
15
20
  <ToggleButton position="left" value="left" size="xs">
16
21
  <AlignStartVertical size={16} />
17
22
  </ToggleButton>
@@ -29,7 +34,10 @@ export let component;
29
34
  <div class="flex flex-col gap-0.5">
30
35
  <div class="text-xs font-semibold">Vertical</div>
31
36
  <div>
32
- <ToggleButtonGroup bind:selected={component.verticalAlignment}>
37
+ <ToggleButtonGroup
38
+ on:selected={() => ($app = $app)}
39
+ bind:selected={component.verticalAlignment}
40
+ >
33
41
  <ToggleButton position="left" value="top" size="xs">
34
42
  <AlignStartHorizontal size={16} />
35
43
  </ToggleButton>
@@ -1,39 +1,49 @@
1
1
  <script>import { Button } from '../../../common';
2
2
  import { faPlus, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
3
+ import { X } from 'lucide-svelte';
3
4
  import { createEventDispatcher } from 'svelte';
4
- import { staticValues } from '../componentsPanel/componentStaticValues';
5
+ import { fade } from 'svelte/transition';
5
6
  import SubTypeEditor from './SubTypeEditor.svelte';
6
7
  export let componentInput;
8
+ export let subFieldType = undefined;
9
+ export let selectOptions = undefined;
7
10
  const dispatch = createEventDispatcher();
8
11
  function addElementByType() {
9
12
  if (!Array.isArray(componentInput.value)) {
10
13
  componentInput.value = [];
11
14
  }
12
- if (componentInput.subFieldType && componentInput.value) {
13
- if (componentInput.subFieldType === 'boolean') {
14
- componentInput.value.push(false);
15
+ let value = componentInput.value;
16
+ if (subFieldType) {
17
+ if (subFieldType === 'boolean') {
18
+ value.push(false);
15
19
  }
16
- else if (componentInput.subFieldType === 'number') {
17
- componentInput.value.push(0);
20
+ else if (subFieldType === 'number') {
21
+ value.push(0);
18
22
  }
19
- else if (componentInput.subFieldType === 'object') {
20
- componentInput.value.push({});
23
+ else if (subFieldType === 'object') {
24
+ value.push({});
21
25
  }
22
- else if (componentInput.subFieldType === 'labeledresource') {
23
- componentInput.value.push({ value: '', label: '' });
26
+ else if (subFieldType === 'labeledresource') {
27
+ value.push({ value: '', label: '' });
24
28
  }
25
- else if (componentInput.subFieldType === 'text' ||
26
- componentInput.subFieldType === 'textarea' ||
29
+ else if (subFieldType === 'tab-select') {
30
+ value.push({ id: '', index: 0 });
31
+ }
32
+ else if (subFieldType === 'text' ||
33
+ subFieldType === 'textarea' ||
27
34
  // TODO: Add support for these types
28
- componentInput.subFieldType === 'date' ||
29
- componentInput.subFieldType === 'time' ||
30
- componentInput.subFieldType === 'datetime') {
31
- componentInput.value.push('');
35
+ subFieldType === 'date' ||
36
+ subFieldType === 'time' ||
37
+ subFieldType === 'datetime') {
38
+ value.push('');
32
39
  }
33
- else if (componentInput.subFieldType === 'select') {
34
- componentInput.value.push(staticValues[componentInput.optionValuesKey][0]);
40
+ else if (subFieldType === 'select' && selectOptions) {
41
+ value.push(selectOptions[0]);
35
42
  }
36
43
  }
44
+ else {
45
+ value.push('');
46
+ }
37
47
  componentInput = componentInput;
38
48
  }
39
49
  function deleteElementByType(index) {
@@ -49,19 +59,15 @@ function deleteElementByType(index) {
49
59
  {#if Array.isArray(componentInput.value)}
50
60
  {#each componentInput.value as value, index (index)}
51
61
  <div class="flex flex-row gap-2 items-center relative">
52
- <SubTypeEditor bind:componentInput bind:value />
53
-
54
- <div class="absolute top-1 right-1">
55
- <Button
56
- size="xs"
57
- color="light"
58
- variant="border"
59
- on:click={() => deleteElementByType(index)}
60
- iconOnly
61
- btnClasses="!text-red-500"
62
- startIcon={{ icon: faTrashAlt }}
63
- />
64
- </div>
62
+ <SubTypeEditor {subFieldType} bind:componentInput bind:value />
63
+ <button
64
+ transition:fade|local={{ duration: 100 }}
65
+ class="z-10 rounded-full p-1 duration-200 hover:bg-gray-200"
66
+ aria-label="Remove item"
67
+ on:click|preventDefault|stopPropagation={() => deleteElementByType(index)}
68
+ >
69
+ <X size={14} />
70
+ </button>
65
71
  </div>
66
72
  {/each}
67
73
  {/if}
@@ -1,110 +1,10 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
+ import type { InputType, StaticInput, StaticOptions } from '../../inputType';
2
3
  declare const __propDef: {
3
4
  props: {
4
- componentInput: (import("../../inputType").StaticInput<string[]> & {
5
- fieldType: "array";
6
- subFieldType?: "text" | undefined;
7
- format?: string | undefined;
8
- fileUpload?: {
9
- accept: string;
10
- multiple?: boolean | undefined;
11
- convertTo?: import("../../../common/fileInput/model").ReadFileAs | undefined;
12
- } | undefined;
13
- }) | (import("../../inputType").StaticInput<string[]> & {
14
- fieldType: "array";
15
- subFieldType?: "textarea" | undefined;
16
- format?: string | undefined;
17
- fileUpload?: {
18
- accept: string;
19
- multiple?: boolean | undefined;
20
- convertTo?: import("../../../common/fileInput/model").ReadFileAs | undefined;
21
- } | undefined;
22
- }) | (import("../../inputType").StaticInput<number[]> & {
23
- fieldType: "array";
24
- subFieldType?: "number" | undefined;
25
- format?: string | undefined;
26
- fileUpload?: {
27
- accept: string;
28
- multiple?: boolean | undefined;
29
- convertTo?: import("../../../common/fileInput/model").ReadFileAs | undefined;
30
- } | undefined;
31
- }) | (import("../../inputType").StaticInput<boolean[]> & {
32
- fieldType: "array";
33
- subFieldType?: "boolean" | undefined;
34
- format?: string | undefined;
35
- fileUpload?: {
36
- accept: string;
37
- multiple?: boolean | undefined;
38
- convertTo?: import("../../../common/fileInput/model").ReadFileAs | undefined;
39
- } | undefined;
40
- }) | (import("../../inputType").StaticInput<string[]> & {
41
- fieldType: "array";
42
- subFieldType?: "date" | undefined;
43
- format?: string | undefined;
44
- fileUpload?: {
45
- accept: string;
46
- multiple?: boolean | undefined;
47
- convertTo?: import("../../../common/fileInput/model").ReadFileAs | undefined;
48
- } | undefined;
49
- }) | (import("../../inputType").StaticInput<string[]> & {
50
- fieldType: "array";
51
- subFieldType?: "time" | undefined;
52
- format?: string | undefined;
53
- fileUpload?: {
54
- accept: string;
55
- multiple?: boolean | undefined;
56
- convertTo?: import("../../../common/fileInput/model").ReadFileAs | undefined;
57
- } | undefined;
58
- }) | (import("../../inputType").StaticInput<string[]> & {
59
- fieldType: "array";
60
- subFieldType?: "datetime" | undefined;
61
- format?: string | undefined;
62
- fileUpload?: {
63
- accept: string;
64
- multiple?: boolean | undefined;
65
- convertTo?: import("../../../common/fileInput/model").ReadFileAs | undefined;
66
- } | undefined;
67
- }) | (import("../../inputType").StaticInput<object[]> & {
68
- fieldType: "array";
69
- subFieldType?: "object" | undefined;
70
- format?: string | undefined;
71
- fileUpload?: {
72
- accept: string;
73
- multiple?: boolean | undefined;
74
- convertTo?: import("../../../common/fileInput/model").ReadFileAs | undefined;
75
- } | undefined;
76
- }) | (import("../../inputType").StaticInput<string[]> & {
77
- fieldType: "array";
78
- subFieldType?: "select" | undefined;
79
- format?: string | undefined;
80
- fileUpload?: {
81
- accept: string;
82
- multiple?: boolean | undefined;
83
- convertTo?: import("../../../common/fileInput/model").ReadFileAs | undefined;
84
- } | undefined;
85
- } & {
86
- optionValuesKey: "buttonColorOptions" | "tabsKindOptions" | "buttonSizeOptions" | "tableSearchOptions" | "chartThemeOptions" | "textStyleOptions" | "currencyOptions" | "localeOptions" | "objectFitOptions" | "splitPanelOptions";
87
- }) | (import("../../inputType").StaticInput<string[]> & {
88
- fieldType: "array";
89
- subFieldType?: "select" | undefined;
90
- format?: string | undefined;
91
- fileUpload?: {
92
- accept: string;
93
- multiple?: boolean | undefined;
94
- convertTo?: import("../../../common/fileInput/model").ReadFileAs | undefined;
95
- } | undefined;
96
- } & {
97
- optionValuesKey: "buttonColorOptions" | "tabsKindOptions" | "buttonSizeOptions" | "tableSearchOptions" | "chartThemeOptions" | "textStyleOptions" | "currencyOptions" | "localeOptions" | "objectFitOptions" | "splitPanelOptions";
98
- }) | (import("../../inputType").StaticInput<object[]> & {
99
- fieldType: "array";
100
- subFieldType?: "labeledresource" | undefined;
101
- format?: string | undefined;
102
- fileUpload?: {
103
- accept: string;
104
- multiple?: boolean | undefined;
105
- convertTo?: import("../../../common/fileInput/model").ReadFileAs | undefined;
106
- } | undefined;
107
- });
5
+ componentInput: StaticInput<any[]>;
6
+ subFieldType?: InputType | undefined;
7
+ selectOptions?: StaticOptions['selectOptions'] | undefined;
108
8
  };
109
9
  events: {
110
10
  deleteArrayItem: CustomEvent<any>;