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
@@ -164,6 +164,7 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
164
164
  use:autosize
165
165
  rows="1"
166
166
  bind:value={description}
167
+ on:keydown|stopPropagation
167
168
  placeholder="Field description"
168
169
  />
169
170
  {#if type == 'string' && format != 'date-time'}
@@ -315,6 +316,7 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
315
316
  {autofocus}
316
317
  {disabled}
317
318
  use:autosize
319
+ on:keydown|stopPropagation
318
320
  style="max-height: {maxHeight}"
319
321
  on:input={() => {
320
322
  dispatch('input', { rawValue: value, isRaw: false })
@@ -390,6 +392,7 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
390
392
  }}
391
393
  on:blur={() => dispatch('blur')}
392
394
  use:autosize
395
+ on:keydown|stopPropagation
393
396
  type="text"
394
397
  {disabled}
395
398
  class="col-span-10 {valid
@@ -40,6 +40,7 @@ declare const __propDef: {
40
40
  focus?: (() => void) | undefined;
41
41
  };
42
42
  events: {
43
+ keydown: KeyboardEvent;
43
44
  focus: CustomEvent<any>;
44
45
  input: CustomEvent<any>;
45
46
  blur: CustomEvent<any>;
@@ -5,6 +5,7 @@ import { copyToClipboard, truncate } from '../utils';
5
5
  import { Button, Drawer, DrawerContent } from './common';
6
6
  import autosize from 'svelte-autosize';
7
7
  import { ClipboardCopy } from 'lucide-svelte';
8
+ import Portal from 'svelte-portal';
8
9
  export let result;
9
10
  export let requireHtmlApproval = false;
10
11
  let resultKind;
@@ -74,20 +75,22 @@ let payload = '';
74
75
  let jsonViewer;
75
76
  </script>
76
77
 
77
- <Drawer bind:this={jsonViewer} size="900px">
78
- <DrawerContent title="Expanded Result" on:close={jsonViewer.closeDrawer}>
79
- <svelte:fragment slot="actions">
80
- <Button
81
- on:click={() => copyToClipboard(JSON.stringify(result, null, 4))}
82
- color="light"
83
- size="xs"
84
- >
85
- <div class="flex gap-2 items-center">Copy to clipboard <ClipboardCopy /> </div>
86
- </Button>
87
- </svelte:fragment>
88
- <Highlight language={json} code={JSON.stringify(result, null, 4).replace(/\\n/g, '\n')} />
89
- </DrawerContent>
90
- </Drawer>
78
+ <Portal>
79
+ <Drawer bind:this={jsonViewer} size="900px">
80
+ <DrawerContent title="Expanded Result" on:close={jsonViewer.closeDrawer}>
81
+ <svelte:fragment slot="actions">
82
+ <Button
83
+ on:click={() => copyToClipboard(JSON.stringify(result, null, 4))}
84
+ color="light"
85
+ size="xs"
86
+ >
87
+ <div class="flex gap-2 items-center">Copy to clipboard <ClipboardCopy /> </div>
88
+ </Button>
89
+ </svelte:fragment>
90
+ <Highlight language={json} code={JSON.stringify(result, null, 4).replace(/\\n/g, '\n')} />
91
+ </DrawerContent>
92
+ </Drawer>
93
+ </Portal>
91
94
 
92
95
  <div class="inline-highlight">
93
96
  {#if result != undefined}
@@ -95,7 +98,7 @@ let jsonViewer;
95
98
  <div class="mb-2 text-gray-500 text-sm bg-gray-50/20">
96
99
  as JSON&nbsp;<input class="windmillapp" type="checkbox" bind:checked={forceJson} /></div
97
100
  >{/if}{#if typeof result == 'object' && Object.keys(result).length > 0}<div
98
- class="mb-2 min-w-[400px] text-sm text-gray-700 relative"
101
+ class="mb-2 min-w-[360px] text-sm text-gray-700 relative"
99
102
  >The result keys are: <b>{truncate(Object.keys(result).join(', '), 50)}</b>
100
103
  <div class="text-gray-500 text-sm absolute top-0 right-2">
101
104
  <button on:click={jsonViewer.openDrawer}>Expand JSON</button>
@@ -4,8 +4,8 @@
4
4
  export default class Multiselect extends SvelteComponentTyped<{
5
5
  value?: any[] | undefined;
6
6
  id?: string | undefined;
7
- readonly?: boolean | undefined;
8
7
  placeholder?: string | undefined;
8
+ readonly?: boolean | undefined;
9
9
  }, {
10
10
  [evt: string]: CustomEvent<any>;
11
11
  }, {
@@ -20,8 +20,8 @@ declare const __propDef: {
20
20
  props: {
21
21
  value?: any[] | undefined;
22
22
  id?: string | undefined;
23
- readonly?: boolean | undefined;
24
23
  placeholder?: string | undefined;
24
+ readonly?: boolean | undefined;
25
25
  };
26
26
  events: {
27
27
  [evt: string]: CustomEvent<any>;
@@ -9,6 +9,7 @@ import TableCustom from './TableCustom.svelte';
9
9
  import Toggle from './Toggle.svelte';
10
10
  import Tooltip from './Tooltip.svelte';
11
11
  import { flip } from 'svelte/animate';
12
+ import Portal from 'svelte-portal';
12
13
  const dispatch = createEventDispatcher();
13
14
  export let schema = emptySchema();
14
15
  if (!schema) {
@@ -166,8 +167,10 @@ let error = '';
166
167
  />
167
168
  <div class="ml-2">
168
169
  <Tooltip>
169
- Arguments can be edited either using the wizard, or by editing their JSON Schema,
170
- <a href="https://docs.windmill.dev/docs/reference/#script-parameters-to-json-schema">see docs</a>
170
+ Arguments can be edited either using the wizard, or by editing their JSON Schema,
171
+ <a href="https://docs.windmill.dev/docs/reference/#script-parameters-to-json-schema"
172
+ >see docs</a
173
+ >
171
174
  </Tooltip>
172
175
  </div>
173
176
  </div>
@@ -269,11 +272,13 @@ let error = '';
269
272
  </div>
270
273
  </div>
271
274
 
272
- <SchemaModal
273
- bind:this={schemaModal}
274
- bind:property={modalProperty}
275
- bind:error={argError}
276
- on:save={handleAddOrEditArgument}
277
- bind:editing
278
- bind:oldArgName
279
- />
275
+ <Portal>
276
+ <SchemaModal
277
+ bind:this={schemaModal}
278
+ bind:property={modalProperty}
279
+ bind:error={argError}
280
+ on:save={handleAddOrEditArgument}
281
+ bind:editing
282
+ bind:oldArgName
283
+ />
284
+ </Portal>
@@ -38,7 +38,7 @@ let showContent = !accordion;
38
38
  {/if}
39
39
  </div>
40
40
  {#if showContent}
41
- <div transition:slide={{ duration: 300 }}>
41
+ <div transition:slide|local={{ duration: 300 }}>
42
42
  <slot />
43
43
  </div>
44
44
  {/if}
@@ -5,6 +5,7 @@ export let checked = false;
5
5
  export let disabled = false;
6
6
  export let textClass = '';
7
7
  export let textStyle = '';
8
+ export let color = 'blue';
8
9
  export let size = 'sm';
9
10
  const id = (Math.random() + 1).toString(36).substring(10);
10
11
  const dispatch = createEventDispatcher();
@@ -20,7 +21,7 @@ const dispatch = createEventDispatcher();
20
21
  {#if Boolean(options?.left)}
21
22
  <span
22
23
  class={twMerge(
23
- 'ml-2 font-medium duration-200',
24
+ 'mr-2 font-medium duration-200',
24
25
  disabled ? 'text-gray-500' : 'text-gray-900',
25
26
  size === 'xs' ? 'text-xs' : 'text-sm',
26
27
  textClass
@@ -49,7 +50,9 @@ const dispatch = createEventDispatcher();
49
50
  class="w-11 h-6 bg-gray-200 rounded-full peer peer-focus:ring-4 peer-focus:ring-blue-300
50
51
  peer-checked:after:translate-x-full peer-checked:after:border-white after:content-['']
51
52
  after:absolute after:top-0.5 after:left-[2px] after:bg-white after:border-gray-300
52
- after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-blue-600"
53
+ after:border after:rounded-full after:h-5 after:w-5 after:transition-all {color == 'red'
54
+ ? 'peer-checked:bg-red-600'
55
+ : 'peer-checked:bg-blue-600'}"
53
56
  />
54
57
  </div>
55
58
  {#if Boolean(options?.right)}
@@ -10,6 +10,7 @@ declare const __propDef: {
10
10
  disabled?: boolean | undefined;
11
11
  textClass?: string | undefined;
12
12
  textStyle?: string | undefined;
13
+ color?: "blue" | "red" | undefined;
13
14
  size?: "xs" | "sm" | undefined;
14
15
  };
15
16
  events: {
@@ -1,13 +1,12 @@
1
1
  <script>import { Button } from '../../../common';
2
2
  import { getContext } from 'svelte';
3
3
  import AlignWrapper from '../helpers/AlignWrapper.svelte';
4
- import InputValue from '../helpers/InputValue.svelte';
5
4
  import RunnableWrapper from '../helpers/RunnableWrapper.svelte';
6
5
  import { loadIcon } from '../icon';
7
6
  import { twMerge } from 'tailwind-merge';
8
- import { goto } from '$app/navigation';
9
- import { initOutput } from '../../editor/appUtils';
10
- import { configurationKeys } from '../../editor/component';
7
+ import { initConfig, initOutput } from '../../editor/appUtils';
8
+ import { components } from '../../editor/component';
9
+ import ResolveConfig from '../helpers/ResolveConfig.svelte';
11
10
  export let id;
12
11
  export let componentInput;
13
12
  export let configuration;
@@ -19,26 +18,20 @@ export let noWFull = false;
19
18
  export let preclickAction = undefined;
20
19
  export let customCss = undefined;
21
20
  export let render;
22
- export let initializing = true;
21
+ export let initializing = false;
22
+ export let extraKey = undefined;
23
23
  export let controls = undefined;
24
- const { worldStore, app, componentControl } = getContext('AppViewerContext');
24
+ const { worldStore, app, componentControl, selectedComponent } = getContext('AppViewerContext');
25
+ let resolvedConfig = initConfig(components['buttoncomponent'].initialData.configuration, configuration);
26
+ $: initializing = resolvedConfig?.label == undefined;
27
+ let outputs = initOutput($worldStore, id, {
28
+ result: undefined,
29
+ loading: false
30
+ });
25
31
  if (controls) {
26
32
  $componentControl[id] = controls;
27
33
  }
28
34
  let runnableComponent;
29
- // let labelValue: string
30
- // let color: ButtonType.Color
31
- // let size: ButtonType.Size
32
- // let disabled: boolean | undefined = undefined
33
- // let fillContainer: boolean | undefined = undefined
34
- // let gotoUrl: string | undefined = undefined
35
- // let gotoNewTab: boolean | undefined = undefined
36
- let isLoading = false;
37
- let ownClick = false;
38
- // let beforeIcon: undefined | string = undefined
39
- // let afterIcon: undefined | string = undefined
40
- let resolvedConfig = {};
41
- $: initializing = resolvedConfig?.label == undefined;
42
35
  let beforeIconComponent;
43
36
  let afterIconComponent;
44
37
  $: resolvedConfig.beforeIcon && handleBeforeIcon();
@@ -53,82 +46,68 @@ async function handleAfterIcon() {
53
46
  afterIconComponent = await loadIcon(resolvedConfig.afterIcon);
54
47
  }
55
48
  }
56
- let outputs = initOutput($worldStore, id, {
57
- result: undefined,
58
- loading: false
59
- });
60
- $: resolvedConfig.triggerOnAppLoad && runnableComponent?.runComponent();
61
- $: if (outputs?.loading != undefined) {
62
- outputs.loading.set(false, true);
63
- }
64
- $: outputs?.loading.subscribe({
65
- id: 'loading-' + id,
66
- next: (value) => {
67
- isLoading = value;
68
- if (ownClick && !value) {
69
- ownClick = false;
70
- }
71
- }
72
- });
73
- $: loading = isLoading && ownClick;
49
+ $: resolvedConfig?.triggerOnAppLoad && runnableComponent?.runComponent();
74
50
  let errors = {};
75
51
  $: errorsMessage = Object.values(errors)
76
52
  .filter((x) => x != '')
77
53
  .join('\n');
54
+ let runnableWrapper;
78
55
  async function handleClick(event) {
79
56
  event?.stopPropagation();
80
57
  event?.preventDefault();
58
+ $selectedComponent = id;
81
59
  if (preclickAction) {
82
60
  await preclickAction();
83
61
  }
84
- ownClick = true;
85
62
  if (!runnableComponent) {
86
- if (resolvedConfig.gotoUrl) {
87
- if (resolvedConfig.gotoNewTab) {
88
- window.open(resolvedConfig.gotoUrl, '_blank');
89
- }
90
- else {
91
- goto(resolvedConfig.gotoUrl);
92
- }
93
- }
63
+ runnableWrapper.onSuccess();
94
64
  }
95
65
  else {
96
66
  await runnableComponent?.runComponent();
97
67
  }
98
68
  }
69
+ let loading = false;
99
70
  </script>
100
71
 
101
- {#each configurationKeys['buttoncomponent'] as key (key)}
102
- <InputValue {key} {id} input={configuration[key]} bind:value={resolvedConfig[key]} />
72
+ {#each Object.keys(components['buttoncomponent'].initialData.configuration) as key (key)}
73
+ <ResolveConfig
74
+ {id}
75
+ {extraKey}
76
+ {key}
77
+ bind:resolvedConfig={resolvedConfig[key]}
78
+ configuration={configuration[key]}
79
+ />
103
80
  {/each}
104
81
 
82
+ <!-- gotoNewTab={resolvedConfig.onSuccess.selected == 'goto'} -->
83
+
105
84
  <RunnableWrapper
85
+ bind:this={runnableWrapper}
106
86
  {recomputeIds}
107
87
  bind:runnableComponent
88
+ bind:loading
108
89
  {componentInput}
90
+ doOnSuccess={resolvedConfig.onSuccess}
109
91
  {id}
110
92
  {extraQueryParams}
111
93
  autoRefresh={false}
112
- goto={resolvedConfig.gotoUrl}
113
- gotoNewTab={resolvedConfig.gotoNewTab}
114
94
  {render}
95
+ {outputs}
96
+ {extraKey}
115
97
  >
116
98
  <AlignWrapper {noWFull} {horizontalAlignment} {verticalAlignment}>
117
99
  {#if errorsMessage}
118
100
  <div class="text-red-500 text-xs">{errorsMessage}</div>
119
101
  {/if}
120
102
  <Button
103
+ on:pointerdown={(e) => e.stopPropagation()}
121
104
  btnClasses={twMerge(
122
105
  $app.css?.['buttoncomponent']?.['button']?.class,
123
- customCss?.button.class,
106
+ customCss?.button?.class,
124
107
  resolvedConfig.fillContainer ? 'w-full h-full' : ''
125
108
  )}
126
- style={[$app.css?.['buttoncomponent']?.['button']?.style, customCss?.button.style].join(';')}
109
+ style={[$app.css?.['buttoncomponent']?.['button']?.style, customCss?.button?.style].join(';')}
127
110
  disabled={resolvedConfig.disabled}
128
- on:pointerdown={(e) => {
129
- e?.stopPropagation()
130
- window.dispatchEvent(new Event('pointerup'))
131
- }}
132
111
  on:click={handleClick}
133
112
  size={resolvedConfig.size}
134
113
  color={resolvedConfig.color}
@@ -12,9 +12,10 @@ declare const __propDef: {
12
12
  verticalAlignment?: 'top' | 'center' | 'bottom' | undefined;
13
13
  noWFull?: boolean | undefined;
14
14
  preclickAction?: (() => Promise<void>) | undefined;
15
- customCss?: ComponentCustomCSS<'button'> | undefined;
15
+ customCss?: ComponentCustomCSS<'buttoncomponent'> | undefined;
16
16
  render: boolean;
17
17
  initializing?: boolean | undefined;
18
+ extraKey?: string | undefined;
18
19
  controls?: {
19
20
  left: () => boolean;
20
21
  right: () => boolean | string;
@@ -2,9 +2,11 @@
2
2
  import { faUser } from '@fortawesome/free-solid-svg-icons';
3
3
  import { getContext } from 'svelte';
4
4
  import { Icon } from 'svelte-awesome';
5
+ import { initConfig, initOutput } from '../../editor/appUtils';
6
+ import { components } from '../../editor/component';
5
7
  import { concatCustomCss } from '../../utils';
6
8
  import AlignWrapper from '../helpers/AlignWrapper.svelte';
7
- import InputValue from '../helpers/InputValue.svelte';
9
+ import ResolveConfig from '../helpers/ResolveConfig.svelte';
8
10
  import RunnableWrapper from '../helpers/RunnableWrapper.svelte';
9
11
  export let id;
10
12
  export let componentInput;
@@ -16,45 +18,43 @@ export let customCss = undefined;
16
18
  export let render;
17
19
  export const staticOutputs = ['loading', 'result'];
18
20
  const { app, worldStore, stateId } = getContext('AppViewerContext');
19
- let labelValue = 'Default label';
20
- let color;
21
- let size;
21
+ let outputs = initOutput($worldStore, id, {
22
+ result: undefined,
23
+ loading: false
24
+ });
25
+ let resolvedConfig = initConfig(components['formcomponent'].initialData.configuration, configuration);
22
26
  let runnableComponent;
23
- let goto = undefined;
24
27
  let isLoading = false;
25
28
  $: noInputs =
26
29
  $stateId != undefined &&
27
30
  (componentInput?.type != 'runnable' || Object.keys(componentInput?.fields ?? {}).length == 0);
28
- $: outputs = $worldStore?.outputsById[id];
29
- $: if (outputs?.loading != undefined) {
30
- outputs.loading.set(false, true);
31
- }
32
- $: outputs?.loading.subscribe({
33
- id: 'loading-' + id,
34
- next: (value) => {
35
- isLoading = value;
36
- }
37
- });
38
31
  $: css = concatCustomCss($app.css?.formcomponent, customCss);
32
+ let loading = false;
39
33
  </script>
40
34
 
41
- <InputValue {id} input={configuration.goto} bind:value={goto} />
42
- <InputValue {id} input={configuration.label} bind:value={labelValue} />
43
- <InputValue {id} input={configuration.color} bind:value={color} />
44
- <InputValue {id} input={configuration.size} bind:value={size} />
35
+ {#each Object.keys(components['formcomponent'].initialData.configuration) as key (key)}
36
+ <ResolveConfig
37
+ {id}
38
+ {key}
39
+ bind:resolvedConfig={resolvedConfig[key]}
40
+ configuration={configuration[key]}
41
+ />
42
+ {/each}
45
43
 
46
44
  <RunnableWrapper
47
45
  {recomputeIds}
48
46
  {render}
49
47
  bind:runnableComponent
48
+ bind:loading
50
49
  {componentInput}
51
50
  {id}
52
- {goto}
51
+ doOnSuccess={resolvedConfig.onSuccess}
53
52
  {extraQueryParams}
54
53
  autoRefresh={false}
55
54
  forceSchemaDisplay={true}
56
55
  runnableClass="!block"
57
- runnableStyle={css?.container.style}
56
+ runnableStyle={css?.container?.style}
57
+ {outputs}
58
58
  >
59
59
  <AlignWrapper {horizontalAlignment}>
60
60
  <div
@@ -87,10 +87,10 @@ $: css = concatCustomCss($app.css?.formcomponent, customCss);
87
87
  on:click={() => {
88
88
  runnableComponent?.runComponent()
89
89
  }}
90
- {size}
91
- {color}
90
+ size={resolvedConfig.size}
91
+ color={resolvedConfig.color}
92
92
  >
93
- {labelValue}
93
+ {resolvedConfig.label}
94
94
  </Button>
95
95
  {/if}
96
96
  </div>
@@ -9,7 +9,7 @@ declare const __propDef: {
9
9
  recomputeIds?: string[] | undefined;
10
10
  extraQueryParams?: Record<string, any> | undefined;
11
11
  horizontalAlignment?: 'left' | 'center' | 'right' | undefined;
12
- customCss?: ComponentCustomCSS<'container' | 'button'> | undefined;
12
+ customCss?: ComponentCustomCSS<'formcomponent'> | undefined;
13
13
  render: boolean;
14
14
  staticOutputs?: string[] | undefined;
15
15
  };