From cbc8fd525525442496e8400b8f3c098cac680e14 Mon Sep 17 00:00:00 2001 From: pubuzhixing8 Date: Tue, 7 Apr 2026 11:47:20 +0800 Subject: [PATCH] fix(node-more): hide add icon when board is readonly #WIK-19942 --- .../mind/src/generators/node-more.generator.ts | 12 +++++++++++- packages/mind/src/plugins/with-node-more.ts | 16 +++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/mind/src/generators/node-more.generator.ts b/packages/mind/src/generators/node-more.generator.ts index 5397b2b60..819942f44 100644 --- a/packages/mind/src/generators/node-more.generator.ts +++ b/packages/mind/src/generators/node-more.generator.ts @@ -284,7 +284,7 @@ export const getNodeMoreKeyPosition = (board: PlaitBoard, element: MindElement) const endPoint = moveXOfPoint(startPoint, NODE_MORE_LINE_DISTANCE, layoutDirection as unknown as Direction); const hasCollapsedIcon = element.children?.length > 0 && !isMind && !element.isCollapsed; const hasExpandedIcon = element.children?.length > 0 && !isMind && element.isCollapsed; - const hasAddIcon = !hasExpandedIcon; + const hasAddIcon = !hasExpandedIcon && !PlaitBoard.isReadonly(board); const firstIconCenter = moveXOfPoint(endPoint, NODE_MORE_ICON_DIAMETER / 2, layoutDirection as unknown as Direction); const collapsedIconCenter = hasCollapsedIcon ? firstIconCenter : null; const expandedIconCenter = hasExpandedIcon ? firstIconCenter : null; @@ -311,6 +311,16 @@ export const getNodeMoreKeyPosition = (board: PlaitBoard, element: MindElement) moveYOfPoint(startPoint, -NODE_MORE_ICON_DIAMETER / 2, layoutDirection as unknown as Direction), moveYOfPoint(expandedIconEndPoint, NODE_MORE_ICON_DIAMETER / 2, layoutDirection as unknown as Direction) ]); + } else if (hasCollapsedIcon) { + const collapsedIconEndPoint = moveXOfPoint( + collapsedIconCenter!, + NODE_MORE_ICON_DIAMETER / 2, + layoutDirection as unknown as Direction + ); + awarenessRectangle = RectangleClient.getRectangleByPoints([ + moveYOfPoint(startPoint, -NODE_MORE_ICON_DIAMETER / 2, layoutDirection as unknown as Direction), + moveYOfPoint(collapsedIconEndPoint, NODE_MORE_ICON_DIAMETER / 2, layoutDirection as unknown as Direction) + ]); } let standardRef: { addCenter: Point; awarenessRectangle: RectangleClient } | null = null; diff --git a/packages/mind/src/plugins/with-node-more.ts b/packages/mind/src/plugins/with-node-more.ts index 683a84fc2..cb69aa7d0 100644 --- a/packages/mind/src/plugins/with-node-more.ts +++ b/packages/mind/src/plugins/with-node-more.ts @@ -1,4 +1,5 @@ import { + createDebugGenerator, depthFirstRecursion, getElementById, getIsRecursionFunc, @@ -26,6 +27,9 @@ import { NODE_MORE_ICON_DIAMETER } from '../constants/default'; import { PlaitMindBoard } from './with-mind.board'; import { MindLayoutType } from '@plait/layouts'; import { setRightNodeCountByRefs } from '../transforms/node'; +import { Node } from 'slate'; + +const debugGenerator = createDebugGenerator('debug:plait:node-more'); export interface NodeMoreRef { target: MindElement; @@ -251,7 +255,17 @@ const getNodeMoreRef = (board: PlaitBoard, x: number, y: number) => { RectangleClient.getRectangleByPoints([point, point]), RectangleClient.getRectangleByCenterPoint(standardRef.addCenter, NODE_MORE_ICON_DIAMETER, NODE_MORE_ICON_DIAMETER) ); - + if (debugGenerator.isDebug()) { + debugGenerator.clear(); + if (awarenessRectangle) { + debugGenerator.drawRectangle(board, awarenessRectangle); + } + const data = element.data.topic; + const string = Node.string(data); + if (string === 'xxxx') { + console.log('xxxx'); + } + } if (isHitElement || isHitAwarenessRectangleInternal || isHitStandardLeftAwarenessRectangleInternal) { isHit = isHitElement; target = element;