windmill-components 1.60.4 → 1.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/app.css +3 -0
- package/common.d.ts +5 -1
- package/components/ApiConnectForm.svelte +66 -5
- package/components/AppConnect.svelte +24 -9
- package/components/ArgInput.svelte +1 -1
- package/components/CliHelpBox.svelte +49 -0
- package/components/CliHelpBox.svelte.d.ts +14 -0
- package/components/DisplayResult.svelte +51 -1
- package/components/DisplayResult.svelte.d.ts +1 -0
- package/components/Editor.svelte +17 -7
- package/components/EditorBar.svelte +129 -111
- package/components/FlowBuilder.svelte +2 -2
- package/components/FlowJobResult.svelte +10 -2
- package/components/FlowJobResult.svelte.d.ts +1 -0
- package/components/FlowMetadata.svelte +24 -8
- package/components/FlowPreviewContent.svelte +3 -4
- package/components/FlowStatusViewer.svelte +41 -9
- package/components/FolderEditor.svelte +3 -2
- package/components/HighlightCode.svelte +7 -1
- package/components/InlineCodeCopy.svelte +11 -0
- package/components/InlineCodeCopy.svelte.d.ts +16 -0
- package/components/InputTransformForm.svelte +9 -5
- package/components/LogViewer.svelte +6 -0
- package/components/LogViewer.svelte.d.ts +1 -0
- package/components/ModulePreview.svelte +11 -2
- package/components/MoveDrawer.svelte +1 -1
- package/components/Multiselect.svelte.d.ts +2 -2
- package/components/ObjectResourceInput.svelte +6 -1
- package/components/Path.svelte +14 -5
- package/components/Popover.svelte +8 -2
- package/components/Popover.svelte.d.ts +1 -0
- package/components/Range.svelte.d.ts +2 -2
- package/components/ResourceEditor.svelte +39 -16
- package/components/ResourcePicker.svelte +0 -1
- package/components/RunForm.svelte +26 -2
- package/components/RunForm.svelte.d.ts +1 -0
- package/components/ScheduleEditor.svelte +1 -1
- package/components/SchemaEditor.svelte +2 -2
- package/components/SchemaForm.svelte +14 -4
- package/components/SchemaForm.svelte.d.ts +1 -0
- package/components/ScriptBuilder.svelte +45 -22
- package/components/ScriptBuilder.svelte.d.ts +1 -0
- package/components/ScriptEditor.svelte +1 -0
- package/components/SharedBadge.svelte +5 -5
- package/components/Slider.svelte +14 -0
- package/components/Slider.svelte.d.ts +19 -0
- package/components/StringTypeNarrowing.svelte +0 -1
- package/components/SuperadminSettings.svelte +11 -3
- package/components/SuperadminSettings.svelte.d.ts +2 -0
- package/components/TemplateEditor.svelte.d.ts +204 -0
- package/components/TestJobLoader.svelte +3 -3
- package/components/Toggle.svelte +1 -2
- package/components/UserSettings.svelte +11 -3
- package/components/UserSettings.svelte.d.ts +2 -0
- package/components/VariableEditor.svelte +1 -1
- package/components/WhitelistIp.svelte +23 -0
- package/components/WhitelistIp.svelte.d.ts +14 -0
- package/components/apps/components/buttons/AppButton.svelte +52 -6
- package/components/apps/components/buttons/AppButton.svelte.d.ts +3 -0
- package/components/apps/components/{form → buttons}/AppForm.svelte +3 -1
- package/components/apps/components/buttons/AppFormButton.svelte +137 -0
- package/components/apps/components/buttons/AppFormButton.svelte.d.ts +25 -0
- package/components/apps/components/buttons/index.d.ts +3 -0
- package/components/apps/components/buttons/index.js +3 -0
- package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte +15 -4
- package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte.d.ts +1 -0
- package/components/apps/components/display/AppDisplayComponent.svelte +31 -0
- package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +23 -0
- package/components/apps/components/{dataDisplay → display}/AppHtml.svelte +6 -5
- package/components/apps/components/{dataDisplay → display}/AppHtml.svelte.d.ts +1 -1
- package/components/apps/components/display/AppIcon.svelte +35 -0
- package/components/apps/components/display/AppIcon.svelte.d.ts +22 -0
- package/components/apps/components/display/AppImage.svelte +27 -0
- package/components/apps/components/display/AppImage.svelte.d.ts +22 -0
- package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte +2 -1
- package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte.d.ts +1 -0
- package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte +2 -1
- package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte.d.ts +1 -0
- package/components/apps/components/{dataDisplay → display}/AppText.svelte +16 -14
- package/components/apps/components/{dataDisplay → display}/AppText.svelte.d.ts +3 -0
- package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte +3 -2
- package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte.d.ts +1 -0
- package/components/apps/components/display/PlotlyHtml.svelte +38 -0
- package/components/apps/components/display/PlotlyHtml.svelte.d.ts +24 -0
- package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte +2 -3
- package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte.d.ts +1 -0
- package/components/apps/components/display/index.d.ts +12 -0
- package/components/apps/components/display/index.js +12 -0
- package/components/apps/components/display/table/AppAggridTable.svelte +83 -0
- package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +24 -0
- package/components/apps/components/{table → display/table}/AppTable.svelte +32 -21
- package/components/apps/components/{table → display/table}/AppTable.svelte.d.ts +4 -2
- package/components/apps/components/{table → display/table}/AppTableFooter.svelte +1 -1
- package/components/apps/components/helpers/AlignWrapper.svelte +19 -19
- package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +4 -2
- package/components/apps/components/helpers/HiddenComponent.svelte +22 -0
- package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +25 -0
- package/components/apps/components/helpers/InputDefaultValue.svelte +17 -0
- package/components/apps/components/helpers/InputDefaultValue.svelte.d.ts +17 -0
- package/components/apps/components/helpers/InputValue.svelte +5 -7
- package/components/apps/components/helpers/InputValue.svelte.d.ts +0 -1
- package/components/apps/components/helpers/RunnableComponent.svelte +37 -48
- package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
- package/components/apps/components/helpers/RunnableWrapper.svelte +7 -2
- package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +2 -1
- package/components/apps/components/helpers/index.d.ts +10 -0
- package/components/apps/components/helpers/index.js +10 -0
- package/components/apps/components/icon.d.ts +1 -0
- package/components/apps/components/icon.js +18 -0
- package/components/apps/components/index.d.ts +5 -0
- package/components/apps/components/index.js +5 -0
- package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte +4 -2
- package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte +6 -0
- package/components/apps/components/inputs/AppFileInput.svelte +34 -0
- package/components/apps/components/inputs/AppFileInput.svelte.d.ts +20 -0
- package/components/apps/components/inputs/AppNumberInput.svelte +48 -0
- package/components/apps/components/inputs/AppRangeInput.svelte +44 -0
- package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +23 -0
- package/components/apps/components/inputs/AppSelect.svelte +90 -0
- package/components/apps/components/{selectInputs → inputs}/AppSelect.svelte.d.ts +2 -0
- package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte +13 -9
- package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte +6 -0
- package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +49 -0
- package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +21 -0
- package/components/apps/components/inputs/currency/CurrencyInput.svelte +181 -0
- package/components/apps/components/inputs/currency/CurrencyInput.svelte.d.ts +32 -0
- package/components/apps/components/inputs/index.d.ts +9 -0
- package/components/apps/components/inputs/index.js +9 -0
- package/components/apps/components/layout/AppContainer.svelte +32 -0
- package/components/apps/components/layout/AppContainer.svelte.d.ts +21 -0
- package/components/apps/components/layout/AppDivider.svelte +20 -0
- package/components/apps/components/layout/AppDivider.svelte.d.ts +22 -0
- package/components/apps/components/layout/AppTabs.svelte +58 -0
- package/components/apps/components/layout/AppTabs.svelte.d.ts +24 -0
- package/components/apps/components/layout/index.d.ts +3 -0
- package/components/apps/components/layout/index.js +3 -0
- package/components/apps/editor/AppComponentInput.svelte +33 -0
- package/components/apps/editor/AppComponentInput.svelte.d.ts +18 -0
- package/components/apps/editor/AppComponentInputs.svelte +13 -0
- package/components/apps/editor/AppComponentInputs.svelte.d.ts +20 -0
- package/components/apps/editor/AppEditor.svelte +66 -31
- package/components/apps/editor/AppEditor.svelte.d.ts +1 -0
- package/components/apps/editor/AppEditorHeader.svelte +74 -18
- package/components/apps/editor/AppEditorHeader.svelte.d.ts +1 -0
- package/components/apps/editor/AppInputs.svelte +60 -0
- package/components/apps/editor/AppInputs.svelte.d.ts +14 -0
- package/components/apps/editor/AppPreview.svelte +11 -6
- package/components/apps/editor/ComponentHeader.svelte +40 -2
- package/components/apps/editor/ComponentHeader.svelte.d.ts +1 -1
- package/components/apps/editor/GridEditor.svelte +75 -32
- package/components/apps/editor/GridEditor.svelte.d.ts +2 -0
- package/components/apps/editor/SettingsPanel.svelte +31 -3
- package/components/apps/editor/SubGridEditor.svelte +111 -0
- package/components/apps/editor/SubGridEditor.svelte.d.ts +24 -0
- package/components/apps/editor/TablePanel.svelte +2 -0
- package/components/apps/editor/TablePanel.svelte.d.ts +1 -1
- package/components/apps/editor/appUtils.d.ts +9 -0
- package/components/apps/editor/appUtils.js +141 -0
- package/components/apps/editor/component/Component.svelte +209 -0
- package/components/apps/editor/component/Component.svelte.d.ts +23 -0
- package/components/apps/editor/component/README.md +15 -0
- package/components/apps/editor/component/components.d.ts +65 -0
- package/components/apps/editor/component/components.js +1102 -0
- package/components/apps/editor/component/default-codes.d.ts +3 -0
- package/components/apps/editor/component/default-codes.js +322 -0
- package/components/apps/editor/component/index.d.ts +4 -0
- package/components/apps/editor/component/index.js +4 -0
- package/components/apps/editor/component/sets.d.ts +2 -0
- package/components/apps/editor/component/sets.js +47 -0
- package/components/apps/editor/componentsPanel/ComponentList.svelte +30 -106
- package/components/apps/editor/componentsPanel/CssProperty.svelte +31 -0
- package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +20 -0
- package/components/apps/editor/componentsPanel/CssSettings.svelte +141 -0
- package/components/apps/editor/componentsPanel/CssSettings.svelte.d.ts +14 -0
- package/components/apps/editor/componentsPanel/ListItem.svelte +28 -0
- package/components/apps/editor/componentsPanel/ListItem.svelte.d.ts +20 -0
- package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +4 -1
- package/components/apps/editor/componentsPanel/componentStaticValues.js +4 -1
- package/components/apps/editor/contextPanel/ContextPanel.svelte +8 -6
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +98 -9
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +38 -29
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +21 -1
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +66 -8
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +92 -46
- package/components/apps/editor/inlineScriptsPanel/utils.d.ts +5 -1
- package/components/apps/editor/inlineScriptsPanel/utils.js +30 -0
- package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +1 -1
- package/components/apps/editor/settingsPanel/AlignmentEditor.svelte.d.ts +1 -1
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +4 -1
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +59 -1
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte +64 -34
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +5 -3
- package/components/apps/editor/settingsPanel/GridTab.svelte +73 -0
- package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +18 -0
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +3 -0
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +2 -2
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +92 -77
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +1 -0
- package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte +85 -0
- package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte.d.ts +18 -0
- package/components/apps/editor/settingsPanel/Recompute.svelte +4 -1
- package/components/apps/editor/settingsPanel/TableActions.svelte +17 -6
- package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -1
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte +5 -3
- package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +83 -0
- package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +19 -0
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +6 -1
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +2 -0
- package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte +23 -0
- package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +3 -20
- package/components/apps/gridUtils.d.ts +3 -1
- package/components/apps/gridUtils.js +5 -3
- package/components/apps/inputType.d.ts +33 -6
- package/components/apps/types.d.ts +35 -40
- package/components/apps/types.js +1 -1
- package/components/apps/utils.d.ts +6 -5
- package/components/apps/utils.js +90 -94
- package/components/common/button/Button.svelte +12 -5
- package/components/common/button/Button.svelte.d.ts +3 -1
- package/components/common/button/ButtonPopup.svelte.d.ts +1 -1
- package/components/common/button/model.d.ts +2 -2
- package/components/common/button/model.js +21 -6
- package/components/common/confirmationModal/ConfirmationModal.svelte +8 -1
- package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +4 -4
- package/components/common/drawer/Drawer.svelte +3 -1
- package/components/common/fileInput/FileInput.svelte +112 -0
- package/components/common/fileInput/FileInput.svelte.d.ts +27 -0
- package/components/common/index.d.ts +1 -0
- package/components/common/index.js +1 -0
- package/components/common/kbd/Kbd.svelte.d.ts +2 -2
- package/components/common/modal/Modal.svelte +74 -0
- package/components/common/modal/Modal.svelte.d.ts +22 -0
- package/components/common/popup/Popup.svelte +34 -17
- package/components/common/popup/Popup.svelte.d.ts +11 -4
- package/components/common/table/FlowRow.svelte +22 -3
- package/components/common/table/LanguageBadge.svelte +10 -4
- package/components/common/table/Row.svelte +1 -1
- package/components/common/table/ScriptRow.svelte +2 -2
- package/components/common/tabs/Tabs.svelte +9 -7
- package/components/common/tabs/Tabs.svelte.d.ts +3 -1
- package/components/flows/CreateActionsFlow.svelte +2 -3
- package/components/flows/content/BranchPredicateEditor.svelte +10 -8
- package/components/flows/content/FlowInputs.svelte +109 -99
- package/components/flows/content/FlowLoop.svelte +1 -1
- package/components/flows/content/FlowModuleComponent.svelte +3 -2
- package/components/flows/content/FlowRetries.svelte +8 -6
- package/components/flows/content/FlowSettings.svelte +72 -26
- package/components/flows/flowState.d.ts +1 -0
- package/components/flows/flowState.js +1 -0
- package/components/flows/flowStateUtils.js +4 -2
- package/components/flows/flowStore.d.ts +1 -0
- package/components/flows/flowStore.js +1 -0
- package/components/flows/map/FlowBranchAllMap.svelte +1 -1
- package/components/flows/map/FlowBranchOneMap.svelte +2 -2
- package/components/flows/map/FlowModuleSchemaItem.svelte +5 -5
- package/components/flows/map/FlowModuleSchemaMap.svelte +15 -8
- package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -0
- package/components/flows/map/InsertModuleButton.svelte +24 -10
- package/components/flows/map/InsertModuleButton.svelte.d.ts +1 -0
- package/components/flows/map/MapItem.svelte +3 -1
- package/components/flows/utils.js +16 -10
- package/components/graph/FlowGraph.svelte +38 -15
- package/components/graph/FlowGraph.svelte.d.ts +1 -0
- package/components/icons/SquareIcon.svelte +9 -0
- package/components/icons/SquareIcon.svelte.d.ts +17 -0
- package/components/icons/index.d.ts +2 -0
- package/components/icons/index.js +2 -0
- package/components/jobs/JobDetail.svelte +29 -5
- package/components/propertyPicker/ObjectViewer.svelte +8 -5
- package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
- package/components/propertyPicker/PropPicker.svelte +8 -1
- package/components/propertyPicker/PropPickerResult.svelte +1 -1
- package/components/random_positive_adjetive.d.ts +1 -0
- package/components/random_positive_adjetive.js +961 -0
- package/components/scriptEditor/LogPanel.svelte +2 -1
- package/components/sidebar/SidebarContent.svelte +1 -1
- package/components/sidebar/UserMenu.svelte +46 -16
- package/components/sidebar/UserMenu.svelte.d.ts +0 -3
- package/components/sidebar/WorkspaceMenu.svelte +3 -1
- package/components/sidebar/settings.d.ts +2 -0
- package/components/sidebar/settings.js +2 -0
- package/gen/core/OpenAPI.js +1 -1
- package/gen/models/CompletedJob.d.ts +1 -0
- package/gen/models/FlowModule.d.ts +0 -1
- package/gen/models/QueuedJob.d.ts +1 -0
- package/gen/models/WorkerPing.d.ts +1 -1
- package/gen/services/FlowService.d.ts +9 -0
- package/gen/services/FlowService.js +15 -0
- package/gen/services/JobService.d.ts +97 -15
- package/gen/services/JobService.js +74 -15
- package/gen/services/ScriptService.d.ts +10 -1
- package/gen/services/ScriptService.js +16 -1
- package/gen/services/VariableService.d.ts +4 -2
- package/gen/services/VariableService.js +8 -2
- package/gen/services/WorkspaceService.d.ts +17 -0
- package/gen/services/WorkspaceService.js +16 -0
- package/infer.js +3 -0
- package/init_scripts/python_failure_module.py +10 -0
- package/init_scripts/python_init_code.py +37 -0
- package/init_scripts/python_init_code_clear.py +5 -0
- package/init_scripts/python_init_code_trigger.py +14 -0
- package/logout.js +2 -1
- package/package.json +577 -522
- package/script_helpers.d.ts +6 -5
- package/script_helpers.js +7 -73
- package/stores.d.ts +5 -1
- package/stores.js +8 -1
- package/user.d.ts +1 -1
- package/user.js +14 -8
- package/utils.d.ts +1 -1
- package/utils.js +8 -7
- package/components/apps/components/DisplayComponent.svelte +0 -16
- package/components/apps/components/DisplayComponent.svelte.d.ts +0 -20
- package/components/apps/components/numberInputs/AppNumberInput.svelte +0 -33
- package/components/apps/components/selectInputs/AppSelect.svelte +0 -47
- package/components/apps/editor/ComponentEditor.svelte +0 -145
- package/components/apps/editor/ComponentEditor.svelte.d.ts +0 -23
- package/components/apps/editor/componentsPanel/data.d.ts +0 -3
- package/components/apps/editor/componentsPanel/data.js +0 -499
- package/components/apps/editorUtils.d.ts +0 -1
- package/components/apps/editorUtils.js +0 -292
- /package/components/apps/components/{form → buttons}/AppForm.svelte.d.ts +0 -0
- /package/components/apps/components/{table → display/table}/AppTableFooter.svelte.d.ts +0 -0
- /package/components/apps/components/{table → display/table}/tableOptions.d.ts +0 -0
- /package/components/apps/components/{table → display/table}/tableOptions.js +0 -0
- /package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte.d.ts +0 -0
- /package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte.d.ts +0 -0
- /package/components/apps/components/{numberInputs → inputs}/AppNumberInput.svelte.d.ts +0 -0
- /package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte.d.ts +0 -0
- /package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte.d.ts +0 -0
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
import SplitPanesWrapper from '../../../splitPanes/SplitPanesWrapper.svelte';
|
|
3
3
|
import { Pane, Splitpanes } from 'svelte-splitpanes';
|
|
4
4
|
import InlineScriptsPanelList from './InlineScriptsPanelList.svelte';
|
|
5
|
-
import InlineScriptEditorPanel from './InlineScriptEditorPanel.svelte';
|
|
6
5
|
import InlineScriptEditor from './InlineScriptEditor.svelte';
|
|
7
|
-
|
|
6
|
+
import EmptyInlineScript from './EmptyInlineScript.svelte';
|
|
7
|
+
import InlineScriptEditorPanel from './InlineScriptEditorPanel.svelte';
|
|
8
|
+
const { app, staticOutputs, runnableComponents } = getContext('AppEditorContext');
|
|
8
9
|
let selectedScriptComponentId = undefined;
|
|
9
10
|
</script>
|
|
10
11
|
|
|
@@ -14,16 +15,20 @@ let selectedScriptComponentId = undefined;
|
|
|
14
15
|
<InlineScriptsPanelList bind:selectedScriptComponentId />
|
|
15
16
|
</Pane>
|
|
16
17
|
<Pane size={75}>
|
|
17
|
-
{#
|
|
18
|
-
|
|
18
|
+
{#if !selectedScriptComponentId}
|
|
19
|
+
<span class="p-2 text-sm text-gray-600">Select a script on the left panel</span>
|
|
20
|
+
{/if}
|
|
21
|
+
|
|
22
|
+
{#each $app.grid as gridItem (gridItem.data.id)}
|
|
23
|
+
{#if gridItem.data.id === selectedScriptComponentId}
|
|
19
24
|
<InlineScriptEditorPanel
|
|
20
|
-
id={
|
|
21
|
-
bind:componentInput={
|
|
25
|
+
id={gridItem.data.id}
|
|
26
|
+
bind:componentInput={gridItem.data.componentInput}
|
|
22
27
|
/>
|
|
23
28
|
{/if}
|
|
24
29
|
|
|
25
|
-
{#if
|
|
26
|
-
{#each
|
|
30
|
+
{#if gridItem.data.type === 'tablecomponent'}
|
|
31
|
+
{#each gridItem.data.actionButtons as actionButton, index (index)}
|
|
27
32
|
{#if actionButton.id === selectedScriptComponentId}
|
|
28
33
|
<InlineScriptEditorPanel
|
|
29
34
|
id={actionButton.id}
|
|
@@ -33,6 +38,31 @@ let selectedScriptComponentId = undefined;
|
|
|
33
38
|
{/each}
|
|
34
39
|
{/if}
|
|
35
40
|
{/each}
|
|
41
|
+
|
|
42
|
+
{#if $app.subgrids}
|
|
43
|
+
{#each Object.keys($app.subgrids ?? {}) as key (key)}
|
|
44
|
+
{#each $app.subgrids[key] as gridItem (gridItem.data.id)}
|
|
45
|
+
{#if gridItem.data.id === selectedScriptComponentId}
|
|
46
|
+
<InlineScriptEditorPanel
|
|
47
|
+
id={gridItem.data.id}
|
|
48
|
+
bind:componentInput={gridItem.data.componentInput}
|
|
49
|
+
/>
|
|
50
|
+
{/if}
|
|
51
|
+
|
|
52
|
+
{#if gridItem.data.type === 'tablecomponent'}
|
|
53
|
+
{#each gridItem.data.actionButtons as actionButton, index (index)}
|
|
54
|
+
{#if actionButton.id === selectedScriptComponentId}
|
|
55
|
+
<InlineScriptEditorPanel
|
|
56
|
+
id={actionButton.id}
|
|
57
|
+
bind:componentInput={actionButton.componentInput}
|
|
58
|
+
/>
|
|
59
|
+
{/if}
|
|
60
|
+
{/each}
|
|
61
|
+
{/if}
|
|
62
|
+
{/each}
|
|
63
|
+
{/each}
|
|
64
|
+
{/if}
|
|
65
|
+
|
|
36
66
|
{#each $app.unusedInlineScripts as unusedInlineScript, index (index)}
|
|
37
67
|
{#if `unused-${index}` === selectedScriptComponentId}
|
|
38
68
|
<InlineScriptEditor
|
|
@@ -47,6 +77,34 @@ let selectedScriptComponentId = undefined;
|
|
|
47
77
|
/>
|
|
48
78
|
{/if}
|
|
49
79
|
{/each}
|
|
80
|
+
{#each $app?.hiddenInlineScripts ?? [] as hiddenInlineScript, index (index)}
|
|
81
|
+
{#if `bg_${index}` === selectedScriptComponentId}
|
|
82
|
+
{#if hiddenInlineScript.inlineScript}
|
|
83
|
+
<InlineScriptEditor
|
|
84
|
+
id={`bg_${index}`}
|
|
85
|
+
bind:inlineScript={hiddenInlineScript.inlineScript}
|
|
86
|
+
bind:name={hiddenInlineScript.name}
|
|
87
|
+
on:delete={() => {
|
|
88
|
+
// remove the script from the array at the index
|
|
89
|
+
$app.hiddenInlineScripts.splice(index, 1)
|
|
90
|
+
$app.hiddenInlineScripts = [...$app.hiddenInlineScripts]
|
|
91
|
+
|
|
92
|
+
delete $staticOutputs[`bg_${index}`]
|
|
93
|
+
delete $runnableComponents[`bg_${index}`]
|
|
94
|
+
$staticOutputs = $staticOutputs
|
|
95
|
+
}}
|
|
96
|
+
/>
|
|
97
|
+
{:else}
|
|
98
|
+
<EmptyInlineScript
|
|
99
|
+
id={`b_${index}`}
|
|
100
|
+
name={hiddenInlineScript.name}
|
|
101
|
+
on:new={(e) => {
|
|
102
|
+
hiddenInlineScript.inlineScript = e.detail
|
|
103
|
+
}}
|
|
104
|
+
/>
|
|
105
|
+
{/if}
|
|
106
|
+
{/if}
|
|
107
|
+
{/each}
|
|
50
108
|
</Pane>
|
|
51
109
|
</Splitpanes>
|
|
52
110
|
</SplitPanesWrapper>
|
|
@@ -1,62 +1,81 @@
|
|
|
1
|
-
<script>import { Badge } from '../../../common';
|
|
2
|
-
import {
|
|
1
|
+
<script>import { Badge, Button } from '../../../common';
|
|
2
|
+
import { faPlus } from '@fortawesome/free-solid-svg-icons';
|
|
3
|
+
import { Plus } from 'lucide-svelte';
|
|
3
4
|
import { getContext } from 'svelte';
|
|
5
|
+
import { getAllScriptNames } from '../../utils';
|
|
4
6
|
import PanelSection from '../settingsPanel/common/PanelSection.svelte';
|
|
5
7
|
import { getAppScripts } from './utils';
|
|
8
|
+
const PREFIX = 'script-selector-';
|
|
6
9
|
export let selectedScriptComponentId = undefined;
|
|
7
10
|
const { app, selectedComponent, lazyGrid } = getContext('AppEditorContext');
|
|
8
|
-
|
|
11
|
+
let list;
|
|
12
|
+
function selectScript(id) {
|
|
9
13
|
selectedScriptComponentId = id;
|
|
10
|
-
if (!id.startsWith('unused-')) {
|
|
14
|
+
if (!id.startsWith('unused-') || !id.startsWith('bg_')) {
|
|
11
15
|
$selectedComponent = selectedScriptComponentId;
|
|
12
16
|
}
|
|
13
17
|
}
|
|
14
18
|
$: runnables = getAppScripts($lazyGrid);
|
|
15
|
-
// When
|
|
16
|
-
$: {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
// When selected component changes, update selectedScriptComponentId
|
|
20
|
+
$: if ($selectedComponent != selectedScriptComponentId) {
|
|
21
|
+
selectedScriptComponentId = $selectedComponent;
|
|
22
|
+
}
|
|
23
|
+
function createBackgroundScript() {
|
|
24
|
+
let index = 0;
|
|
25
|
+
let newScriptPath = `Background Script ${index}`;
|
|
26
|
+
const names = getAllScriptNames($app);
|
|
27
|
+
// Find a name that is not used by any other inline script
|
|
28
|
+
while (names.includes(newScriptPath)) {
|
|
29
|
+
newScriptPath = `Background Script ${++index}`;
|
|
30
|
+
}
|
|
31
|
+
if (!$app.hiddenInlineScripts) {
|
|
32
|
+
$app.hiddenInlineScripts = [];
|
|
19
33
|
}
|
|
34
|
+
$app.hiddenInlineScripts.push({
|
|
35
|
+
name: newScriptPath,
|
|
36
|
+
inlineScript: undefined,
|
|
37
|
+
fields: {}
|
|
38
|
+
});
|
|
39
|
+
$app.hiddenInlineScripts = $app.hiddenInlineScripts;
|
|
40
|
+
selectScript(`bg_${$app.hiddenInlineScripts.length - 1}`);
|
|
20
41
|
}
|
|
21
42
|
</script>
|
|
22
43
|
|
|
23
|
-
<div class="
|
|
44
|
+
<div class="mb-0 pb-0 pl-2 sticky top-0 bg-white border-b text-xs font-semibold">Runnables</div>
|
|
45
|
+
<div bind:this={list} class="grow flex flex-col gap-4">
|
|
24
46
|
<PanelSection title="Inline scripts" smallPadding>
|
|
25
47
|
<div class="flex flex-col gap-2 w-full">
|
|
26
48
|
{#if runnables.inline.length > 0}
|
|
27
|
-
<div class="flex gap-
|
|
49
|
+
<div class="flex gap-1 flex-col ">
|
|
28
50
|
{#each runnables.inline as { name, id }, index (index)}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
class="
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
)},"
|
|
35
|
-
on:click={() => selectInlineScript(id)}
|
|
51
|
+
<button
|
|
52
|
+
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
|
+
on:click={() => selectScript(id)}
|
|
36
56
|
>
|
|
37
|
-
<span class="text-
|
|
57
|
+
<span class="text-2xs truncate">{name}</span>
|
|
38
58
|
<div>
|
|
39
59
|
<Badge color="dark-indigo">{id}</Badge>
|
|
40
60
|
</div>
|
|
41
|
-
</
|
|
61
|
+
</button>
|
|
42
62
|
{/each}
|
|
43
63
|
</div>
|
|
44
64
|
{/if}
|
|
45
65
|
|
|
46
66
|
{#if $app.unusedInlineScripts?.length > 0}
|
|
47
|
-
<div class="flex gap-
|
|
67
|
+
<div class="flex gap-1 flex-col ">
|
|
48
68
|
{#each $app.unusedInlineScripts as unusedInlineScript, index (index)}
|
|
49
|
-
|
|
50
|
-
<
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
)}
|
|
55
|
-
on:click={() => selectInlineScript(`unused-${index}`)}
|
|
69
|
+
{@const id = `unused-${index}`}
|
|
70
|
+
<button
|
|
71
|
+
id={PREFIX + id}
|
|
72
|
+
class="border flex gap-1 truncate font-normal justify-between w-full items-center py-1 px-2 rounded-sm duration-200
|
|
73
|
+
{selectedScriptComponentId === id ? 'border-blue-500 bg-blue-100' : 'hover:bg-blue-50'}"
|
|
74
|
+
on:click={() => selectScript(id)}
|
|
56
75
|
>
|
|
57
|
-
<span class="text-
|
|
76
|
+
<span class="text-2xs truncate">{unusedInlineScript.name}</span>
|
|
58
77
|
<Badge color="red">Detached</Badge>
|
|
59
|
-
</
|
|
78
|
+
</button>
|
|
60
79
|
{/each}
|
|
61
80
|
</div>
|
|
62
81
|
{/if}
|
|
@@ -67,24 +86,51 @@ $: {
|
|
|
67
86
|
</div>
|
|
68
87
|
</PanelSection>
|
|
69
88
|
|
|
70
|
-
<PanelSection title="
|
|
71
|
-
<div class="flex flex-col gap-
|
|
89
|
+
<PanelSection title="Workspace/Hub" smallPadding>
|
|
90
|
+
<div class="flex flex-col gap-1 w-full">
|
|
72
91
|
{#if runnables.imported.length > 0}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
92
|
+
{#each runnables.imported as { name, id }, index (index)}
|
|
93
|
+
<button
|
|
94
|
+
id={PREFIX + id}
|
|
95
|
+
class="border flex gap-1 truncate font-normal justify-between w-full items-center py-1 px-2 rounded-sm duration-200
|
|
96
|
+
{selectedScriptComponentId === id ? 'border-blue-500 bg-blue-100' : 'hover:bg-blue-50'}"
|
|
97
|
+
on:click={() => selectScript(id)}
|
|
98
|
+
>
|
|
99
|
+
<span class="text-2xs truncate">{name}</span>
|
|
100
|
+
<Badge color="dark-indigo">{id}</Badge>
|
|
101
|
+
</button>
|
|
102
|
+
{/each}
|
|
103
|
+
{:else}
|
|
104
|
+
<div class="text-sm text-gray-500">No imported scripts/flows</div>
|
|
105
|
+
{/if}
|
|
106
|
+
</div>
|
|
107
|
+
</PanelSection>
|
|
108
|
+
|
|
109
|
+
<PanelSection
|
|
110
|
+
title="Background scripts"
|
|
111
|
+
tooltip="Background scripts are triggered upon global refresh or when their input changes. The result
|
|
112
|
+
of a background script can be shared among many components."
|
|
113
|
+
smallPadding
|
|
114
|
+
>
|
|
115
|
+
<svelte:fragment slot="action">
|
|
116
|
+
<Button size="xs" color="dark" variant="border" on:click={createBackgroundScript}
|
|
117
|
+
><Plus size={14} />
|
|
118
|
+
</Button>
|
|
119
|
+
</svelte:fragment>
|
|
120
|
+
<div class="flex flex-col gap-1 w-full">
|
|
121
|
+
{#if $app.hiddenInlineScripts?.length > 0}
|
|
122
|
+
{#each $app.hiddenInlineScripts as { name }, index (index)}
|
|
123
|
+
{@const id = `bg_${index}`}
|
|
124
|
+
<button
|
|
125
|
+
id={PREFIX + id}
|
|
126
|
+
class="border flex gap-1 truncate font-normal justify-between w-full items-center py-1 px-2 rounded-sm duration-200
|
|
127
|
+
{selectedScriptComponentId === id ? 'border-blue-500 bg-blue-100' : 'hover:bg-blue-50'}"
|
|
128
|
+
on:click={() => selectScript(id)}
|
|
129
|
+
>
|
|
130
|
+
<span class="text-2xs truncate">{name}</span>
|
|
131
|
+
<Badge color="dark-indigo">{id}</Badge>
|
|
132
|
+
</button>
|
|
133
|
+
{/each}
|
|
88
134
|
{:else}
|
|
89
135
|
<div class="text-sm text-gray-500">No items</div>
|
|
90
136
|
{/if}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Schema } from "../../../../common";
|
|
2
|
+
import type { AppInputs } from "../../inputType";
|
|
3
|
+
import type { GridItem } from "../../types";
|
|
4
|
+
import type { AppComponent } from "../component";
|
|
2
5
|
export interface AppScriptsList {
|
|
3
6
|
inline: {
|
|
4
7
|
name: string;
|
|
@@ -9,6 +12,7 @@ export interface AppScriptsList {
|
|
|
9
12
|
id: string;
|
|
10
13
|
}[];
|
|
11
14
|
}
|
|
15
|
+
export declare function computeFields(schema: Schema, defaultUserInput: boolean, fields: AppInputs): {};
|
|
12
16
|
export declare function getAppScripts(grid: GridItem[]): FilledItem<{
|
|
13
17
|
data: AppComponent;
|
|
14
18
|
id: string;
|
|
@@ -1,3 +1,33 @@
|
|
|
1
|
+
import { fieldTypeToTsType, schemaToInputsSpec } from "../../utils";
|
|
2
|
+
// When the schema is loaded, we need to update the inputs spec
|
|
3
|
+
// in order to render the inputs the component panel
|
|
4
|
+
export function computeFields(schema, defaultUserInput, fields) {
|
|
5
|
+
let schemaCopy = JSON.parse(JSON.stringify(schema));
|
|
6
|
+
const result = {};
|
|
7
|
+
const newInputs = schemaToInputsSpec(schemaCopy, defaultUserInput);
|
|
8
|
+
if (!fields) {
|
|
9
|
+
return newInputs;
|
|
10
|
+
}
|
|
11
|
+
Object.keys(newInputs).forEach((key) => {
|
|
12
|
+
const newInput = newInputs[key];
|
|
13
|
+
const oldInput = fields[key];
|
|
14
|
+
// If the input is not present in the old inputs, add it
|
|
15
|
+
if (oldInput === undefined) {
|
|
16
|
+
result[key] = newInput;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
if (fieldTypeToTsType(newInput.fieldType) !== fieldTypeToTsType(oldInput.fieldType) ||
|
|
20
|
+
newInput.format !== oldInput.format ||
|
|
21
|
+
newInput.subFieldType !== oldInput.subFieldType) {
|
|
22
|
+
result[key] = newInput;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
result[key] = oldInput;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
1
31
|
export function getAppScripts(grid) {
|
|
2
32
|
return grid.reduce((acc, gridComponent) => {
|
|
3
33
|
const component = gridComponent.data;
|
|
@@ -4,7 +4,7 @@ import PanelSection from './common/PanelSection.svelte';
|
|
|
4
4
|
export let component;
|
|
5
5
|
</script>
|
|
6
6
|
|
|
7
|
-
{#if component.
|
|
7
|
+
{#if component.horizontalAlignment || component.verticalAlignment}
|
|
8
8
|
<PanelSection title="Alignment">
|
|
9
9
|
<div class="flex flex-wrap gap-2">
|
|
10
10
|
{#if component.horizontalAlignment}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
<script>import { Button } from '../../../common';
|
|
2
2
|
import { faPlus, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
|
|
3
|
+
import { createEventDispatcher } from 'svelte';
|
|
3
4
|
import { staticValues } from '../componentsPanel/componentStaticValues';
|
|
4
5
|
import SubTypeEditor from './SubTypeEditor.svelte';
|
|
5
6
|
export let componentInput;
|
|
7
|
+
const dispatch = createEventDispatcher();
|
|
6
8
|
function addElementByType() {
|
|
7
9
|
if (componentInput.subFieldType && componentInput.value) {
|
|
8
10
|
if (componentInput.subFieldType === 'boolean') {
|
|
@@ -31,6 +33,7 @@ function addElementByType() {
|
|
|
31
33
|
function deleteElementByType(index) {
|
|
32
34
|
if (componentInput.value) {
|
|
33
35
|
componentInput.value.splice(index, 1);
|
|
36
|
+
dispatch('deleteArrayItem', { index });
|
|
34
37
|
componentInput = componentInput;
|
|
35
38
|
}
|
|
36
39
|
}
|
|
@@ -42,7 +45,7 @@ function deleteElementByType(index) {
|
|
|
42
45
|
<div class="flex flex-row gap-2 items-center relative">
|
|
43
46
|
<SubTypeEditor bind:componentInput bind:value />
|
|
44
47
|
|
|
45
|
-
<div class="absolute top-
|
|
48
|
+
<div class="absolute top-1 right-1">
|
|
46
49
|
<Button
|
|
47
50
|
size="xs"
|
|
48
51
|
color="light"
|
|
@@ -5,43 +5,101 @@ declare const __propDef: {
|
|
|
5
5
|
fieldType: "array";
|
|
6
6
|
subFieldType?: "text" | undefined;
|
|
7
7
|
format?: string | undefined;
|
|
8
|
+
fileUpload?: {
|
|
9
|
+
accept: string;
|
|
10
|
+
multiple?: boolean | undefined;
|
|
11
|
+
base64?: boolean | undefined;
|
|
12
|
+
} | undefined;
|
|
8
13
|
}) | (import("../../inputType").StaticInput<string[]> & {
|
|
9
14
|
fieldType: "array";
|
|
10
15
|
subFieldType?: "textarea" | undefined;
|
|
11
16
|
format?: string | undefined;
|
|
17
|
+
fileUpload?: {
|
|
18
|
+
accept: string;
|
|
19
|
+
multiple?: boolean | undefined;
|
|
20
|
+
base64?: boolean | undefined;
|
|
21
|
+
} | undefined;
|
|
12
22
|
}) | (import("../../inputType").StaticInput<number[]> & {
|
|
13
23
|
fieldType: "array";
|
|
14
24
|
subFieldType?: "number" | undefined;
|
|
15
25
|
format?: string | undefined;
|
|
26
|
+
fileUpload?: {
|
|
27
|
+
accept: string;
|
|
28
|
+
multiple?: boolean | undefined;
|
|
29
|
+
base64?: boolean | undefined;
|
|
30
|
+
} | undefined;
|
|
16
31
|
}) | (import("../../inputType").StaticInput<boolean[]> & {
|
|
17
32
|
fieldType: "array";
|
|
18
33
|
subFieldType?: "boolean" | undefined;
|
|
19
34
|
format?: string | undefined;
|
|
35
|
+
fileUpload?: {
|
|
36
|
+
accept: string;
|
|
37
|
+
multiple?: boolean | undefined;
|
|
38
|
+
base64?: boolean | undefined;
|
|
39
|
+
} | undefined;
|
|
20
40
|
}) | (import("../../inputType").StaticInput<string[]> & {
|
|
21
41
|
fieldType: "array";
|
|
22
42
|
subFieldType?: "date" | undefined;
|
|
23
43
|
format?: string | undefined;
|
|
44
|
+
fileUpload?: {
|
|
45
|
+
accept: string;
|
|
46
|
+
multiple?: boolean | undefined;
|
|
47
|
+
base64?: boolean | undefined;
|
|
48
|
+
} | undefined;
|
|
24
49
|
}) | (import("../../inputType").StaticInput<string[]> & {
|
|
25
50
|
fieldType: "array";
|
|
26
51
|
subFieldType?: "time" | undefined;
|
|
27
52
|
format?: string | undefined;
|
|
53
|
+
fileUpload?: {
|
|
54
|
+
accept: string;
|
|
55
|
+
multiple?: boolean | undefined;
|
|
56
|
+
base64?: boolean | undefined;
|
|
57
|
+
} | undefined;
|
|
28
58
|
}) | (import("../../inputType").StaticInput<string[]> & {
|
|
29
59
|
fieldType: "array";
|
|
30
60
|
subFieldType?: "datetime" | undefined;
|
|
31
61
|
format?: string | undefined;
|
|
62
|
+
fileUpload?: {
|
|
63
|
+
accept: string;
|
|
64
|
+
multiple?: boolean | undefined;
|
|
65
|
+
base64?: boolean | undefined;
|
|
66
|
+
} | undefined;
|
|
32
67
|
}) | (import("../../inputType").StaticInput<object[]> & {
|
|
33
68
|
fieldType: "array";
|
|
34
69
|
subFieldType?: "object" | undefined;
|
|
35
70
|
format?: string | undefined;
|
|
71
|
+
fileUpload?: {
|
|
72
|
+
accept: string;
|
|
73
|
+
multiple?: boolean | undefined;
|
|
74
|
+
base64?: boolean | undefined;
|
|
75
|
+
} | undefined;
|
|
36
76
|
}) | (import("../../inputType").StaticInput<string[]> & {
|
|
37
77
|
fieldType: "array";
|
|
38
78
|
subFieldType?: "select" | undefined;
|
|
39
79
|
format?: string | undefined;
|
|
80
|
+
fileUpload?: {
|
|
81
|
+
accept: string;
|
|
82
|
+
multiple?: boolean | undefined;
|
|
83
|
+
base64?: boolean | undefined;
|
|
84
|
+
} | undefined;
|
|
40
85
|
} & {
|
|
41
|
-
optionValuesKey: "buttonColorOptions" | "buttonSizeOptions" | "tableSearchOptions" | "chartThemeOptions" | "textStyleOptions";
|
|
86
|
+
optionValuesKey: "buttonColorOptions" | "buttonSizeOptions" | "tableSearchOptions" | "chartThemeOptions" | "textStyleOptions" | "currencyOptions" | "localeOptions" | "objectFitOptions";
|
|
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
|
+
base64?: boolean | undefined;
|
|
95
|
+
} | undefined;
|
|
96
|
+
} & {
|
|
97
|
+
optionValuesKey: "buttonColorOptions" | "buttonSizeOptions" | "tableSearchOptions" | "chartThemeOptions" | "textStyleOptions" | "currencyOptions" | "localeOptions" | "objectFitOptions";
|
|
42
98
|
});
|
|
43
99
|
};
|
|
44
100
|
events: {
|
|
101
|
+
deleteArrayItem: CustomEvent<any>;
|
|
102
|
+
} & {
|
|
45
103
|
[evt: string]: CustomEvent<any>;
|
|
46
104
|
};
|
|
47
105
|
slots: {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script>import Button from '../../../common/button/Button.svelte';
|
|
2
|
-
import { faTrashAlt } from '@fortawesome/free-solid-svg-icons';
|
|
2
|
+
import { faCopy, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
|
|
3
3
|
import { getContext } from 'svelte';
|
|
4
4
|
import PanelSection from './common/PanelSection.svelte';
|
|
5
5
|
import InputsSpecsEditor from './InputsSpecsEditor.svelte';
|
|
@@ -15,44 +15,39 @@ import ComponentInputTypeEditor from './ComponentInputTypeEditor.svelte';
|
|
|
15
15
|
import AlignmentEditor from './AlignmentEditor.svelte';
|
|
16
16
|
import RunnableInputEditor from './inputEditor/RunnableInputEditor.svelte';
|
|
17
17
|
import TemplateEditor from '../../../TemplateEditor.svelte';
|
|
18
|
+
import CssProperty from '../componentsPanel/CssProperty.svelte';
|
|
19
|
+
import { dirtyStore } from '../../../common/confirmationModal/dirtyStore';
|
|
20
|
+
import GridTab from './GridTab.svelte';
|
|
21
|
+
import { duplicateGridItem } from '../appUtils';
|
|
22
|
+
import { deleteGridItem } from '../appUtils';
|
|
23
|
+
import MoveToOtherGrid from './MoveToOtherGrid.svelte';
|
|
18
24
|
export let component;
|
|
19
|
-
export let onDelete = undefined;
|
|
20
25
|
export let rowColumns = false;
|
|
21
|
-
|
|
26
|
+
export let onDelete = undefined;
|
|
27
|
+
export let parent;
|
|
28
|
+
export let noGrid = false;
|
|
29
|
+
const { app, staticOutputs, runnableComponents, selectedComponent, worldStore, focusedGrid } = getContext('AppEditorContext');
|
|
30
|
+
function duplicateElement(id) {
|
|
31
|
+
$dirtyStore = true;
|
|
32
|
+
const newId = duplicateGridItem($app, parent, id);
|
|
33
|
+
$selectedComponent = newId;
|
|
34
|
+
}
|
|
22
35
|
function removeGridElement() {
|
|
23
36
|
$selectedComponent = undefined;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
// Delete static inputs
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
if (component) {
|
|
34
|
-
$app.grid = $app.grid.filter((gridComponent) => gridComponent.data.id !== component?.id);
|
|
35
|
-
// Delete static inputs
|
|
36
|
-
delete $staticOutputs[component.id];
|
|
37
|
-
$staticOutputs = $staticOutputs;
|
|
38
|
-
delete $runnableComponents[component.id];
|
|
39
|
-
$runnableComponents = $runnableComponents;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
if (component &&
|
|
43
|
-
component.componentInput?.type === 'runnable' &&
|
|
44
|
-
component.componentInput?.runnable?.type === 'runnableByName') {
|
|
45
|
-
const { name, inlineScript } = component.componentInput.runnable;
|
|
46
|
-
if (inlineScript) {
|
|
47
|
-
if (!$app.unusedInlineScripts) {
|
|
48
|
-
$app.unusedInlineScripts = [];
|
|
49
|
-
}
|
|
50
|
-
$app.unusedInlineScripts.push({
|
|
51
|
-
name,
|
|
52
|
-
inlineScript
|
|
53
|
-
});
|
|
37
|
+
$focusedGrid = undefined;
|
|
38
|
+
if (component && !noGrid) {
|
|
39
|
+
let ids = deleteGridItem($app, component, parent);
|
|
40
|
+
for (const key of ids) {
|
|
41
|
+
delete $staticOutputs[key];
|
|
42
|
+
delete $runnableComponents[key];
|
|
54
43
|
}
|
|
55
44
|
}
|
|
45
|
+
delete $staticOutputs[component.id];
|
|
46
|
+
delete $runnableComponents[component.id];
|
|
47
|
+
$app = $app;
|
|
48
|
+
$staticOutputs = $staticOutputs;
|
|
49
|
+
$runnableComponents = $runnableComponents;
|
|
50
|
+
onDelete?.();
|
|
56
51
|
}
|
|
57
52
|
$: extraLib =
|
|
58
53
|
component?.componentInput?.type === 'template' && $worldStore
|
|
@@ -143,15 +138,50 @@ $: extraLib =
|
|
|
143
138
|
</PanelSection>
|
|
144
139
|
{/if}
|
|
145
140
|
|
|
141
|
+
{#if component.type === 'tabscomponent'}
|
|
142
|
+
<GridTab bind:tabs={component.tabs} {component} />
|
|
143
|
+
{/if}
|
|
144
|
+
|
|
146
145
|
{#if component.type === 'tablecomponent' && Array.isArray(component.actionButtons)}
|
|
147
146
|
<TableActions id={component.id} bind:components={component.actionButtons} />
|
|
148
147
|
{/if}
|
|
149
148
|
|
|
150
149
|
<AlignmentEditor bind:component />
|
|
151
|
-
{#if component.type === 'buttoncomponent' || component.type === 'formcomponent'}
|
|
150
|
+
{#if component.type === 'buttoncomponent' || component.type === 'formcomponent' || component.type === 'formbuttoncomponent'}
|
|
152
151
|
<Recompute bind:recomputeIds={component.recomputeIds} ownId={component.id} />
|
|
153
152
|
{/if}
|
|
154
153
|
|
|
154
|
+
{#if Object.keys(component.customCss ?? {}).length > 0}
|
|
155
|
+
<PanelSection title="Custom CSS">
|
|
156
|
+
{#each Object.keys(component.customCss ?? {}) as name}
|
|
157
|
+
{#if component?.customCss?.[name]}
|
|
158
|
+
<div class="mb-2">
|
|
159
|
+
<CssProperty {name} bind:value={component.customCss[name]} />
|
|
160
|
+
</div>
|
|
161
|
+
{/if}
|
|
162
|
+
{/each}
|
|
163
|
+
</PanelSection>
|
|
164
|
+
{/if}
|
|
165
|
+
|
|
166
|
+
<PanelSection title="Duplicate">
|
|
167
|
+
<Button
|
|
168
|
+
size="xs"
|
|
169
|
+
color="dark"
|
|
170
|
+
startIcon={{ icon: faCopy }}
|
|
171
|
+
on:click={() => {
|
|
172
|
+
if (component) {
|
|
173
|
+
duplicateElement(component.id)
|
|
174
|
+
}
|
|
175
|
+
}}
|
|
176
|
+
>
|
|
177
|
+
Duplicate component: {component.id}
|
|
178
|
+
</Button>
|
|
179
|
+
</PanelSection>
|
|
180
|
+
|
|
181
|
+
<PanelSection title="Move to other grid">
|
|
182
|
+
<MoveToOtherGrid bind:component {parent} />
|
|
183
|
+
</PanelSection>
|
|
184
|
+
|
|
155
185
|
<PanelSection title="Danger zone">
|
|
156
186
|
<Button
|
|
157
187
|
size="xs"
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
import type { AppComponent } from '
|
|
2
|
+
import type { AppComponent } from '../component';
|
|
3
3
|
declare const __propDef: {
|
|
4
4
|
props: {
|
|
5
|
-
component: AppComponent
|
|
6
|
-
onDelete?: (() => void) | undefined;
|
|
5
|
+
component: AppComponent;
|
|
7
6
|
rowColumns?: boolean | undefined;
|
|
7
|
+
onDelete?: (() => void) | undefined;
|
|
8
|
+
parent: string | undefined;
|
|
9
|
+
noGrid?: boolean | undefined;
|
|
8
10
|
};
|
|
9
11
|
events: {
|
|
10
12
|
[evt: string]: CustomEvent<any>;
|