diff --git a/docs/components/Repl.vue b/docs/components/Repl.vue index c7d32ea7..78fb1d9b 100644 --- a/docs/components/Repl.vue +++ b/docs/components/Repl.vue @@ -47,8 +47,9 @@ watchEffect( const files: any = {} const imports = exampleImports[props.example] +const additionalImports = 'additionalImports' in imports ? imports.additionalImports : {} -for (const example of Object.keys(imports)) { +for (const example of Object.keys(imports).filter((i) => i !== 'additionalImports')) { if (example.includes('css')) { css += `${imports[example as keyof typeof imports]}` } else { @@ -71,6 +72,7 @@ onMounted(async () => { store.setImportMap({ imports: { '@braks/vue-flow': `${location.origin}/vue-flow.es.js`, + ...additionalImports, }, }) }) diff --git a/docs/components/examples/index.ts b/docs/components/examples/index.ts index 6d92740d..672744e2 100644 --- a/docs/components/examples/index.ts +++ b/docs/components/examples/index.ts @@ -15,6 +15,7 @@ import { InteractionApp, InteractionCSS, InteractionControls } from './interacti import { MultiApp, MultiCSS, MultiFlow } from './multi' import { HorizontalApp, HorizontalElements } from './horizontal' import { TeleportApp, TeleportCSS, TeleportSidebar, TeleportableNode, TeleportableUseTransition } from './teleport' +import { TransitionApp, TransitionCSS, TransitionEdge } from './transition' export const exampleImports = { basic: { @@ -97,4 +98,14 @@ export const exampleImports = { 'useTransition.js': TeleportableUseTransition, 'style.css': TeleportCSS, }, + transition: { + 'App.vue': TransitionApp, + 'TransitionEdge.vue': TransitionEdge, + 'style.css': TransitionCSS, + 'additionalImports': { + '@vueuse/core': 'https://cdn.jsdelivr.net/npm/@vueuse/core@9.3.0/index.mjs', + '@vueuse/shared': 'https://cdn.jsdelivr.net/npm/@vueuse/shared@9.3.0/index.mjs', + 'vue-demi': 'https://cdn.jsdelivr.net/npm/vue-demi@0.13.11/lib/index.mjs', + }, + }, } diff --git a/docs/components/examples/teleport/TeleportableNode.vue b/docs/components/examples/teleport/TeleportableNode.vue index e1c4a8e9..3be6a9c1 100644 --- a/docs/components/examples/teleport/TeleportableNode.vue +++ b/docs/components/examples/teleport/TeleportableNode.vue @@ -1,6 +1,6 @@ + + diff --git a/docs/components/examples/transition/TransitionEdge.vue b/docs/components/examples/transition/TransitionEdge.vue new file mode 100644 index 00000000..ae59c3c3 --- /dev/null +++ b/docs/components/examples/transition/TransitionEdge.vue @@ -0,0 +1,165 @@ + + + + + diff --git a/docs/components/examples/transition/index.ts b/docs/components/examples/transition/index.ts new file mode 100644 index 00000000..23d5e78e --- /dev/null +++ b/docs/components/examples/transition/index.ts @@ -0,0 +1,3 @@ +export { default as TransitionApp } from './App.vue?raw' +export { default as TransitionEdge } from './TransitionEdge.vue?raw' +export { default as TransitionCSS } from './style.css' diff --git a/docs/components/examples/transition/style.css b/docs/components/examples/transition/style.css new file mode 100644 index 00000000..8e546e97 --- /dev/null +++ b/docs/components/examples/transition/style.css @@ -0,0 +1,9 @@ +.fade-enter-active, +.fade-leave-active { + transition: opacity 300ms ease; +} + +.fade-enter-from, +.fade-leave-to { + opacity: 0; +} diff --git a/docs/src/.vitepress/config.ts b/docs/src/.vitepress/config.ts index b03fc706..81aaa3a2 100644 --- a/docs/src/.vitepress/config.ts +++ b/docs/src/.vitepress/config.ts @@ -62,9 +62,9 @@ export default defineConfigWithTheme({ Components({ dirs: [resolve(__dirname, './../../components')], deep: true, - // allow auto load markdown components under `./src/components/` + // allow to autoload markdown components under `./src/components/` extensions: ['vue', 'md'], - // allow auto import and register components used in markdown + // allow auto-import and register components used in markdown include: [/\.vue$/, /\.vue\?vue/, /\.md$/], dts: resolve(__dirname, '../components.d.ts'), resolvers: [IconsResolver()], @@ -173,6 +173,7 @@ export default defineConfigWithTheme({ { text: 'Horizontal Flow', link: '/examples/horizontal' }, { text: 'Interactions', link: '/examples/interaction' }, { text: 'Teleport', link: '/examples/teleport' }, + { text: 'Transition', link: '/examples/transition' }, { text: 'Multiple Flows', link: '/examples/multi' }, { text: 'Pinia', link: '/examples/pinia' }, { text: 'Stress', link: '/examples/stress' }, diff --git a/docs/src/examples/transition.md b/docs/src/examples/transition.md new file mode 100644 index 00000000..a33813ae --- /dev/null +++ b/docs/src/examples/transition.md @@ -0,0 +1,17 @@ +--- +layout: page + +--- + +# Transition + +Vue Flow allows you to use transitions while zooming and panning around the Viewport. +This example shows you how to use these transitions to animate actions on your graph. + +
+ + + + + +