diff --git a/packages/editor/src/initService.ts b/packages/editor/src/initService.ts index 588482fc..070b19c7 100644 --- a/packages/editor/src/initService.ts +++ b/packages/editor/src/initService.ts @@ -21,10 +21,10 @@ import { Target, } from '@tmagic/core'; import { ChangeRecord } from '@tmagic/form'; -import { getNodes, isPage, traverseNode } from '@tmagic/utils'; +import { getNodes, isPage, isValueIncludeDataSource, traverseNode } from '@tmagic/utils'; import PropsPanel from './layouts/PropsPanel.vue'; -import { isIncludeDataSource, isValueIncludeDataSource } from './utils/editor'; +import { isIncludeDataSource } from './utils/editor'; import { EditorProps } from './editorProps'; import { Services } from './type'; @@ -418,7 +418,8 @@ export const initServiceEvents = ( isValueIncludeDataSource(record.value) ) { needRecollectNodes.push(newNode); - break; + } else { + normalNodes.push(newNode); } } } else if (isIncludeDataSource(newNode, oldNode)) { diff --git a/packages/editor/src/utils/editor.ts b/packages/editor/src/utils/editor.ts index 2a439c80..c204d51a 100644 --- a/packages/editor/src/utils/editor.ts +++ b/packages/editor/src/utils/editor.ts @@ -25,13 +25,13 @@ import { NODE_CONDS_KEY, NodeType } from '@tmagic/core'; import type StageCore from '@tmagic/stage'; import { calcValueByFontsize, - DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX, getElById, getNodePath, isNumber, isPage, isPageFragment, isPop, + isValueIncludeDataSource, } from '@tmagic/utils'; import { Layout } from '@editor/type'; @@ -302,22 +302,6 @@ export const moveItemsInContainer = (sourceIndices: number[], parent: MContainer } }; -export const isValueIncludeDataSource = (value: any) => { - if (typeof value === 'string' && /\$\{([\s\S]+?)\}/.test(value)) { - return true; - } - if (Array.isArray(value) && `${value[0]}`.startsWith(DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX)) { - return true; - } - if (value?.isBindDataSource && value.dataSourceId) { - return true; - } - if (value?.isBindDataSourceField && value.dataSourceId) { - return true; - } - return false; -}; - const isIncludeDataSourceByDiffAddResult = (diffResult: any) => { for (const value of Object.values(diffResult)) { const result = isValueIncludeDataSource(value); diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index 6e545de8..890c08e5 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -509,3 +509,19 @@ export const traverseNode = ( }); } }; + +export const isValueIncludeDataSource = (value: any) => { + if (typeof value === 'string' && /\$\{([\s\S]+?)\}/.test(value)) { + return true; + } + if (Array.isArray(value) && `${value[0]}`.startsWith(DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX)) { + return true; + } + if (value?.isBindDataSource && value.dataSourceId) { + return true; + } + if (value?.isBindDataSourceField && value.dataSourceId) { + return true; + } + return false; +};