windmill-components 1.82.4 → 1.82.5

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 (169) hide show
  1. package/common.d.ts +2 -2
  2. package/components/ArgInput.svelte +72 -52
  3. package/components/ArgInput.svelte.d.ts +3 -1
  4. package/components/DisplayResult.svelte +17 -17
  5. package/components/Editor.svelte +3 -0
  6. package/components/Editor.svelte.d.ts +1 -0
  7. package/components/FieldHeader.svelte +1 -0
  8. package/components/FieldHeader.svelte.d.ts +4 -0
  9. package/components/FlowBuilder.svelte +0 -6
  10. package/components/FlowStatusViewer.svelte +4 -7
  11. package/components/FlowStatusViewer.svelte.d.ts +0 -1
  12. package/components/FlowViewer.svelte +1 -0
  13. package/components/InputTransformForm.svelte +1 -0
  14. package/components/LightweightArgInput.svelte +14 -1
  15. package/components/LightweightArgInput.svelte.d.ts +3 -1
  16. package/components/Multiselect.svelte.d.ts +2 -2
  17. package/components/SimpleEditor.svelte +1 -0
  18. package/components/SimpleEditor.svelte.d.ts +1 -0
  19. package/components/TemplateEditor.svelte +1 -0
  20. package/components/Toggle.svelte +1 -1
  21. package/components/Toggle.svelte.d.ts +1 -0
  22. package/components/apps/components/buttons/AppButton.svelte +17 -3
  23. package/components/apps/components/buttons/AppForm.svelte +10 -2
  24. package/components/apps/components/buttons/AppFormButton.svelte +82 -58
  25. package/components/apps/components/display/AppDisplayComponent.svelte +17 -23
  26. package/components/apps/components/display/AppHtml.svelte +1 -7
  27. package/components/apps/components/display/AppHtml.svelte.d.ts +0 -2
  28. package/components/apps/components/display/AppMap.svelte +1 -1
  29. package/components/apps/components/display/AppPdf.svelte +1 -1
  30. package/components/apps/components/display/PlotlyHtml.svelte +3 -20
  31. package/components/apps/components/display/PlotlyHtml.svelte.d.ts +0 -2
  32. package/components/apps/components/display/table/AppAggridTable.svelte +1 -1
  33. package/components/apps/components/display/table/AppTable.svelte +49 -75
  34. package/components/apps/components/display/table/AppTable.svelte.d.ts +1 -1
  35. package/components/apps/components/display/table/AppTableFooter.svelte +1 -2
  36. package/components/apps/components/display/table/AppTableFooter.svelte.d.ts +0 -1
  37. package/components/apps/components/display/table/tableOptions.js +1 -1
  38. package/components/apps/components/helpers/DebouncedInput.svelte +0 -1
  39. package/components/apps/components/helpers/DebouncedInput.svelte.d.ts +0 -2
  40. package/components/apps/components/helpers/HiddenComponent.svelte +2 -3
  41. package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +1 -2
  42. package/components/apps/components/helpers/InputValue.svelte +3 -3
  43. package/components/apps/components/helpers/RefreshButton.svelte +10 -3
  44. package/components/apps/components/helpers/RefreshButton.svelte.d.ts +0 -1
  45. package/components/apps/components/helpers/RunnableComponent.svelte +15 -19
  46. package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -2
  47. package/components/apps/components/helpers/RunnableWrapper.svelte +1 -3
  48. package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +0 -1
  49. package/components/apps/components/helpers/eval.d.ts +2 -4
  50. package/components/apps/components/helpers/eval.js +4 -6
  51. package/components/apps/components/inputs/AppCheckbox.svelte +4 -0
  52. package/components/apps/components/inputs/AppDateInput.svelte +2 -2
  53. package/components/apps/components/inputs/AppMultiSelect.svelte +5 -13
  54. package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +2 -0
  55. package/components/apps/components/inputs/AppNumberInput.svelte +3 -3
  56. package/components/apps/components/inputs/AppSelect.svelte +4 -11
  57. package/components/apps/components/inputs/AppSelect.svelte.d.ts +2 -0
  58. package/components/apps/components/inputs/AppSliderInputs.svelte +1 -1
  59. package/components/apps/components/inputs/AppTextInput.svelte +43 -53
  60. package/components/apps/components/inputs/AppTextInput.svelte.d.ts +1 -1
  61. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +1 -1
  62. package/components/apps/components/layout/AppContainer.svelte +2 -2
  63. package/components/apps/components/layout/AppDrawer.svelte +2 -1
  64. package/components/apps/components/layout/AppSplitpanes.svelte +3 -3
  65. package/components/apps/components/layout/AppTabs.svelte +1 -1
  66. package/components/apps/editor/AppEditor.svelte +21 -49
  67. package/components/apps/editor/AppEditorHeader.svelte +0 -5
  68. package/components/apps/editor/AppPreview.svelte +7 -18
  69. package/components/apps/editor/ComponentHeader.svelte +0 -1
  70. package/components/apps/editor/ComponentHeader.svelte.d.ts +1 -1
  71. package/components/apps/editor/GridEditor.svelte +12 -22
  72. package/components/apps/editor/GridViewer.svelte +2 -2
  73. package/components/apps/editor/GridViewer.svelte.d.ts +1 -1
  74. package/components/apps/editor/RecomputeAllComponents.svelte +7 -5
  75. package/components/apps/editor/SettingsPanel.svelte +4 -4
  76. package/components/apps/editor/SubGridEditor.svelte +12 -13
  77. package/components/apps/editor/appUtils.d.ts +0 -1
  78. package/components/apps/editor/appUtils.js +0 -19
  79. package/components/apps/editor/component/Component.svelte +8 -19
  80. package/components/apps/editor/component/Component.svelte.d.ts +1 -1
  81. package/components/apps/editor/component/ComponentNavigation.svelte +47 -57
  82. package/components/apps/editor/component/README.md +0 -4
  83. package/components/apps/editor/component/components.d.ts +28 -45
  84. package/components/apps/editor/component/components.js +27 -41
  85. package/components/apps/editor/component/sets.js +1 -2
  86. package/components/apps/editor/componentsPanel/ComponentList.svelte +1 -1
  87. package/components/apps/editor/componentsPanel/CssProperty.svelte +48 -62
  88. package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +2 -3
  89. package/components/apps/editor/componentsPanel/CssSettings.svelte +0 -1
  90. package/components/apps/editor/componentsPanel/store.js +4 -4
  91. package/components/apps/editor/contextPanel/ComponentOutput.svelte +26 -2
  92. package/components/apps/editor/contextPanel/ComponentOutput.svelte.d.ts +1 -0
  93. package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +6 -8
  94. package/components/apps/editor/contextPanel/ContextPanel.svelte +14 -7
  95. package/components/apps/editor/contextPanel/components/BackgroundScriptOutput.svelte +25 -2
  96. package/components/apps/editor/contextPanel/components/MinMaxButton.svelte +25 -0
  97. package/components/apps/editor/contextPanel/components/MinMaxButton.svelte.d.ts +16 -0
  98. package/components/apps/editor/contextPanel/components/OutputHeader.svelte +40 -29
  99. package/components/apps/editor/contextPanel/components/OutputHeader.svelte.d.ts +2 -1
  100. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +7 -2
  101. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +1 -1
  102. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +11 -10
  103. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +3 -4
  104. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +0 -1
  105. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +1 -0
  106. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +2 -2
  107. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelWithTable.svelte +0 -2
  108. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +19 -22
  109. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +13 -42
  110. package/components/apps/editor/settingsPanel/GridTab.svelte +2 -1
  111. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +1 -2
  112. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +0 -4
  113. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +0 -1
  114. package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +2 -1
  115. package/components/apps/editor/settingsPanel/TableActions.svelte +3 -3
  116. package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +12 -12
  117. package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte.d.ts +2 -3
  118. package/components/apps/editor/settingsPanel/inputEditor/EvalInputEditor.svelte +1 -5
  119. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +3 -3
  120. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +2 -3
  121. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +1 -4
  122. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +3 -3
  123. package/components/apps/editor/settingsPanel/triggerLists/ComponentTriggerList.svelte +1 -1
  124. package/components/apps/inputType.d.ts +2 -2
  125. package/components/apps/rx.d.ts +2 -2
  126. package/components/apps/svelte-grid/Grid.svelte +34 -50
  127. package/components/apps/svelte-grid/Grid.svelte.d.ts +9 -14
  128. package/components/apps/svelte-grid/MoveResize.svelte +55 -76
  129. package/components/apps/svelte-grid/MoveResize.svelte.d.ts +9 -15
  130. package/components/apps/svelte-grid/utils/helper.d.ts +1 -0
  131. package/components/apps/svelte-grid/utils/helper.js +3 -0
  132. package/components/apps/types.d.ts +5 -9
  133. package/components/apps/utils.d.ts +0 -2
  134. package/components/apps/utils.js +1 -33
  135. package/components/common/button/ButtonPopup.svelte +2 -5
  136. package/components/common/button/ButtonPopup.svelte.d.ts +1 -5
  137. package/components/common/button/ButtonPopupItem.svelte +1 -2
  138. package/components/common/button/ButtonPopupItem.svelte.d.ts +0 -1
  139. package/components/common/index.d.ts +0 -1
  140. package/components/common/index.js +0 -1
  141. package/components/common/kbd/Kbd.svelte +1 -4
  142. package/components/common/kbd/Kbd.svelte.d.ts +14 -6
  143. package/components/common/menu/Menu.svelte +2 -8
  144. package/components/common/menu/Menu.svelte.d.ts +1 -4
  145. package/components/flows/map/MapItem.svelte +3 -3
  146. package/components/propertyPicker/ObjectViewer.svelte +3 -0
  147. package/components/scriptEditor/LogPanel.svelte +3 -3
  148. package/infer.js +1 -6
  149. package/package.json +2 -11
  150. package/utils.d.ts +0 -1
  151. package/utils.js +0 -3
  152. package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte +0 -170
  153. package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte.d.ts +0 -18
  154. package/components/apps/editor/componentsPanel/QuickStyleProperty.svelte +0 -130
  155. package/components/apps/editor/componentsPanel/QuickStyleProperty.svelte.d.ts +0 -21
  156. package/components/apps/editor/componentsPanel/quickStyleProperties.d.ts +0 -535
  157. package/components/apps/editor/componentsPanel/quickStyleProperties.js +0 -598
  158. package/components/apps/editor/settingsPanel/StylePanel.svelte +0 -61
  159. package/components/apps/editor/settingsPanel/StylePanel.svelte.d.ts +0 -17
  160. package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +0 -47
  161. package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte.d.ts +0 -14
  162. package/components/apps/editor/settingsPanel/secondaryMenu/index.d.ts +0 -2
  163. package/components/apps/editor/settingsPanel/secondaryMenu/index.js +0 -2
  164. package/components/apps/editor/settingsPanel/secondaryMenu/menuStore.d.ts +0 -12
  165. package/components/apps/editor/settingsPanel/secondaryMenu/menuStore.js +0 -10
  166. package/components/common/clearableInput/ClearableInput.svelte +0 -56
  167. package/components/common/clearableInput/ClearableInput.svelte.d.ts +0 -28
  168. package/components/common/modal/AlwaysMountedModal.svelte +0 -109
  169. package/components/common/modal/AlwaysMountedModal.svelte.d.ts +0 -22
@@ -35,22 +35,14 @@ function handleItems() {
35
35
  }
36
36
  }
37
37
  $: value && outputs?.result.set(value.map((v) => v.value));
38
- $: css = concatCustomCss($app.css?.multiselectcomponent, customCss);
38
+ $: css = concatCustomCss($app.css?.selectcomponent, customCss);
39
39
  </script>
40
40
 
41
41
  <InputValue {id} input={configuration.items} bind:value={labels} />
42
42
  <InputValue {id} input={configuration.placeholder} bind:value={placeholder} />
43
43
 
44
44
  <AlignWrapper {render} {horizontalAlignment} {verticalAlignment}>
45
- <div
46
- class="app-select w-full"
47
- style="height: 100%; overflow: auto;"
48
- on:pointerdown={(e) => {
49
- if (!e.shiftKey) {
50
- e.stopPropagation()
51
- }
52
- }}
53
- >
45
+ <div class="app-select w-full mx-0.5" style="height: 34px" on:pointerdown|stopPropagation>
54
46
  {#if !value || Array.isArray(value)}
55
47
  <Select
56
48
  --border-radius="0"
@@ -59,18 +51,18 @@ $: css = concatCustomCss($app.css?.multiselectcomponent, customCss);
59
51
  on:change={(e) => e.stopPropagation()}
60
52
  {items}
61
53
  inputStyles={SELECT_INPUT_DEFAULT_STYLE.inputStyles}
62
- containerStyles={'border-color: #999; min-height: 100%;' +
54
+ containerStyles={'border-color: #999;' +
63
55
  SELECT_INPUT_DEFAULT_STYLE.containerStyles +
64
56
  css?.input?.style}
65
57
  bind:value
66
58
  {placeholder}
67
59
  on:click={() => {
68
60
  if (!$connectingInput.opened) {
69
- $selectedComponent = [id]
61
+ $selectedComponent = id
70
62
  }
71
63
  }}
72
64
  on:focus={() => {
73
- $selectedComponent = [id]
65
+ $selectedComponent = id
74
66
  }}
75
67
  floatingConfig={{
76
68
  strategy: 'fixed'
@@ -10,6 +10,8 @@ declare const __propDef: {
10
10
  render: boolean;
11
11
  };
12
12
  events: {
13
+ pointerdown: PointerEvent;
14
+ } & {
13
15
  [evt: string]: CustomEvent<any>;
14
16
  };
15
17
  slots: {};
@@ -35,10 +35,10 @@ $: css = concatCustomCss($app.css?.numberinputcomponent, customCss);
35
35
 
36
36
  <AlignWrapper {render} {verticalAlignment}>
37
37
  <input
38
- on:pointerdown|stopPropagation={() => ($selectedComponent = [id])}
39
- on:focus={() => ($selectedComponent = [id])}
38
+ on:pointerdown|stopPropagation={() => ($selectedComponent = id)}
39
+ on:focus={() => ($selectedComponent = id)}
40
40
  class={twMerge(
41
- 'windmillapp w-full py-1.5 text-sm focus:ring-indigo-100 px-2',
41
+ 'windmillapp w-full py-1.5 text-sm focus:ring-indigo-100 px-2 mx-0.5',
42
42
  css?.input?.class ?? ''
43
43
  )}
44
44
  style={css?.input?.style ?? ''}
@@ -43,6 +43,7 @@ function handleItems() {
43
43
  }
44
44
  function onChange(e) {
45
45
  e?.stopPropagation();
46
+ window.dispatchEvent(new Event('pointerup'));
46
47
  if (create) {
47
48
  listItems = listItems.map((i) => {
48
49
  delete i.created;
@@ -87,15 +88,7 @@ let filterText = '';
87
88
  <InputValue {id} input={configuration.create} bind:value={create} />
88
89
 
89
90
  <AlignWrapper {render} {horizontalAlignment} {verticalAlignment}>
90
- <div
91
- class="app-select w-full"
92
- style="height: 34px;"
93
- on:pointerdown={(e) => {
94
- if (!e.shiftKey) {
95
- e.stopPropagation()
96
- }
97
- }}
98
- >
91
+ <div class="app-select w-full mx-0.5" style="height: 34px;" on:pointerdown|stopPropagation>
99
92
  <Select
100
93
  --border-radius="0"
101
94
  --border-color="#999"
@@ -112,11 +105,11 @@ let filterText = '';
112
105
  {placeholder}
113
106
  on:click={() => {
114
107
  if (!$connectingInput.opened) {
115
- $selectedComponent = [id]
108
+ $selectedComponent = id
116
109
  }
117
110
  }}
118
111
  on:focus={() => {
119
- $selectedComponent = [id]
112
+ $selectedComponent = id
120
113
  }}
121
114
  floatingConfig={{
122
115
  strategy: 'fixed'
@@ -10,6 +10,8 @@ declare const __propDef: {
10
10
  render: boolean;
11
11
  };
12
12
  events: {
13
+ pointerdown: PointerEvent;
14
+ } & {
13
15
  [evt: string]: CustomEvent<any>;
14
16
  };
15
17
  slots: {};
@@ -59,7 +59,7 @@ $: if (css && slider && lastStyle !== css?.handle?.style) {
59
59
  class="grow"
60
60
  style="--range-handle-focus: {'#7e9abd'}; --range-handle: {'#7e9abd'}; {css?.bar?.style ??
61
61
  ''}"
62
- on:pointerdown|stopPropagation={() => ($selectedComponent = [id])}
62
+ on:pointerdown|stopPropagation={() => ($selectedComponent = id)}
63
63
  >
64
64
  <RangeSlider bind:slider bind:values {step} min={+min} max={+max} />
65
65
  </div>
@@ -1,7 +1,7 @@
1
1
  <script>import { getContext } from 'svelte';
2
2
  import { twMerge } from 'tailwind-merge';
3
3
  import { initOutput } from '../../editor/appUtils';
4
- import { concatCustomCss, selectId } from '../../utils';
4
+ import { concatCustomCss } from '../../utils';
5
5
  import AlignWrapper from '../helpers/AlignWrapper.svelte';
6
6
  import InputValue from '../helpers/InputValue.svelte';
7
7
  export let id;
@@ -29,55 +29,45 @@ $: css = concatCustomCss($app.css?.[appCssKey], customCss);
29
29
  <InputValue {id} input={configuration.placeholder} bind:value={placeholder} />
30
30
  <InputValue {id} input={configuration.defaultValue} bind:value={defaultValue} />
31
31
 
32
- {#if inputType === 'textarea'}
33
- <textarea
34
- class={twMerge(
35
- 'windmillapp w-full h-full py-1.5 text-sm focus:ring-indigo-100 px-2 ',
36
- css?.input?.class ?? ''
37
- )}
38
- style="resize:none; {css?.input?.style ?? ''}"
39
- on:pointerdown|stopPropagation={(e) => selectId(e, id, selectedComponent, $app)}
40
- bind:value
41
- {placeholder}
42
- />
43
- {:else}
44
- <AlignWrapper {render} {verticalAlignment}>
45
- {#if inputType === 'password'}
46
- <input
47
- class={twMerge(
48
- 'windmillapp w-full py-1.5 text-sm focus:ring-indigo-100 px-2 ',
49
- css?.input?.class ?? ''
50
- )}
51
- style={css?.input?.style ?? ''}
52
- on:pointerdown|stopPropagation={(e) => selectId(e, id, selectedComponent, $app)}
53
- type="password"
54
- bind:value
55
- {placeholder}
56
- />
57
- {:else if inputType === 'text'}
58
- <input
59
- class={twMerge(
60
- 'windmillapp w-full py-1.5 text-sm focus:ring-indigo-100 px-2 ',
61
- css?.input?.class ?? ''
62
- )}
63
- style={css?.input?.style ?? ''}
64
- on:pointerdown|stopPropagation={(e) => selectId(e, id, selectedComponent, $app)}
65
- type="text"
66
- bind:value
67
- {placeholder}
68
- />
69
- {:else if inputType === 'email'}
70
- <input
71
- class={twMerge(
72
- 'windmillapp w-full py-1.5 text-sm focus:ring-indigo-100 px-2 ',
73
- css?.input?.class ?? ''
74
- )}
75
- style={css?.input?.style ?? ''}
76
- on:pointerdown|stopPropagation={(e) => selectId(e, id, selectedComponent, $app)}
77
- type="email"
78
- bind:value
79
- {placeholder}
80
- />
81
- {/if}
82
- </AlignWrapper>
83
- {/if}
32
+ <AlignWrapper {render} {verticalAlignment}>
33
+ {#if inputType === 'password'}
34
+ <input
35
+ class={twMerge(
36
+ 'windmillapp w-full py-1.5 text-sm focus:ring-indigo-100 px-2 mx-0.5',
37
+ css?.input?.class ?? ''
38
+ )}
39
+ style={css?.input?.style ?? ''}
40
+ on:focus|stopPropagation={() => ($selectedComponent = id)}
41
+ on:pointerdown|stopPropagation={() => ($selectedComponent = id)}
42
+ type="password"
43
+ bind:value
44
+ {placeholder}
45
+ />
46
+ {:else if inputType === 'text'}
47
+ <input
48
+ class={twMerge(
49
+ 'windmillapp w-full py-1.5 text-sm focus:ring-indigo-100 px-2 mx-0.5',
50
+ css?.input?.class ?? ''
51
+ )}
52
+ style={css?.input?.style ?? ''}
53
+ on:focus={() => ($selectedComponent = id)}
54
+ on:pointerdown|stopPropagation={() => ($selectedComponent = id)}
55
+ type="text"
56
+ bind:value
57
+ {placeholder}
58
+ />
59
+ {:else if inputType === 'email'}
60
+ <input
61
+ class={twMerge(
62
+ 'windmillapp w-full py-1.5 text-sm focus:ring-indigo-100 px-2 mx-0.5',
63
+ css?.input?.class ?? ''
64
+ )}
65
+ style={css?.input?.style ?? ''}
66
+ on:focus={() => ($selectedComponent = id)}
67
+ on:pointerdown|stopPropagation={() => ($selectedComponent = id)}
68
+ type="email"
69
+ bind:value
70
+ {placeholder}
71
+ />
72
+ {/if}
73
+ </AlignWrapper>
@@ -7,7 +7,7 @@ declare const __propDef: {
7
7
  inputType?: string | undefined;
8
8
  verticalAlignment?: 'top' | 'center' | 'bottom' | undefined;
9
9
  customCss?: ComponentCustomCSS<'textinputcomponent'> | undefined;
10
- appCssKey?: "textinputcomponent" | "textareainputcomponent" | "passwordinputcomponent" | "emailinputcomponent" | undefined;
10
+ appCssKey?: "textinputcomponent" | "passwordinputcomponent" | "emailinputcomponent" | undefined;
11
11
  render: boolean;
12
12
  };
13
13
  events: {
@@ -40,7 +40,7 @@ $: css = concatCustomCss($app.css?.currencycomponent, customCss);
40
40
  {#key isNegativeAllowed}
41
41
  {#key locale}
42
42
  {#key currency}
43
- <div class="w-full" on:pointerdown|stopPropagation={() => ($selectedComponent = [id])}>
43
+ <div class="w-full" on:pointerdown|stopPropagation={() => ($selectedComponent = id)}>
44
44
  <CurrencyInput
45
45
  inputClasses={{
46
46
  formatted: twMerge('px-2 w-full py-1.5 windmillapp', css?.input?.class),
@@ -15,6 +15,7 @@ function onFocus() {
15
15
  subGridIndex: 0
16
16
  };
17
17
  }
18
+ $: $selectedComponent === id && onFocus();
18
19
  $: css = concatCustomCss($app.css?.containercomponent, customCss);
19
20
  </script>
20
21
 
@@ -28,8 +29,7 @@ $: css = concatCustomCss($app.css?.containercomponent, customCss);
28
29
  subGridId={`${id}-0`}
29
30
  containerHeight={componentContainerHeight}
30
31
  on:focus={() => {
31
- $selectedComponent = [id]
32
- onFocus()
32
+ $selectedComponent = id
33
33
  }}
34
34
  />
35
35
  {/if}
@@ -38,6 +38,7 @@ $: css = concatCustomCss($app.css?.containercomponent, customCss);
38
38
  {disabled}
39
39
  on:pointerdown={(e) => {
40
40
  e?.stopPropagation()
41
+ window.dispatchEvent(new Event('pointerup'))
41
42
  }}
42
43
  on:click={async (e) => {
43
44
  $focusedGrid = {
@@ -79,7 +80,7 @@ $: css = concatCustomCss($app.css?.containercomponent, customCss);
79
80
  subGridId={`${id}-0`}
80
81
  containerHeight={1200}
81
82
  on:focus={() => {
82
- $selectedComponent = [id]
83
+ $selectedComponent = id
83
84
  }}
84
85
  />
85
86
  {/if}
@@ -19,7 +19,7 @@ function onFocus() {
19
19
  subGridIndex: 0
20
20
  };
21
21
  }
22
- $: $selectedComponent?.includes(id) && onFocus();
22
+ $: $selectedComponent === id && onFocus();
23
23
  $: css = concatCustomCss($app.css?.containercomponent, customCss);
24
24
  $componentControl[id] = {
25
25
  left: () => {
@@ -60,7 +60,7 @@ $: {
60
60
  <div
61
61
  class="w-full h-full"
62
62
  on:pointerdown|stopPropagation={() => {
63
- $selectedComponent = [id]
63
+ $selectedComponent = id
64
64
  $focusedGrid = {
65
65
  parentComponentId: id,
66
66
  subGridIndex: index
@@ -77,7 +77,7 @@ $: {
77
77
  subGridId={`${id}-${index}`}
78
78
  containerHeight={horizontal ? undefined : componentContainerHeight - 8}
79
79
  on:focus={() => {
80
- $selectedComponent = [id]
80
+ $selectedComponent = id
81
81
  $focusedGrid = {
82
82
  parentComponentId: id,
83
83
  subGridIndex: index
@@ -103,7 +103,7 @@ $: css = concatCustomCss($app.css?.tabscomponent, customCss);
103
103
  ? componentContainerHeight - tabHeight
104
104
  : componentContainerHeight}
105
105
  on:focus={() => {
106
- $selectedComponent = [id]
106
+ $selectedComponent = id
107
107
  }}
108
108
  />
109
109
  {/each}
@@ -10,7 +10,8 @@ import Tabs from '../../common/tabs/Tabs.svelte';
10
10
  import TabContent from '../../common/tabs/TabContent.svelte';
11
11
  import { Alert, Button, Tab } from '../../common';
12
12
  import ComponentList from './componentsPanel/ComponentList.svelte';
13
- import { faPlus } from '@fortawesome/free-solid-svg-icons';
13
+ import Icon from 'svelte-awesome';
14
+ import { faCode, faPlus, faSliders } from '@fortawesome/free-solid-svg-icons';
14
15
  import ContextPanel from './contextPanel/ContextPanel.svelte';
15
16
  import { classNames, encodeState } from '../../../utils';
16
17
  import AppPreview from './AppPreview.svelte';
@@ -25,10 +26,6 @@ import { initHistory } from '../../../history';
25
26
  import ComponentNavigation from './component/ComponentNavigation.svelte';
26
27
  import ItemPicker from '../../ItemPicker.svelte';
27
28
  import VariableEditor from '../../VariableEditor.svelte';
28
- import { SecondaryMenu } from './settingsPanel/secondaryMenu';
29
- import { Component, Paintbrush, Plus } from 'lucide-svelte';
30
- import { findGridItem, findGridItemParentGrid } from './appUtils';
31
- import { findItemsById } from '../svelte-grid/utils/matrix';
32
29
  export let app;
33
30
  export let path;
34
31
  export let initialMode = 'dnd';
@@ -64,7 +61,7 @@ setContext('AppViewerContext', {
64
61
  mode,
65
62
  connectingInput,
66
63
  breakpoint,
67
- runnableComponents: writable({}),
64
+ runnableComponents,
68
65
  appPath: path,
69
66
  workspace: $workspaceStore ?? '',
70
67
  onchange: () => saveDraft(),
@@ -79,14 +76,13 @@ setContext('AppViewerContext', {
79
76
  parentWidth: writable(0),
80
77
  state: writable({}),
81
78
  componentControl: writable({}),
82
- hoverStore: writable(undefined),
83
- allIdsInPath: writable([])
79
+ hoverStore: writable(undefined)
84
80
  });
85
81
  setContext('AppEditorContext', {
86
82
  history,
87
83
  pickVariableCallback,
88
84
  ontextfocus: writable(undefined),
89
- movingcomponents: writable(undefined),
85
+ movingcomponent: writable(undefined),
90
86
  selectedComponentInEditor: writable(undefined)
91
87
  });
92
88
  let timeout = undefined;
@@ -113,36 +109,11 @@ function hashchange(e) {
113
109
  $: previewing = $mode === 'preview';
114
110
  $: width = $breakpoint === 'sm' ? 'min-w-[400px] max-w-[656px]' : 'min-w-[710px] w-full';
115
111
  let selectedTab = 'insert';
116
- let befSelected = undefined;
117
- $: if ($selectedComponent?.[0] != befSelected) {
118
- befSelected = $selectedComponent?.[0];
112
+ $: if ($selectedComponent) {
119
113
  selectedTab = 'settings';
120
- if (befSelected) {
121
- if (!['ctx', 'state'].includes(befSelected) && !befSelected?.startsWith('bg_')) {
122
- let item = findGridItem($appStore, befSelected);
123
- if (item?.data.type === 'containercomponent') {
124
- $focusedGrid = {
125
- parentComponentId: befSelected,
126
- subGridIndex: 0
127
- };
128
- }
129
- else {
130
- let subgrid = findGridItemParentGrid($appStore, befSelected);
131
- if (subgrid) {
132
- try {
133
- $focusedGrid = {
134
- parentComponentId: subgrid.split('-')[0],
135
- subGridIndex: parseInt(subgrid.split('-')[1])
136
- };
137
- }
138
- catch { }
139
- }
140
- else {
141
- $focusedGrid = undefined;
142
- }
143
- }
144
- }
145
- }
114
+ }
115
+ else {
116
+ selectedTab = 'insert';
146
117
  }
147
118
  let itemPicker = undefined;
148
119
  $: if ($pickVariableCallback) {
@@ -189,7 +160,7 @@ let variableEditor = undefined;
189
160
  <Pane size={15} minSize={5} maxSize={33}>
190
161
  <ContextPanel />
191
162
  </Pane>
192
- <Pane size={63}>
163
+ <Pane size={64}>
193
164
  <SplitPanesWrapper>
194
165
  <Splitpanes horizontal>
195
166
  <Pane size={70}>
@@ -213,7 +184,7 @@ let variableEditor = undefined;
213
184
  {#if $appStore.grid}
214
185
  <ComponentNavigation />
215
186
 
216
- <div on:pointerdown|stopPropagation class={twMerge(width, 'mx-auto')}>
187
+ <div on:pointerdown|stopPropagation class={width}>
217
188
  <GridEditor {policy} />
218
189
  </div>
219
190
 
@@ -230,30 +201,31 @@ let variableEditor = undefined;
230
201
  </Splitpanes>
231
202
  </SplitPanesWrapper>
232
203
  </Pane>
233
- <Pane size={22} minSize={5} maxSize={33}>
204
+ <Pane size={21} minSize={5} maxSize={33}>
234
205
  <div class="relative flex flex-col h-full">
235
206
  <Tabs bind:selected={selectedTab} wrapperClass="!h-[40px]" class="!h-full">
236
207
  <Tab value="insert" size="xs">
237
- <div class="m-1 center-center gap-1">
238
- <Plus size={18} />
208
+ <div class="m-1 center-center gap-2">
209
+ <Icon data={faPlus} />
210
+ <span>Insert</span>
239
211
  </div>
240
212
  </Tab>
241
213
  <Tab value="settings" size="xs">
242
- <div class="m-1 center-center gap-1">
243
- <Component size={18} />
244
- <span>Component</span>
214
+ <div class="m-1 center-center gap-2">
215
+ <Icon data={faSliders} />
216
+ <span>Settings</span>
245
217
  </div>
246
218
  </Tab>
247
219
  <Tab value="css" size="xs">
248
- <div class="m-1 center-center gap-1">
249
- <Paintbrush size={18} />
220
+ <div class="m-1 center-center gap-2">
221
+ <Icon data={faCode} />
222
+ <span>CSS</span>
250
223
  </div>
251
224
  </Tab>
252
225
  <div slot="content" class="h-full overflow-y-auto">
253
226
  <TabContent class="overflow-auto h-full" value="settings">
254
227
  {#if $selectedComponent !== undefined}
255
228
  <SettingsPanel />
256
- <SecondaryMenu />
257
229
  {:else}
258
230
  <div class="min-w-[150px] text-sm text-gray-500 text-center py-8 px-2">
259
231
  Select a component to see the settings&nbsp;for&nbsp;it
@@ -177,11 +177,6 @@ let lock = false;
177
177
  function onKeyDown(event) {
178
178
  if (lock)
179
179
  return;
180
- let classes = event.target?.['className'];
181
- if ((typeof classes === 'string' && classes.includes('inputarea')) ||
182
- ['INPUT', 'TEXTAREA'].includes(document.activeElement?.tagName)) {
183
- return;
184
- }
185
180
  lock = true;
186
181
  switch (event.key) {
187
182
  case 'Z':
@@ -10,8 +10,6 @@ import { Component } from './component';
10
10
  import { twMerge } from 'tailwind-merge';
11
11
  import { columnConfiguration } from '../gridUtils';
12
12
  import { HiddenComponent } from '../components';
13
- import { deepEqual } from 'fast-equals';
14
- import { dfs } from './appUtils';
15
13
  export let app;
16
14
  export let appPath;
17
15
  export let breakpoint;
@@ -30,7 +28,7 @@ const connectingInput = writable({
30
28
  input: undefined,
31
29
  hoveredComponent: undefined
32
30
  });
33
- const allIdsInPath = writable([]);
31
+ const runnableComponents = writable({});
34
32
  const parentWidth = writable(0);
35
33
  setContext('AppViewerContext', {
36
34
  worldStore: buildWorld(context),
@@ -40,7 +38,7 @@ setContext('AppViewerContext', {
40
38
  mode,
41
39
  connectingInput,
42
40
  breakpoint,
43
- runnableComponents: writable({}),
41
+ runnableComponents,
44
42
  appPath,
45
43
  workspace,
46
44
  onchange: undefined,
@@ -55,21 +53,13 @@ setContext('AppViewerContext', {
55
53
  parentWidth,
56
54
  state: writable({}),
57
55
  componentControl: writable({}),
58
- hoverStore: writable(undefined),
59
- allIdsInPath
56
+ hoverStore: writable(undefined)
60
57
  });
61
58
  let ncontext = context;
62
59
  function hashchange(e) {
63
60
  ncontext.hash = e.newURL.split('#')[1];
64
61
  ncontext = ncontext;
65
62
  }
66
- let previousSelectedIds = undefined;
67
- $: if (!deepEqual(previousSelectedIds, $selectedComponent)) {
68
- previousSelectedIds = $selectedComponent;
69
- $allIdsInPath = ($selectedComponent ?? [])
70
- .flatMap((id) => dfs(app.grid, id, app.subgrids ?? {}))
71
- .filter((x) => x != undefined);
72
- }
73
63
  $: width = $breakpoint === 'sm' ? 'max-w-[640px]' : 'w-full ';
74
64
  $: lockedClasses = isLocked ? '!max-h-[400px] overflow-hidden pointer-events-none' : '';
75
65
  </script>
@@ -92,7 +82,8 @@ $: lockedClasses = isLocked ? '!max-h-[400px] overflow-hidden pointer-events-non
92
82
  )}
93
83
  >
94
84
  <div
95
- class="w-full sticky z-[1001] top-0 flex justify-between border-b bg-gray-50 px-4 py-1 items-center gap-4"
85
+ class="w-full sticky top-0 flex justify-between border-b bg-gray-50 px-4 py-1 items-center gap-4"
86
+ style="z-index: 1000;"
96
87
  >
97
88
  <h2 class="truncate">{summary}</h2>
98
89
  <RecomputeAllComponents />
@@ -110,7 +101,7 @@ $: lockedClasses = isLocked ? '!max-h-[400px] overflow-hidden pointer-events-non
110
101
  >
111
102
  <div>
112
103
  <GridViewer
113
- allIdsInPath={$allIdsInPath}
104
+ onTopId={$selectedComponent}
114
105
  items={app.grid}
115
106
  let:dataItem
116
107
  rowHeight={36}
@@ -120,7 +111,7 @@ $: lockedClasses = isLocked ? '!max-h-[400px] overflow-hidden pointer-events-non
120
111
  <!-- svelte-ignore a11y-click-events-have-key-events -->
121
112
  <div
122
113
  class={'h-full w-full center-center'}
123
- on:pointerdown={() => ($selectedComponent = [dataItem.id])}
114
+ on:pointerdown={() => ($selectedComponent = dataItem.id)}
124
115
  >
125
116
  <Component render={true} component={dataItem.data} selected={false} locked={true} />
126
117
  </div>
@@ -151,8 +142,6 @@ $: lockedClasses = isLocked ? '!max-h-[400px] overflow-hidden pointer-events-non
151
142
  inlineScript={script.inlineScript}
152
143
  name={script.name}
153
144
  fields={script.fields}
154
- doNotRecomputeOnInputChanged={script.doNotRecomputeOnInputChanged ?? false}
155
- recomputableByRefreshButton={script.autoRefresh ?? false}
156
145
  />
157
146
  {/if}
158
147
  {/each}
@@ -21,7 +21,6 @@ function openDebugRuns() {
21
21
 
22
22
  {#if selected || hover}
23
23
  <span
24
- on:mousedown|stopPropagation|capture
25
24
  draggable="false"
26
25
  title={`Id: ${component.id}`}
27
26
  class={twMerge(
@@ -8,8 +8,8 @@ declare const __propDef: {
8
8
  hover?: boolean | undefined;
9
9
  };
10
10
  events: {
11
- mousedown: MouseEvent;
12
11
  pointerdown: PointerEvent;
12
+ mousedown: MouseEvent;
13
13
  expand: CustomEvent<any>;
14
14
  lock: CustomEvent<any>;
15
15
  } & {