diff --git a/packages/g6/__tests__/bugs/plugin-history-align-fields.spec.ts b/packages/g6/__tests__/bugs/plugin-history-align-fields.spec.ts new file mode 100644 index 00000000000..ef8b39493a0 --- /dev/null +++ b/packages/g6/__tests__/bugs/plugin-history-align-fields.spec.ts @@ -0,0 +1,42 @@ +import { createGraph } from '@@/utils'; + +describe('bug: plugin-history-align-fields', () => { + it('fix alignFields util', async () => { + const graph = createGraph({ + plugins: [{ type: 'history', key: 'history' }], + data: { + nodes: [ + { + id: 'node-1', + type: 'rect', + style: { x: 50, y: 100 }, + data: { + aaa: { + bbb: false, + ccc: true, + ddd: '1234', + }, + }, + }, + ], + }, + }); + + await graph.render(); + + expect(graph.getNodeData('node-1').style).toEqual({ x: 50, y: 100 }); + expect(graph.getNodeData('node-1').data!.aaa).toEqual({ + bbb: false, + ccc: true, + ddd: '1234', + }); + + await graph.translateElementBy('node-1', [100, 100]); + expect(graph.getNodeData('node-1').style).toEqual({ x: 150, y: 200, z: 0 }); + expect(graph.getNodeData('node-1').data!.aaa).toEqual({ + bbb: false, + ccc: true, + ddd: '1234', + }); + }); +}); diff --git a/packages/g6/src/plugins/history/util.ts b/packages/g6/src/plugins/history/util.ts index aebd1510810..48fcc84614b 100644 --- a/packages/g6/src/plugins/history/util.ts +++ b/packages/g6/src/plugins/history/util.ts @@ -18,7 +18,7 @@ export function alignFields(refObject: Record, targetObject: Record if (isObject(refObject[key]) && !Array.isArray(refObject[key]) && refObject[key] !== null) { if (!targetObject[key]) targetObject[key] = {}; alignFields(refObject[key], targetObject[key]); - } else if (!targetObject[key]) { + } else if (targetObject[key] === undefined) { targetObject[key] = inferDefaultValue(key); } }