diff --git a/src/lib/components/workspace/Tools.svelte b/src/lib/components/workspace/Tools.svelte index f39d2d391..a11c9f722 100644 --- a/src/lib/components/workspace/Tools.svelte +++ b/src/lib/components/workspace/Tools.svelte @@ -18,6 +18,8 @@ import ArrowDownTray from '../icons/ArrowDownTray.svelte'; import Tooltip from '../common/Tooltip.svelte'; import ConfirmDialog from '../common/ConfirmDialog.svelte'; + import ToolMenu from './Tools/ToolMenu.svelte'; + import EllipsisHorizontal from '../icons/EllipsisHorizontal.svelte'; const i18n = getContext('i18n'); @@ -26,6 +28,52 @@ let showConfirm = false; let query = ''; + + const shareHandler = async (tool) => { + console.log(tool); + }; + + const cloneHandler = async (tool) => { + const _tool = await getToolById(localStorage.token, tool.id).catch((error) => { + toast.error(error); + return null; + }); + + if (_tool) { + sessionStorage.tool = JSON.stringify({ + ..._tool, + id: `${_tool.id}_clone`, + name: `${_tool.name} (Clone)` + }); + goto('/workspace/tools/create'); + } + }; + + const exportHandler = async (tool) => { + const _tool = await getToolById(localStorage.token, tool.id).catch((error) => { + toast.error(error); + return null; + }); + + if (_tool) { + let blob = new Blob([JSON.stringify([_tool])], { + type: 'application/json' + }); + saveAs(blob, `tool-${_tool.id}-export-${Date.now()}.json`); + } + }; + + const deleteHandler = async (tool) => { + const res = await deleteToolById(localStorage.token, tool.id).catch((error) => { + toast.error(error); + return null; + }); + + if (res) { + toast.success('Tool deleted successfully'); + tools.set(await getTools(localStorage.token)); + } + }; @@ -85,18 +133,14 @@ {#each $tools.filter((t) => query === '' || t.name .toLowerCase() .includes(query.toLowerCase()) || t.id.toLowerCase().includes(query.toLowerCase())) as tool} - - - - - - - - - - + - + {/each} diff --git a/src/lib/components/workspace/Tools/ToolMenu.svelte b/src/lib/components/workspace/Tools/ToolMenu.svelte new file mode 100644 index 000000000..9a4177b1e --- /dev/null +++ b/src/lib/components/workspace/Tools/ToolMenu.svelte @@ -0,0 +1,92 @@ + + + { + if (e.detail === false) { + onClose(); + } + }} +> + + + + +
+ + { + shareHandler(); + }} + > + +
{$i18n.t('Share')}
+
+ + { + cloneHandler(); + }} + > + + +
{$i18n.t('Clone')}
+
+ + { + exportHandler(); + }} + > + + +
{$i18n.t('Export')}
+
+ +
+ + { + deleteHandler(); + }} + > + +
{$i18n.t('Delete')}
+
+
+
+