Skip to content

Commit 26af9f9

Browse files
committed
fix(arrow): fix arrow label not remove
1 parent 50cee12 commit 26af9f9

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "mind-elixir",
3-
"version": "5.3.5",
3+
"version": "5.3.6",
44
"type": "module",
55
"description": "Mind elixir is a free open source mind map core.",
66
"keywords": [

src/arrow.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,8 @@ export const removeArrow = function (this: MindElixirInstance, linkSvg?: CustomS
366366
hideLinkController(this)
367367
const id = link.arrowObj!.id
368368
this.arrows = this.arrows.filter(arrow => arrow.id !== id)
369+
370+
link.labelEl?.remove()
369371
link.remove()
370372
this.bus.fire('operation', {
371373
name: 'removeArrow',
@@ -533,6 +535,11 @@ const showLinkController = function (mei: MindElixirInstance, linkItem: Arrow, f
533535

534536
export function renderArrow(this: MindElixirInstance) {
535537
this.linkSvgGroup.innerHTML = ''
538+
539+
// Clear all arrow labels before re-rendering
540+
const arrowLabels = this.labelContainer.querySelectorAll('.svg-label[data-type="arrow"]')
541+
arrowLabels.forEach(label => label.remove())
542+
536543
for (let i = 0; i < this.arrows.length; i++) {
537544
const link = this.arrows[i]
538545
try {

tests/arrow.spec.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,9 @@ test('Remove arrow', async ({ page, me }) => {
176176

177177
// Verify arrow exists
178178
await expect(page.locator('svg g[data-linkid]')).toBeVisible()
179+
180+
// Verify arrow label exists
181+
await expect(page.locator('.svg-label[data-type="arrow"]')).toHaveCount(1)
179182

180183
// Remove arrow programmatically
181184
await page.evaluate(async instance => {
@@ -184,6 +187,9 @@ test('Remove arrow', async ({ page, me }) => {
184187

185188
// Verify arrow is removed
186189
await expect(page.locator('svg g[data-linkid]')).not.toBeVisible()
190+
191+
// Verify arrow label is also removed
192+
await expect(page.locator('.svg-label[data-type="arrow"]')).toHaveCount(0)
187193
})
188194

189195
test('Edit arrow label', async ({ page, me }) => {
@@ -668,9 +674,9 @@ test('Arrow creation with invalid nodes', async ({ page, me }) => {
668674
if (nonExistentNode1 && nonExistentNode2) {
669675
instance.createArrow(nonExistentNode1, nonExistentNode2)
670676
}
671-
} catch (error) {
677+
} catch {
672678
// Expected to fail gracefully
673-
console.log('Arrow creation failed as expected:', error.message)
679+
console.log('Arrow creation failed as expected')
674680
}
675681
}, instanceHandle)
676682

0 commit comments

Comments
 (0)