From ecbf5755a5b03aa3f2f92c655621df6a63740b8c Mon Sep 17 00:00:00 2001 From: Philipp Fromme Date: Mon, 1 Dec 2025 13:09:43 +0100 Subject: [PATCH 1/2] fix: update on import done Related to https://github.com/bpmn-io/bpmn-js-properties-panel/issues/1131 --- src/render/DmnPropertiesPanel.js | 18 +++++++--------- test/spec/DmnPropertiesPanel.spec.js | 31 +++++++--------------------- test/spec/mocks/index.js | 2 +- 3 files changed, 16 insertions(+), 35 deletions(-) diff --git a/src/render/DmnPropertiesPanel.js b/src/render/DmnPropertiesPanel.js index 8efb31e..27a1d11 100644 --- a/src/render/DmnPropertiesPanel.js +++ b/src/render/DmnPropertiesPanel.js @@ -123,24 +123,20 @@ export default function DmnPropertiesPanel(props) { }; }, [ selectedElement ]); - // (2c) root element changed + // (2c) import done useEffect(() => { - const onRootAdded = (e) => { - const element = e.element; - - if (isImplicitRoot(element)) { - return; - } + const onImportDone = () => { + const rootElement = canvas.getRootElement(); - _update(element); + _update(rootElement); }; - eventBus.on('root.added', onRootAdded); + eventBus.on('import.done', onImportDone); return () => { - eventBus.off('root.added', onRootAdded); + eventBus.off('import.done', onImportDone); }; - }, [ selectedElement ]); + }, []); // (2d) provided entries changed useEffect(() => { diff --git a/test/spec/DmnPropertiesPanel.spec.js b/test/spec/DmnPropertiesPanel.spec.js index 408327b..33bf91f 100644 --- a/test/spec/DmnPropertiesPanel.spec.js +++ b/test/spec/DmnPropertiesPanel.spec.js @@ -244,29 +244,6 @@ describe('', function() { }); - it('should not update on implicit root added',function() { - - // given - const updateSpy = sinon.spy(); - - const eventBus = new eventBusMock(); - - eventBus.on('propertiesPanel.updated', updateSpy); - - createDmnPropertiesPanel({ container, eventBus }); - - // when - eventBus.fire('root.added', { - element: { - isImplicit: true - } - }); - - // expect - expect(updateSpy).to.not.have.been.called; - }); - - it('should not update on implicit root selected',function() { // given @@ -401,9 +378,16 @@ function createDmnPropertiesPanel(options = {}) { } = options; let { + canvas, elementRegistry } = options; + if (!canvas) { + canvas = { + getRootElement: () => noopElement + }; + } + if (!elementRegistry) { elementRegistry = new elementRegistryMock(); elementRegistry.setElements([ element ]); @@ -411,6 +395,7 @@ function createDmnPropertiesPanel(options = {}) { const injector = new injectorMock({ ...options, + canvas, elementRegistry }); diff --git a/test/spec/mocks/index.js b/test/spec/mocks/index.js index dca68fc..842607f 100644 --- a/test/spec/mocks/index.js +++ b/test/spec/mocks/index.js @@ -60,7 +60,7 @@ export class Injector { } if (type === 'canvas') { - return new Canvas(); + return this._options.canvas || new Canvas(); } } } From 4a4aba252a6ddc5fda9ebbd4bc5742c3ec51869f Mon Sep 17 00:00:00 2001 From: Philipp Fromme Date: Mon, 1 Dec 2025 13:13:12 +0100 Subject: [PATCH 2/2] chore(CHANGELOG): update to v3.8.3 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7638c00..ddb5240 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ All notable changes to [dmn-js-properties-panel](https://github.com/bpmn-io/dmn- ___Note:__ Yet to be released changes appear here._ +## 3.8.3 + +* `FIX`: update on `import.done` instead of `root.added` to prevent stale element ([#128](https://github.com/bpmn-io/dmn-js-properties-panel/pull/128)) + ## 3.8.2 * `FIX`: reverts keeping selected element in sync with canvas state ([#122](https://github.com/bpmn-io/dmn-js-properties-panel/pull/122))