Skip to content

Commit 7a7c68f

Browse files
committed
Merge branch 'master' into release/2.0.0
# Conflicts: # packages/core/src/utils/graph.ts
2 parents 5f1e00f + 58498e8 commit 7a7c68f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+1950
-392
lines changed

.github/workflows/build-and-test.yml

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ concurrency:
1515
jobs:
1616
build-and-test:
1717
runs-on: ${{ matrix.os }}
18-
18+
env:
19+
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
20+
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
1921
strategy:
2022
matrix:
2123
os: [ubuntu-latest]
@@ -34,23 +36,14 @@ jobs:
3436
- name: Install Dependencies 👨🏻‍💻
3537
uses: ./.github/actions/install-dependencies
3638

37-
- name: Setup Turbo cache 🏎️
38-
id: turbo-cache
39-
uses: actions/cache@v4
40-
with:
41-
path: .turbo
42-
key: turbo-${{ runner.os }}-${{ github.sha }}
43-
restore-keys: |
44-
turbo-${{ runner.os }}-
45-
4639
- name: Run linter 🧹
47-
run: pnpm run lint --cache-dir=.turbo
40+
run: pnpm run lint
4841

4942
- name: Build Library 👷
50-
run: pnpm run build --cache-dir=.turbo
43+
run: pnpm run build
5144

5245
- name: Run tests 🧪
5346
uses: cypress-io/github-action@v6
5447
with:
5548
install-command: pnpm cypress install
56-
command: pnpm run test --cache-dir=.turbo
49+
command: pnpm run test

CHANGELOG.md

Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,209 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [1.48.0] - 2025-11-21
6+
7+
[ff69823](ff69823b9db45da9dd012852b8b7ec50bb45c6a9)...[09cb136](09cb136ab7326da269f2e97f926880be0605cff6)
8+
9+
### Bug Fixes
10+
11+
- Unwrap disableKeyboardA11y to check if keyboard movement is allowed (#1988) ([ce4a8fb](ce4a8fb00107edefc2cea7ac27b3c527fa396608))
12+
- Use position instead of computedPos as keyboard move pos (#1989) ([0ced769](0ced7692367d9bdeb927de4c339a6767e593e4b6))
13+
14+
### Miscellaneous Tasks
15+
16+
- Remove duplicate showZoom prop description ([04d9e59](04d9e591c73a6b2f168898ff1432dbad03859ac3))
17+
- Update showcase ([62a1d41](62a1d41a4336fa3596f1f82cfdcabfffdbd00c65))
18+
19+
### Refactor
20+
21+
- Separate import and export objects and interfaces (#1978) ([6008d63](6008d6330418ef2be99238b6789025808a819551))
22+
23+
## [1.47.0] - 2025-10-02
24+
25+
[9e2359c](9e2359c98a38b771d7f44f4a77615d6d7cf5bbbe)...[ff69823](ff69823b9db45da9dd012852b8b7ec50bb45c6a9)
26+
27+
### Features
28+
29+
- Replace fitView option offset with expressive padding (#1967) ([cca5ab8](cca5ab8c44abc409ac3b80e99ddc8f0cde18ee27))
30+
31+
## [1.46.5] - 2025-09-22
32+
33+
[dee75dd](dee75ddc1ad912eac67467ad52d71fd0bce93391)...[9e2359c](9e2359c98a38b771d7f44f4a77615d6d7cf5bbbe)
34+
35+
### Bug Fixes
36+
37+
- Unwrap connection line status ref (#1962) ([7729eff](7729eff1f0cd1462af0aaae17c2599292a343048))
38+
39+
### Miscellaneous Tasks
40+
41+
- Cleanup ([f3dc522](f3dc5226184df08d155b2eecb84dd70351960150))
42+
43+
## [1.46.4] - 2025-09-11
44+
45+
[c9c9040](c9c9040fb85a425081adbc4cdddf17df3c7b5a38)...[dee75dd](dee75ddc1ad912eac67467ad52d71fd0bce93391)
46+
47+
### Bug Fixes
48+
49+
- Remove node border styles from required styles (#1954) ([2ebe3d9](2ebe3d9088bc64524fe97cd88b3c9d32e0fe6643))
50+
51+
## [1.46.3] - 2025-09-05
52+
53+
[ed35bde](ed35bdeb0cefcdd16d543a1145b3770dd1053fc8)...[c9c9040](c9c9040fb85a425081adbc4cdddf17df3c7b5a38)
54+
55+
### Bug Fixes
56+
57+
- Add nullish operator to check visibility (#1942) ([67832e5](67832e528d9ff993773844a7bcb13026135c8492))
58+
59+
## [1.46.2] - 2025-08-31
60+
61+
[7a46a74](7a46a746acb8f3db09c01f31f76b6749032ad2fe)...[ed35bde](ed35bdeb0cefcdd16d543a1145b3770dd1053fc8)
62+
63+
### Bug Fixes
64+
65+
- Only emit position changes if change occurred (#1939) ([2bacaa8](2bacaa8b2df18f924302af2a4b39cdcdc4b1bc41))
66+
67+
## [1.46.1] - 2025-08-31
68+
69+
[e293519](e293519ee2ec3fd8103707491cbbc401e1be09af)...[7a46a74](7a46a746acb8f3db09c01f31f76b6749032ad2fe)
70+
71+
### Bug Fixes
72+
73+
- Use valid handle result as connecting handle (#1932) ([dd48e47](dd48e47d02a81cfabc2ba32f0bf24bc9b1f09f76))
74+
- Correctly check if an event has any listeners bound to it (#1935) ([e9f0cdf](e9f0cdff3d26141a01cfcad0e355d9607210a68d))
75+
- Skip resize handler if node not visible (#1936) ([c9c26d0](c9c26d02f6c2e875381a9eb93b774857658b2d31))
76+
- Prevent multi touch from aborting connections (#1938) ([490473d](490473d997120ab640a25a7012f34c223f6d41a7))
77+
78+
### Documentation
79+
80+
- Remove info on pointer events removal when elements selectable is false ([3c96b38](3c96b385c31f005b04460165817d8c803504772a))
81+
82+
### Refactor
83+
84+
- Avoid passing reactive values to position changes (#1937) ([bd606b9](bd606b98a205a6fe9f40be76a57a025a7605e424))
85+
86+
## [1.46.0] - 2025-08-15
87+
88+
[e094426](e0944266bf1ed813db0cf70fb46fac7c87aa17c5)...[e293519](e293519ee2ec3fd8103707491cbbc401e1be09af)
89+
90+
### Bug Fixes
91+
92+
- Use 1 as zoomstep for minimap and apply factor based on macOs (#1923) ([58a52e1](58a52e137421e5939313760c91f6da2791d3777d))
93+
- Fetch correct source and target nodes for isValidConnection (#1922) ([c2aad1e](c2aad1e43bd5c3bc661b2a4f907591468ab49006))
94+
95+
### Documentation
96+
97+
- Helper lines (#1915) ([5dc276a](5dc276af52994f83ecd96e86ddcf8dd1a339ac80))
98+
99+
### Features
100+
101+
- Expose wheelDelta utility (#1918) ([5fbbc82](5fbbc826e5929d10c01605192ea4598e0a520883))
102+
103+
### Refactor
104+
105+
- Use event target for Handle pointer down events (#1924) ([299a045](299a04531e20a626494e32ee4d92a1cf5bbda07b))
106+
107+
## [1.45.1] - 2025-08-07
108+
109+
[45225bf](45225bf973bccca97183da9f8105dcc6a3b0bf89)...[e094426](e0944266bf1ed813db0cf70fb46fac7c87aa17c5)
110+
111+
### Bug Fixes
112+
113+
- Use correct handlesuffix in getHandleConnections (#1880) ([a43da6f](a43da6f1ec2320fa17c3b8cdfcfd70348b1b2681))
114+
- Add `type="button"` to avoid form submissions (#1911) (#1912) ([dfae661](dfae6619e2ec9827ca29f4a760820402c3e2f630))
115+
- Emit node drag-start, drag and drag-end events on selection drag (#1913) ([ed18865](ed18865525545ff66ef752e0f588a87610c235ce))
116+
- Calculate overlapping area correctly (#1914) ([e97a65b](e97a65b6b56ee2168b329cd23ee0e9d9099af146))
117+
118+
### Documentation
119+
120+
- Code errors in "Updating Node Data" (#1900) ([b5c4c0e](b5c4c0e3f5b595e2cbb99968f1ccb826d94338ce))
121+
122+
### Examples
123+
124+
- Cleanup basic example ([e094426](e0944266bf1ed813db0cf70fb46fac7c87aa17c5))
125+
126+
### Refactor
127+
128+
- Add auto-scale prop & scale resize controls with zoom level (#1872) ([f4e139f](f4e139f1bcd6038b54efeff83328b06847feeda3))
129+
130+
## [1.45.0] - 2025-06-10
131+
132+
[a16d851](a16d851894e2c4d7053e34cefd9aa3dc7522ad95)...[45225bf](45225bf973bccca97183da9f8105dcc6a3b0bf89)
133+
134+
### Documentation
135+
136+
- Add vitepress plugin llms (#1865) ([eec568c](eec568cbb77c863857af5508b287d4b1db34493c))
137+
138+
### Features
139+
140+
- Add dom attributes option for nodes (#1861) ([4c1b064](4c1b06423052923d759ecdb331f57cb0f59d18de))
141+
- Add dom attributes option for nodes and edges (#1869) ([8fa7010](8fa70107a008de4bd9ff62763e5a242ce2a60277))
142+
143+
## [1.44.0] - 2025-05-19
144+
145+
[7ecca61](7ecca6141f7dd817b00517cee4e549fb5c783c45)...[a16d851](a16d851894e2c4d7053e34cefd9aa3dc7522ad95)
146+
147+
### Features
148+
149+
- Add ease option to viewport transform functions (#1848) ([00bc28b](00bc28bf1b675d856f3613c6a30802d7ea9628ba))
150+
- Add interpolate option to viewport transforming functions (#1851) ([505fbfe](505fbfef7488d8fe98a3f2b459135794b8110633))
151+
152+
### Refactor
153+
154+
- Use shallowRef where possible (#1847) ([b792d7f](b792d7f536ec224c51aaf822cdb96baf158fb0c2))
155+
156+
## [1.43.2] - 2025-05-15
157+
158+
[96e07ee](96e07eeb9db83defd04369522e6cb2171285948e)...[7ecca61](7ecca6141f7dd817b00517cee4e549fb5c783c45)
159+
160+
### Bug Fixes
161+
162+
- Allow multiselect when input is focused (#1842) ([666e4ea](666e4eababac0b5c99e269eaa217f9f93d6d77e0))
163+
- Use whole handle for snapping area (#1843) ([735c81c](735c81c63f4eab13b5660211c9696078e754c03b))
164+
165+
## [1.43.1] - 2025-04-24
166+
167+
[78e29f2](78e29f225950c956f936c76ffb2dc29013ddc915)...[96e07ee](96e07eeb9db83defd04369522e6cb2171285948e)
168+
169+
### Bug Fixes
170+
171+
- Add missing vue-flow__container class to marker defs (#1833) ([ae9c6a0](ae9c6a0fe2e40d62c2d663d5b68772dda8c62403))
172+
173+
### Ci
174+
175+
- Use turbo remote cache ([00e2146](00e21465547aafe64fe06da83ccccab62b07107f))
176+
177+
## [1.43.0] - 2025-04-23
178+
179+
[c24ba07](c24ba071f16f95e7149e876624b790cbc9341071)...[78e29f2](78e29f225950c956f936c76ffb2dc29013ddc915)
180+
181+
### Bug Fixes
182+
183+
- Add aria hidden to markers (#1817) ([cb588c8](cb588c8aa9dc0d9962e8be62f7e08b5b24cb836a))
184+
- Subtract container bounds when getting pointer position (#1829) ([265f928](265f928f13c95a4944acd1f4c387941cea99c5bb))
185+
- Fall back to changedTouches for touchend events (#1830) ([cc65f12](cc65f12af9e2fe550270acde75a759be6cc37550))
186+
187+
### Documentation
188+
189+
- Correct template syntax (#1797) ([8f5f573](8f5f57381501c0c0e1f0dd6e5248cc7eed2e13da))
190+
191+
### Miscellaneous Tasks
192+
193+
- Cleanup getHandleBounds (#1828) ([7d9ffe3](7d9ffe3f356d9300041e7f15cf3fc9bd63d13eb9))
194+
195+
### Refactor
196+
197+
- Allow passing null/undefined to use node connection args (#1820) ([7a09afa](7a09afa12acab084d849c7134fcbbb1367ff456d))
198+
199+
## [1.42.5] - 2025-03-29
200+
201+
[f49e509](f49e50996f4d9e294b45b0125e45231acc45b3be)...[c24ba07](c24ba071f16f95e7149e876624b790cbc9341071)
202+
203+
### Bug Fixes
204+
205+
- Add button to elements to ignore in useKeyPress (#1807) ([967569a](967569aa6d75945fd5375fbaee6a4c2507af29f4))
206+
- Filter hidden nodes from bounds (#1808) ([da6dc8b](da6dc8bdf9004fb8394c75a5fd24cc3f46ebcbd5))
207+
5208
## [1.42.4] - 2025-03-17
6209

7210
[e9168d3](e9168d30841ec0cdb15c4034a3fe89f26657b5dc)...[f49e509](f49e50996f4d9e294b45b0125e45231acc45b3be)

docs/components/home/Showcase.vue

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,31 @@
77
>
88
<div class="max-w-5/6 2xl:max-w-7xl mx-auto py-12 md:py-16">
99
<div class="flex flex-col items-center justify-center gap-2">
10-
<h1>Putting Ideas into Action: The Showcase</h1>
10+
<h1 class="text-center">Putting Ideas into Action - The Showcase</h1>
1111

1212
<p class="font-medium max-w-3/4 text-center">
1313
Whether you're a seasoned developer or just starting your journey with Vue Flow, this showcase offers inspiration and
1414
insights into what's possible. Dive in and discover the potential of Vue Flow for your next project.
1515
</p>
1616

1717
<div
18-
class="divide-y divide-secondary md:divide-y-0 flex flex-col md:flex-row justify-between items-center gap-12 mt-8 text-center md:text-left"
18+
class="divide-y divide-secondary md:divide-y-0 flex flex-col md:flex-row justify-between items-start gap-12 mt-8 text-center md:text-left"
1919
>
2020
<div class="flex-1 flex flex-col items-center md:items-start">
2121
<div
2222
class="h-[200px] md:min-h-[300px] w-full shadow-xl rounded-xl font-mono uppercase border-1 border-gray overflow-hidden"
2323
>
24-
<img class="object-cover h-full w-full" src="/assets/octai.png" alt="Octai" />
24+
<img class="object-cover h-full w-full" src="/assets/n8n.webp" alt="n8n" />
2525
</div>
2626

2727
<div class="px-1">
28-
<a href="https://octai.com" target="_blank">
29-
<h2 class="text-3xl mt-6 font-semibold inline-block">Octai</h2>
28+
<a href="https://n8n.io" target="_blank">
29+
<h2 class="text-3xl mt-6 font-semibold inline-block">n8n</h2>
3030
</a>
3131

3232
<h3 class="text-lg">
33-
A Machine-Learning NoCode platform using a node-based UI for Data Scientists and Developers.
33+
n8n is an open-source workflow automation platform that lets you connect apps, APIs, and services to create
34+
automated processes using a visual, node-based interface.
3435
</h3>
3536
</div>
3637
</div>
@@ -47,7 +48,10 @@
4748
<h2 class="text-3xl mt-6 font-semibold inline-block">Kestra</h2>
4849
</a>
4950

50-
<h3 class="text-lg">An open-source orchestrator that makes both scheduled and event-driven workflows easy.</h3>
51+
<h3 class="text-lg">
52+
Kestra is an open-source, declarative orchestration and workflow automation platform that enables you to define,
53+
schedule, and govern complex processes as code (YAML) with UI support.
54+
</h3>
5155
</div>
5256
</div>
5357
</div>

docs/examples/helper-lines/App.vue

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<script setup lang="ts">
2+
import type { GraphNode, Node, NodeChange } from '@vue-flow/core'
3+
import { VueFlow, useVueFlow } from '@vue-flow/core'
4+
import { ref } from 'vue'
5+
import HelperLines from './HelperLines.vue'
6+
import { getHelperLines } from './utils'
7+
import { initialNodes } from './initialElements'
8+
9+
const { applyNodeChanges } = useVueFlow()
10+
11+
const nodes = ref<Node[]>(initialNodes)
12+
13+
const helperLineHorizontal = ref<number | undefined>(undefined)
14+
const helperLineVertical = ref<number | undefined>(undefined)
15+
16+
function updateHelperLines(changes: NodeChange[], nodes: GraphNode[]) {
17+
helperLineHorizontal.value = undefined
18+
helperLineVertical.value = undefined
19+
20+
if (changes.length === 1 && changes[0].type === 'position' && changes[0].dragging && changes[0].position) {
21+
const helperLines = getHelperLines(changes[0], nodes)
22+
23+
// if we have a helper line, we snap the node to the helper line position
24+
// this is being done by manipulating the node position inside the change object
25+
changes[0].position.x = helperLines.snapPosition.x ?? changes[0].position.x
26+
changes[0].position.y = helperLines.snapPosition.y ?? changes[0].position.y
27+
28+
// if helper lines are returned, we set them so that they can be displayed
29+
helperLineHorizontal.value = helperLines.horizontal
30+
helperLineVertical.value = helperLines.vertical
31+
}
32+
33+
return changes
34+
}
35+
36+
function onNodesChange(changes: NodeChange[]) {
37+
const updatedChanges = updateHelperLines(changes, nodes.value as GraphNode[])
38+
nodes.value = applyNodeChanges(updatedChanges)
39+
}
40+
</script>
41+
42+
<template>
43+
<VueFlow :nodes="nodes" fit-view-on-init @nodes-change="onNodesChange">
44+
<HelperLines :horizontal="helperLineHorizontal" :vertical="helperLineVertical" />
45+
</VueFlow>
46+
</template>

0 commit comments

Comments
 (0)