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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const BUTTON_COLORS = ['blue', 'red', 'dark', 'light', 'green', 'gray'];
|
|
1
|
+
export const BUTTON_COLORS = ['blue', 'red', 'dark', 'light', 'green', 'gray', 'none'];
|
|
2
2
|
export var ButtonType;
|
|
3
3
|
(function (ButtonType) {
|
|
4
4
|
ButtonType.FontSizeClasses = {
|
|
@@ -9,11 +9,26 @@ export var ButtonType;
|
|
|
9
9
|
xl: 'text-xl'
|
|
10
10
|
};
|
|
11
11
|
ButtonType.SpacingClasses = {
|
|
12
|
-
xs:
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
xs: {
|
|
13
|
+
border: 'px-3 py-[6px]',
|
|
14
|
+
contained: 'px-3 py-[7px]'
|
|
15
|
+
},
|
|
16
|
+
sm: {
|
|
17
|
+
border: 'px-3 py-[6px]',
|
|
18
|
+
contained: 'px-3 py-[7px]'
|
|
19
|
+
},
|
|
20
|
+
md: {
|
|
21
|
+
border: 'px-3 py-[6px]',
|
|
22
|
+
contained: 'px-3 py-[7px]'
|
|
23
|
+
},
|
|
24
|
+
lg: {
|
|
25
|
+
border: 'px-4 py-[8px]',
|
|
26
|
+
contained: 'px-4 py-[9px]'
|
|
27
|
+
},
|
|
28
|
+
xl: {
|
|
29
|
+
border: 'px-4 py-[8px]',
|
|
30
|
+
contained: 'px-4 py-[9px]'
|
|
31
|
+
},
|
|
17
32
|
};
|
|
18
33
|
ButtonType.IconScale = {
|
|
19
34
|
xs: 0.7,
|
|
@@ -23,12 +23,19 @@ function onKeyDown(event) {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
+
function fadeFast(node) {
|
|
27
|
+
return fade(node, { duration: 100 });
|
|
28
|
+
}
|
|
26
29
|
</script>
|
|
27
30
|
|
|
28
31
|
<svelte:window on:keydown={onKeyDown} />
|
|
29
32
|
|
|
30
33
|
{#if open}
|
|
31
|
-
<div
|
|
34
|
+
<div
|
|
35
|
+
transition:fadeFast|local
|
|
36
|
+
class={'absolute top-0 bottom-0 left-0 right-0 z-50'}
|
|
37
|
+
role="dialog"
|
|
38
|
+
>
|
|
32
39
|
<div
|
|
33
40
|
class={classNames(
|
|
34
41
|
'fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity',
|
|
@@ -41,9 +41,9 @@ onDestroy(() => {
|
|
|
41
41
|
}}
|
|
42
42
|
>
|
|
43
43
|
<div class="flex flex-col w-full space-y-4">
|
|
44
|
-
<span
|
|
45
|
-
|
|
46
|
-
locally saved)
|
|
47
|
-
>
|
|
44
|
+
<span>
|
|
45
|
+
Are you sure you want to discard change you have made? (A draft has been temporarily and
|
|
46
|
+
locally saved)
|
|
47
|
+
</span>
|
|
48
48
|
</div>
|
|
49
49
|
</ConfirmationModal>
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
<script>import { createEventDispatcher } from "svelte";
|
|
2
|
+
import { FileUp } from "lucide-svelte";
|
|
3
|
+
import Button from "../../common/button/Button.svelte";
|
|
4
|
+
import { faTrash } from "@fortawesome/free-solid-svg-icons";
|
|
5
|
+
let c = '';
|
|
6
|
+
export { c as class };
|
|
7
|
+
export let accept = '*';
|
|
8
|
+
export let multiple = false;
|
|
9
|
+
export let convertToBase64 = false;
|
|
10
|
+
export let hideIcon = false;
|
|
11
|
+
export let iconSize = 36;
|
|
12
|
+
const dispatch = createEventDispatcher();
|
|
13
|
+
let input;
|
|
14
|
+
let files = undefined;
|
|
15
|
+
async function onChange(fileList) {
|
|
16
|
+
if (!fileList || !fileList.length) {
|
|
17
|
+
files = undefined;
|
|
18
|
+
dispatch('change', files);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (!multiple || !files) {
|
|
22
|
+
files = [];
|
|
23
|
+
}
|
|
24
|
+
for (let i = 0; i < fileList.length; i++) {
|
|
25
|
+
const file = fileList.item(i);
|
|
26
|
+
if (file)
|
|
27
|
+
files.push(file);
|
|
28
|
+
}
|
|
29
|
+
// Needs to be reset so the same file can be selected
|
|
30
|
+
// multiple times in a row
|
|
31
|
+
input.value = '';
|
|
32
|
+
dispatchChange();
|
|
33
|
+
}
|
|
34
|
+
async function fileToBase64(file) {
|
|
35
|
+
return new Promise((resolve) => {
|
|
36
|
+
const reader = new FileReader();
|
|
37
|
+
reader.onloadend = () => {
|
|
38
|
+
resolve(reader.result);
|
|
39
|
+
};
|
|
40
|
+
reader.readAsDataURL(file);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function removeFile(index) {
|
|
44
|
+
if (!files)
|
|
45
|
+
return;
|
|
46
|
+
files.splice(index, 1);
|
|
47
|
+
files = files.length ? files : undefined;
|
|
48
|
+
dispatchChange();
|
|
49
|
+
}
|
|
50
|
+
async function dispatchChange() {
|
|
51
|
+
files = files;
|
|
52
|
+
if (convertToBase64 && files) {
|
|
53
|
+
const promises = files.map(fileToBase64);
|
|
54
|
+
const b64s = await Promise.all(promises);
|
|
55
|
+
dispatch('change', b64s);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
dispatch('change', files);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
</script>
|
|
62
|
+
|
|
63
|
+
<button
|
|
64
|
+
class="relative center-center flex-col text-center font-medium text-gray-600
|
|
65
|
+
border-2 border-dashed border-gray-400 hover:border-blue-500
|
|
66
|
+
focus-within:border-blue-500 hover:bg-blue-50 focus-within:bg-blue-50
|
|
67
|
+
duration-200 rounded-lg p-1 {c ?? ''}"
|
|
68
|
+
>
|
|
69
|
+
{#if !hideIcon && !files}
|
|
70
|
+
<FileUp size={iconSize} class="mb-2" />
|
|
71
|
+
{/if}
|
|
72
|
+
{#if files}
|
|
73
|
+
<div class="w-full max-h-full overflow-auto px-6">
|
|
74
|
+
<slot name="selected-title">
|
|
75
|
+
<div class="text-center mb-2 px-2">
|
|
76
|
+
Selected file{files.length > 1 ? 's' : ''}:
|
|
77
|
+
</div>
|
|
78
|
+
</slot>
|
|
79
|
+
<ul class="relative z-20 max-w-[250px] bg-white rounded-lg overflow-hidden mx-auto">
|
|
80
|
+
{#each files as {name}, i}
|
|
81
|
+
<li class="flex justify-between items-center font-normal text-sm
|
|
82
|
+
hover:bg-gray-300/20 duration-200 py-1 px-2 cursor-default">
|
|
83
|
+
<span class="pr-2 ellipsize">{name}</span>
|
|
84
|
+
<Button
|
|
85
|
+
size="xs"
|
|
86
|
+
color="red"
|
|
87
|
+
variant="border"
|
|
88
|
+
iconOnly
|
|
89
|
+
btnClasses="bg-transparent"
|
|
90
|
+
startIcon={{ icon: faTrash }}
|
|
91
|
+
on:click={() => removeFile(i)}
|
|
92
|
+
/>
|
|
93
|
+
</li>
|
|
94
|
+
{/each}
|
|
95
|
+
</ul>
|
|
96
|
+
</div>
|
|
97
|
+
{:else}
|
|
98
|
+
<slot>
|
|
99
|
+
<span>Drag and drop {multiple ? 'files' : 'a file'}</span>
|
|
100
|
+
</slot>
|
|
101
|
+
{/if}
|
|
102
|
+
<input
|
|
103
|
+
class="!absolute !inset-0 !z-10 !opacity-0 !cursor-pointer"
|
|
104
|
+
type="file"
|
|
105
|
+
title={files ? `${files.length} file${files.length > 1 ? 's' : ''} chosen` : 'No file chosen'}
|
|
106
|
+
bind:this={input}
|
|
107
|
+
on:change={({currentTarget}) => {onChange(currentTarget.files)}}
|
|
108
|
+
{accept}
|
|
109
|
+
{multiple}
|
|
110
|
+
{...$$restProps}
|
|
111
|
+
/>
|
|
112
|
+
</button>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
[x: string]: any;
|
|
5
|
+
class?: string | undefined;
|
|
6
|
+
accept?: string | undefined;
|
|
7
|
+
multiple?: boolean | undefined;
|
|
8
|
+
convertToBase64?: boolean | undefined;
|
|
9
|
+
hideIcon?: boolean | undefined;
|
|
10
|
+
iconSize?: number | undefined;
|
|
11
|
+
};
|
|
12
|
+
events: {
|
|
13
|
+
change: CustomEvent<any>;
|
|
14
|
+
} & {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
};
|
|
17
|
+
slots: {
|
|
18
|
+
'selected-title': {};
|
|
19
|
+
default: {};
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export type FileInputProps = typeof __propDef.props;
|
|
23
|
+
export type FileInputEvents = typeof __propDef.events;
|
|
24
|
+
export type FileInputSlots = typeof __propDef.slots;
|
|
25
|
+
export default class FileInput extends SvelteComponentTyped<FileInputProps, FileInputEvents, FileInputSlots> {
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
@@ -17,6 +17,7 @@ export { default as Tabs } from './tabs/Tabs.svelte';
|
|
|
17
17
|
export { default as ToggleButton } from './toggleButton/ToggleButton.svelte';
|
|
18
18
|
export { default as ToggleButtonGroup } from './toggleButton/ToggleButtonGroup.svelte';
|
|
19
19
|
export { default as Breadcrumb } from './breadcrumb/Breadcrumb.svelte';
|
|
20
|
+
export { default as FileInput } from './fileInput/FileInput.svelte';
|
|
20
21
|
export * from './alert/model';
|
|
21
22
|
export * from './badge/model';
|
|
22
23
|
export * from './button/model';
|
|
@@ -17,6 +17,7 @@ export { default as Tabs } from './tabs/Tabs.svelte';
|
|
|
17
17
|
export { default as ToggleButton } from './toggleButton/ToggleButton.svelte';
|
|
18
18
|
export { default as ToggleButtonGroup } from './toggleButton/ToggleButtonGroup.svelte';
|
|
19
19
|
export { default as Breadcrumb } from './breadcrumb/Breadcrumb.svelte';
|
|
20
|
+
export { default as FileInput } from './fileInput/FileInput.svelte';
|
|
20
21
|
export * from './alert/model';
|
|
21
22
|
export * from './badge/model';
|
|
22
23
|
export * from './button/model';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/** @typedef {typeof __propDef.events} KbdEvents */
|
|
3
3
|
/** @typedef {typeof __propDef.slots} KbdSlots */
|
|
4
4
|
export default class Kbd extends SvelteComponentTyped<{
|
|
5
|
-
[x: string]:
|
|
5
|
+
[x: string]: any;
|
|
6
6
|
}, {
|
|
7
7
|
[evt: string]: CustomEvent<any>;
|
|
8
8
|
}, {
|
|
@@ -15,7 +15,7 @@ export type KbdSlots = typeof __propDef.slots;
|
|
|
15
15
|
import { SvelteComponentTyped } from "svelte";
|
|
16
16
|
declare const __propDef: {
|
|
17
17
|
props: {
|
|
18
|
-
[x: string]:
|
|
18
|
+
[x: string]: any;
|
|
19
19
|
};
|
|
20
20
|
events: {
|
|
21
21
|
[evt: string]: CustomEvent<any>;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<script>import { classNames } from '../../../utils';
|
|
2
|
+
import { createEventDispatcher } from 'svelte';
|
|
3
|
+
import { fade } from 'svelte/transition';
|
|
4
|
+
import Button from '../button/Button.svelte';
|
|
5
|
+
import Badge from '../badge/Badge.svelte';
|
|
6
|
+
export let title;
|
|
7
|
+
export let open = false;
|
|
8
|
+
const dispatch = createEventDispatcher();
|
|
9
|
+
function onKeyDown(event) {
|
|
10
|
+
if (open) {
|
|
11
|
+
switch (event.key) {
|
|
12
|
+
case 'Enter':
|
|
13
|
+
event.stopPropagation();
|
|
14
|
+
event.preventDefault();
|
|
15
|
+
dispatch('confirmed');
|
|
16
|
+
break;
|
|
17
|
+
case 'Escape':
|
|
18
|
+
event.stopPropagation();
|
|
19
|
+
event.preventDefault();
|
|
20
|
+
dispatch('canceled');
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function fadeFast(node) {
|
|
26
|
+
return fade(node, { duration: 100 });
|
|
27
|
+
}
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<svelte:window on:keydown={onKeyDown} />
|
|
31
|
+
|
|
32
|
+
{#if open}
|
|
33
|
+
<div
|
|
34
|
+
transition:fadeFast|local
|
|
35
|
+
class={'absolute top-0 bottom-0 left-0 right-0 z-50'}
|
|
36
|
+
role="dialog"
|
|
37
|
+
>
|
|
38
|
+
<div
|
|
39
|
+
class={classNames(
|
|
40
|
+
'fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity',
|
|
41
|
+
open ? 'ease-out duration-300 opacity-100' : 'ease-in duration-200 opacity-0'
|
|
42
|
+
)}
|
|
43
|
+
/>
|
|
44
|
+
|
|
45
|
+
<div class="fixed inset-0 z-10 overflow-y-auto">
|
|
46
|
+
<div class="flex min-h-full items-center justify-center p-4">
|
|
47
|
+
<div
|
|
48
|
+
class={classNames(
|
|
49
|
+
'relative transform overflow-hidden rounded-lg bg-white px-4 pt-5 pb-4 text-left shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-lg sm:p-6',
|
|
50
|
+
open
|
|
51
|
+
? 'ease-out duration-300 opacity-100 translate-y-0 sm:scale-100'
|
|
52
|
+
: 'ease-in duration-200 opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95'
|
|
53
|
+
)}
|
|
54
|
+
>
|
|
55
|
+
<div class="flex">
|
|
56
|
+
<div class="ml-4 text-left flex-1">
|
|
57
|
+
<h3 class="text-lg font-medium text-gray-900">
|
|
58
|
+
{title}
|
|
59
|
+
</h3>
|
|
60
|
+
<div class="mt-2 text-sm text-gray-500">
|
|
61
|
+
<slot />
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
<div class="flex items-center space-x-2 flex-row-reverse space-x-reverse mt-4">
|
|
66
|
+
<Button on:click={() => dispatch('canceled')} color="light" size="sm">
|
|
67
|
+
<span class="gap-2">Cancel <Badge color="dark-gray">Escape</Badge></span>
|
|
68
|
+
</Button>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
{/if}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
title: string;
|
|
5
|
+
open?: boolean | undefined;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
canceled: CustomEvent<any>;
|
|
9
|
+
confirmed: CustomEvent<any>;
|
|
10
|
+
} & {
|
|
11
|
+
[evt: string]: CustomEvent<any>;
|
|
12
|
+
};
|
|
13
|
+
slots: {
|
|
14
|
+
default: {};
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export type ModalProps = typeof __propDef.props;
|
|
18
|
+
export type ModalEvents = typeof __propDef.events;
|
|
19
|
+
export type ModalSlots = typeof __propDef.slots;
|
|
20
|
+
export default class Modal extends SvelteComponentTyped<ModalProps, ModalEvents, ModalSlots> {
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
@@ -1,43 +1,46 @@
|
|
|
1
1
|
<svelte:options accessors />
|
|
2
2
|
|
|
3
|
-
<script>import {
|
|
3
|
+
<script>import { onDestroy } from 'svelte';
|
|
4
4
|
import { slide } from 'svelte/transition';
|
|
5
5
|
import { createPopperActions } from 'svelte-popperjs';
|
|
6
6
|
import { clickOutside } from '../../../utils';
|
|
7
7
|
import { createStateMachine } from '../../../stateMachine';
|
|
8
8
|
export let ref;
|
|
9
|
-
export let options = { placement: 'auto' };
|
|
9
|
+
export let options = { placement: 'auto', strategy: 'fixed' };
|
|
10
10
|
/** Events on the reference element */
|
|
11
11
|
export let openOn = ['focus'];
|
|
12
12
|
/** Events on the reference element */
|
|
13
13
|
export let closeOn = ['blur'];
|
|
14
14
|
export let innerClasses = '';
|
|
15
15
|
export let outerClasses = '';
|
|
16
|
+
export let transition = slide;
|
|
16
17
|
const states = ['closed', 'open-focus-in', 'open-focus-out'];
|
|
17
18
|
const stateMachine = createStateMachine(states, {
|
|
18
19
|
to: {
|
|
19
20
|
closed: ({ previousState, currentState }) => {
|
|
20
|
-
|
|
21
|
-
const revert = popup.contains(activeElem) || ref.contains(activeElem);
|
|
22
|
-
return revert ? previousState : currentState;
|
|
21
|
+
return isFocusContained() ? previousState : currentState;
|
|
23
22
|
}
|
|
24
23
|
}
|
|
25
24
|
});
|
|
26
|
-
const [popperRef, popperContent] = createPopperActions();
|
|
25
|
+
const [popperRef, popperContent, getInstance] = createPopperActions();
|
|
27
26
|
let popup;
|
|
28
27
|
let focusableElements;
|
|
29
28
|
function getFocusableElements() {
|
|
30
29
|
let elements = [];
|
|
31
30
|
popup
|
|
32
|
-
|
|
31
|
+
?.querySelectorAll('a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])')
|
|
33
32
|
.forEach((elem) => elements.push(elem));
|
|
34
33
|
focusableElements = elements.filter((el) => !el.hasAttribute('disabled') && !el.getAttribute('aria-hidden'));
|
|
35
34
|
focusableElements.forEach((el) => {
|
|
36
35
|
el.tabIndex = -1;
|
|
37
36
|
el.addEventListener('click', openFocusIn);
|
|
38
|
-
el.addEventListener('blur',
|
|
37
|
+
el.addEventListener('blur', conditionalClosed);
|
|
39
38
|
});
|
|
40
39
|
}
|
|
40
|
+
function isFocusContained() {
|
|
41
|
+
const activeElem = document.activeElement;
|
|
42
|
+
return popup?.contains(activeElem) || ref?.contains(activeElem);
|
|
43
|
+
}
|
|
41
44
|
function closed() {
|
|
42
45
|
if ($stateMachine.currentState === 'open-focus-out') {
|
|
43
46
|
setTimeout(() => {
|
|
@@ -48,6 +51,11 @@ function closed() {
|
|
|
48
51
|
stateMachine.setState('closed');
|
|
49
52
|
}
|
|
50
53
|
}
|
|
54
|
+
function conditionalClosed() {
|
|
55
|
+
if (isFocusContained())
|
|
56
|
+
return;
|
|
57
|
+
closed();
|
|
58
|
+
}
|
|
51
59
|
function openFocusOut() {
|
|
52
60
|
stateMachine.setState('open-focus-out');
|
|
53
61
|
}
|
|
@@ -62,18 +70,20 @@ function keyDown(event) {
|
|
|
62
70
|
if (event.key === 'Escape') {
|
|
63
71
|
return document.activeElement?.blur();
|
|
64
72
|
}
|
|
65
|
-
|
|
73
|
+
const prev = ['Up', 'Left'];
|
|
74
|
+
const next = ['Down', 'Right'];
|
|
75
|
+
if (![...prev, ...next].some((dir) => `Arrow${dir}` === event.key))
|
|
66
76
|
return;
|
|
67
77
|
event.preventDefault();
|
|
68
|
-
if (popup
|
|
78
|
+
if (popup?.contains(document.activeElement)) {
|
|
69
79
|
const index = focusableElements.findIndex((elem) => elem === document.activeElement);
|
|
70
80
|
if (index === -1)
|
|
71
81
|
return;
|
|
72
82
|
let targetIndex = undefined;
|
|
73
|
-
if (
|
|
83
|
+
if (prev.some((dir) => `Arrow${dir}` === event.key)) {
|
|
74
84
|
targetIndex = index === 0 ? focusableElements.length - 1 : index - 1;
|
|
75
85
|
}
|
|
76
|
-
else if (
|
|
86
|
+
else if (next.some((dir) => `Arrow${dir}` === event.key)) {
|
|
77
87
|
targetIndex = index + 1 === focusableElements.length ? 0 : index + 1;
|
|
78
88
|
}
|
|
79
89
|
if (targetIndex !== undefined) {
|
|
@@ -90,12 +100,16 @@ function keyDown(event) {
|
|
|
90
100
|
}
|
|
91
101
|
}
|
|
92
102
|
function addRefListeners() {
|
|
103
|
+
if (!ref)
|
|
104
|
+
return;
|
|
93
105
|
openOn.forEach((action) => ref.addEventListener(action, openFocusOut));
|
|
94
106
|
closeOn.forEach((action) => ref.addEventListener(action, closed));
|
|
95
107
|
}
|
|
96
108
|
function removeAllListeners() {
|
|
97
109
|
focusableElements?.forEach((el) => el.removeEventListener('click', openFocusIn));
|
|
98
|
-
focusableElements?.forEach((el) => el.removeEventListener('blur',
|
|
110
|
+
focusableElements?.forEach((el) => el.removeEventListener('blur', conditionalClosed));
|
|
111
|
+
if (!ref)
|
|
112
|
+
return;
|
|
99
113
|
openOn.forEach((action) => ref.removeEventListener(action, openFocusOut));
|
|
100
114
|
closeOn.forEach((action) => ref.removeEventListener(action, closed));
|
|
101
115
|
}
|
|
@@ -105,18 +119,21 @@ $: if ($stateMachine.currentState === 'closed') {
|
|
|
105
119
|
else {
|
|
106
120
|
setTimeout(() => {
|
|
107
121
|
getFocusableElements();
|
|
122
|
+
getInstance()?.update();
|
|
108
123
|
}, 0);
|
|
109
124
|
}
|
|
110
|
-
|
|
125
|
+
$: if (ref) {
|
|
111
126
|
popperRef(ref);
|
|
112
127
|
addRefListeners();
|
|
113
|
-
}
|
|
128
|
+
}
|
|
129
|
+
$: $$slots.default && getInstance()?.update();
|
|
114
130
|
onDestroy(removeAllListeners);
|
|
115
131
|
</script>
|
|
116
132
|
|
|
117
133
|
<svelte:window on:keydown={keyDown} />
|
|
118
134
|
|
|
119
135
|
<div
|
|
136
|
+
class="z-50"
|
|
120
137
|
bind:this={popup}
|
|
121
138
|
use:popperContent={options}
|
|
122
139
|
use:clickOutside
|
|
@@ -125,9 +142,9 @@ onDestroy(removeAllListeners);
|
|
|
125
142
|
aria-expanded={$stateMachine.currentState !== 'closed'}
|
|
126
143
|
>
|
|
127
144
|
{#if $stateMachine.currentState !== 'closed'}
|
|
128
|
-
<div transition:
|
|
145
|
+
<div transition:transition|local={{ duration: 200 }} class={outerClasses}>
|
|
129
146
|
<div class={innerClasses}>
|
|
130
|
-
<slot />
|
|
147
|
+
<slot close={closed} />
|
|
131
148
|
</div>
|
|
132
149
|
</div>
|
|
133
150
|
{/if}
|
|
@@ -1,28 +1,32 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import { type TransitionConfig } from 'svelte/transition';
|
|
2
3
|
import { type PopperOptions } from 'svelte-popperjs';
|
|
3
4
|
declare const __propDef: {
|
|
4
5
|
props: {
|
|
5
|
-
ref: HTMLElement;
|
|
6
|
+
ref: HTMLElement | undefined;
|
|
6
7
|
options?: PopperOptions<any>;
|
|
7
8
|
/** Events on the reference element */ openOn?: (keyof HTMLElementEventMap)[] | undefined;
|
|
8
9
|
/** Events on the reference element */ closeOn?: (keyof HTMLElementEventMap)[] | undefined;
|
|
9
10
|
innerClasses?: string | undefined;
|
|
10
11
|
outerClasses?: string | undefined;
|
|
12
|
+
transition?: ((node: Element, params?: Record<string, any>) => TransitionConfig) | undefined;
|
|
11
13
|
};
|
|
12
14
|
events: {
|
|
13
15
|
[evt: string]: CustomEvent<any>;
|
|
14
16
|
};
|
|
15
17
|
slots: {
|
|
16
|
-
default: {
|
|
18
|
+
default: {
|
|
19
|
+
close: () => void;
|
|
20
|
+
};
|
|
17
21
|
};
|
|
18
22
|
};
|
|
19
23
|
export type PopupProps = typeof __propDef.props;
|
|
20
24
|
export type PopupEvents = typeof __propDef.events;
|
|
21
25
|
export type PopupSlots = typeof __propDef.slots;
|
|
22
26
|
export default class Popup extends SvelteComponentTyped<PopupProps, PopupEvents, PopupSlots> {
|
|
23
|
-
get ref(): HTMLElement;
|
|
27
|
+
get ref(): HTMLElement | undefined;
|
|
24
28
|
/**accessor*/
|
|
25
|
-
set ref(_: HTMLElement);
|
|
29
|
+
set ref(_: HTMLElement | undefined);
|
|
26
30
|
get options(): PopperOptions<any>;
|
|
27
31
|
/**accessor*/
|
|
28
32
|
set options(_: PopperOptions<any>);
|
|
@@ -38,5 +42,8 @@ export default class Popup extends SvelteComponentTyped<PopupProps, PopupEvents,
|
|
|
38
42
|
get outerClasses(): string | undefined;
|
|
39
43
|
/**accessor*/
|
|
40
44
|
set outerClasses(_: string | undefined);
|
|
45
|
+
get transition(): ((node: Element, params?: Record<string, any> | undefined) => TransitionConfig) | undefined;
|
|
46
|
+
/**accessor*/
|
|
47
|
+
set transition(_: ((node: Element, params?: Record<string, any> | undefined) => TransitionConfig) | undefined);
|
|
41
48
|
}
|
|
42
49
|
export {};
|
|
@@ -5,7 +5,7 @@ import SharedBadge from '../../SharedBadge.svelte';
|
|
|
5
5
|
import { FlowService } from '../../../gen';
|
|
6
6
|
import { userStore, workspaceStore } from '../../../stores';
|
|
7
7
|
import { sendUserToast } from '../../../utils';
|
|
8
|
-
import { faArchive, faCalendarAlt, faCodeFork, faEdit, faEye, faFileExport, faList, faPlay, faShare } from '@fortawesome/free-solid-svg-icons';
|
|
8
|
+
import { faArchive, faCalendarAlt, faCodeFork, faEdit, faEye, faFileExport, faList, faPlay, faShare, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
|
|
9
9
|
import { MoreVertical } from 'lucide-svelte';
|
|
10
10
|
import { createEventDispatcher } from 'svelte';
|
|
11
11
|
import Button from '../button/Button.svelte';
|
|
@@ -27,6 +27,16 @@ async function archiveFlow(path) {
|
|
|
27
27
|
sendUserToast(`Could not archive this flow ${err.body}`, true);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
+
async function deleteFlow(path) {
|
|
31
|
+
try {
|
|
32
|
+
await FlowService.deleteFlowByPath({ workspace: $workspaceStore, path });
|
|
33
|
+
dispatch('change');
|
|
34
|
+
sendUserToast(`Deleted flow ${path}`);
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
sendUserToast(`Could not delete this flow ${err.body}`, true);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
30
40
|
let scheduleEditor;
|
|
31
41
|
</script>
|
|
32
42
|
|
|
@@ -75,7 +85,7 @@ let scheduleEditor;
|
|
|
75
85
|
{/if}
|
|
76
86
|
|
|
77
87
|
<Button
|
|
78
|
-
href="/flows/get/{path}"
|
|
88
|
+
href="/flows/get/{path}?workspace_id={$workspaceStore}"
|
|
79
89
|
color="light"
|
|
80
90
|
variant="border"
|
|
81
91
|
size="xs"
|
|
@@ -102,7 +112,7 @@ let scheduleEditor;
|
|
|
102
112
|
{
|
|
103
113
|
displayName: 'View flow',
|
|
104
114
|
icon: faEye,
|
|
105
|
-
href: `/flows/get/${path}`
|
|
115
|
+
href: `/flows/get/${path}?workspace_id=${$workspaceStore}`
|
|
106
116
|
},
|
|
107
117
|
{
|
|
108
118
|
displayName: 'Edit',
|
|
@@ -150,6 +160,15 @@ let scheduleEditor;
|
|
|
150
160
|
},
|
|
151
161
|
type: 'delete',
|
|
152
162
|
disabled: !canWrite
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
displayName: 'Delete',
|
|
166
|
+
icon: faTrashAlt,
|
|
167
|
+
action: () => {
|
|
168
|
+
path ? deleteFlow(path) : null
|
|
169
|
+
},
|
|
170
|
+
type: 'delete',
|
|
171
|
+
disabled: !canWrite
|
|
153
172
|
}
|
|
154
173
|
]}
|
|
155
174
|
>
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { classNames } from '../../../utils';
|
|
3
3
|
import Badge from '../badge/Badge.svelte';
|
|
4
4
|
import { LanguageIcon } from '../languageIcons';
|
|
5
|
+
import Popover from '../../Popover.svelte';
|
|
5
6
|
export let language;
|
|
6
7
|
const languageLabel = {
|
|
7
8
|
[Script.language.PYTHON3]: 'Python',
|
|
@@ -27,8 +28,13 @@ const colorByLanguage = {
|
|
|
27
28
|
color={colorByLanguage}
|
|
28
29
|
baseClass={classNames(baseClassByLanguage, 'flex gap-1 items-center')}
|
|
29
30
|
>
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
<Popover notClickable>
|
|
32
|
+
<LanguageIcon lang={language} width={12} height={12} />
|
|
33
|
+
<span slot="text">
|
|
34
|
+
{languageLabel}
|
|
35
|
+
</span>
|
|
36
|
+
</Popover>
|
|
37
|
+
|
|
38
|
+
<!-- <span class="hidden xl:inline">
|
|
39
|
+
</span> -->
|
|
34
40
|
</Badge>
|
|
@@ -36,7 +36,7 @@ first-of-type:rounded-t-md last-of-type:rounded-b-md {color}"
|
|
|
36
36
|
</div>
|
|
37
37
|
</a>
|
|
38
38
|
{#if $$slots.badges}
|
|
39
|
-
<div class="hidden
|
|
39
|
+
<div class="hidden lg:flex flex-row gap-1 items-start">
|
|
40
40
|
<slot name="badges" />
|
|
41
41
|
</div>
|
|
42
42
|
{/if}
|
|
@@ -82,7 +82,7 @@ let scheduleEditor;
|
|
|
82
82
|
{/if}
|
|
83
83
|
|
|
84
84
|
<Button
|
|
85
|
-
href="/scripts/get/{hash}"
|
|
85
|
+
href="/scripts/get/{hash}?workspace_id={$workspaceStore}"
|
|
86
86
|
color="light"
|
|
87
87
|
variant="border"
|
|
88
88
|
size="xs"
|
|
@@ -108,7 +108,7 @@ let scheduleEditor;
|
|
|
108
108
|
{
|
|
109
109
|
displayName: 'View script',
|
|
110
110
|
icon: faEye,
|
|
111
|
-
href: `/scripts/get/${hash}`
|
|
111
|
+
href: `/scripts/get/${hash}?workspace_id=${$workspaceStore}`
|
|
112
112
|
},
|
|
113
113
|
|
|
114
114
|
{
|