From e1058d8ef9d02652220db3a94d68c129019414da Mon Sep 17 00:00:00 2001 From: Maciej Barelkowski Date: Wed, 4 Oct 2023 13:23:20 +0200 Subject: [PATCH] fix: make FEEL editor in literal expression save value This was caused by an API mismatch. `ContentEditable` and `LiteralExpression` accept `onInput` while `EditableComponent` expects `onChange`. Closes #786 --- .../textarea/components/TextareaEditorComponent.js | 2 +- packages/dmn-js-literal-expression/test/helper/index.js | 2 +- .../test/spec/features/textarea/TextareaEditorSpec.js | 9 ++++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/dmn-js-literal-expression/src/features/textarea/components/TextareaEditorComponent.js b/packages/dmn-js-literal-expression/src/features/textarea/components/TextareaEditorComponent.js index ee4f35bac..60bfb07b4 100644 --- a/packages/dmn-js-literal-expression/src/features/textarea/components/TextareaEditorComponent.js +++ b/packages/dmn-js-literal-expression/src/features/textarea/components/TextareaEditorComponent.js @@ -69,7 +69,7 @@ class FeelEditor extends Component { return ; } } diff --git a/packages/dmn-js-literal-expression/test/helper/index.js b/packages/dmn-js-literal-expression/test/helper/index.js index 366c1b9fb..b8129bfd6 100644 --- a/packages/dmn-js-literal-expression/test/helper/index.js +++ b/packages/dmn-js-literal-expression/test/helper/index.js @@ -156,7 +156,7 @@ export function inject(fn) { throw new Error('DecisionTable instance not found'); } - view.invoke(fn); + return view.invoke(fn); }; } diff --git a/packages/dmn-js-literal-expression/test/spec/features/textarea/TextareaEditorSpec.js b/packages/dmn-js-literal-expression/test/spec/features/textarea/TextareaEditorSpec.js index c3060ce7e..7cb58cf12 100644 --- a/packages/dmn-js-literal-expression/test/spec/features/textarea/TextareaEditorSpec.js +++ b/packages/dmn-js-literal-expression/test/spec/features/textarea/TextareaEditorSpec.js @@ -50,10 +50,10 @@ describe('textarea editor', function() { // given const editor = queryEditor('.textarea', testContainer); - editor.focus(); + await act(() => editor.focus()); // when - await changeInput(editor, 'foo'); + await changeInput(document.activeElement, 'foo'); // then expect(viewer.getDecision().decisionLogic.text).to.equal('foo'); @@ -84,8 +84,11 @@ describe('textarea editor', function() { * @param {string} value */ function changeInput(input, value) { - input.textContent = value; + return act(() => input.textContent = value); +} +function act(fn) { + fn(); return new Promise(resolve => { requestAnimationFrame(() => { resolve();