diff --git a/frontend/src/lib/components/AppTutorials.svelte b/frontend/src/lib/components/AppTutorials.svelte new file mode 100644 index 0000000000..f32c613bb3 --- /dev/null +++ b/frontend/src/lib/components/AppTutorials.svelte @@ -0,0 +1,51 @@ + + + + + + + diff --git a/frontend/src/lib/components/apps/editor/AppEditor.svelte b/frontend/src/lib/components/apps/editor/AppEditor.svelte index ff42c37e03..cc36fd217f 100644 --- a/frontend/src/lib/components/apps/editor/AppEditor.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditor.svelte @@ -396,6 +396,12 @@ existingElement.innerHTML = theme } } + + let appEditorHeader: AppEditorHeader | undefined = undefined + + export function triggerTutorial() { + appEditorHeader?.toggleTutorial() + } @@ -404,7 +410,7 @@ {#if !$userStore?.operator} {#if $appStore} - + {#if $mode === 'preview'} @@ -530,6 +536,7 @@ selectedTab = 'insert' } }} + id="app-editor-component-library-tab" >
diff --git a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte index fda5dfed57..eba2e20182 100644 --- a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte @@ -62,6 +62,7 @@ import { secondaryMenuLeftStore, secondaryMenuRightStore } from './settingsPanel/secondaryMenu' import ButtonDropdown from '$lib/components/common/button/ButtonDropdown.svelte' import { MenuItem } from '@rgossiaux/svelte-headlessui' + import AppEditorTutorial from './AppEditorTutorial.svelte' async function hash(message) { try { @@ -432,6 +433,12 @@ } } ] + + let appEditorTutorial: AppEditorTutorial | undefined = undefined + + export function toggleTutorial() { + appEditorTutorial?.toggleTutorial() + } @@ -835,6 +842,7 @@ {/if}
+ + + + appTutorials?.runTutorialById('simpleapptutorial')} + label="App tutorial" + index={7} + /> + appTutorials?.runTutorialById('backgroundrunnables')} + label="Background runnables" + index={5} + /> + appTutorials?.runTutorialById('connection')} + label="Connection" + index={6} + /> + +
+ { + resetAllTodos() + }} + > +
+ Reset tutorials +
+
+ skipAllTodos()}> +
+ Skip tutorials +
+
+ + + + { + targetTutorial = detail.detail + }} +/> + + { + targetTutorial = undefined + }} + on:confirmed={async () => { + window.open(`/apps/add?tutorial=${targetTutorial}&nodraft=true`, '_blank') + }} +> +
+ This tutorial can only be run on a new app. +
+
+ + diff --git a/frontend/src/lib/components/apps/editor/ComponentHeader.svelte b/frontend/src/lib/components/apps/editor/ComponentHeader.svelte index fe561c68ee..2cf4fab52f 100644 --- a/frontend/src/lib/components/apps/editor/ComponentHeader.svelte +++ b/frontend/src/lib/components/apps/editor/ComponentHeader.svelte @@ -37,9 +37,10 @@ {#if connecting}
- +
diff --git a/frontend/src/lib/components/apps/editor/PreviewToggle.svelte b/frontend/src/lib/components/apps/editor/PreviewToggle.svelte index ff5dc6dea4..974c1352a1 100644 --- a/frontend/src/lib/components/apps/editor/PreviewToggle.svelte +++ b/frontend/src/lib/components/apps/editor/PreviewToggle.svelte @@ -19,5 +19,6 @@ icon={Eye} tooltip="Preview mode" disabled={loading} + id="app-editor-preview-toggle" /> diff --git a/frontend/src/lib/components/apps/editor/componentsPanel/ComponentList.svelte b/frontend/src/lib/components/apps/editor/componentsPanel/ComponentList.svelte index 4d5537b846..40b596ba34 100644 --- a/frontend/src/lib/components/apps/editor/componentsPanel/ComponentList.svelte +++ b/frontend/src/lib/components/apps/editor/componentsPanel/ComponentList.svelte @@ -51,7 +51,6 @@ if (!$workspaceStore) return const res = await getGroup($workspaceStore, group.path) - console.log(res) if (!res) return push(history, $app) @@ -108,21 +107,22 @@ -
- {#if componentsFiltered.reduce((acc, { components }) => acc + components.length, 0) === 0} +
+ {#if componentsFiltered.reduce((acc, { components, presets }) => acc + components.length + (Array.isArray(presets) ? presets.length : 0), 0) === 0}
No components found
{:else}
{#each componentsFiltered as { title, components, presets }, index (index)} - {#if components.length} + {#if components.length || presets?.length}
{#each components as item (item)}
@@ -222,6 +233,8 @@
+ +