diff --git a/Tests/IntegrationTests/Fixtures/1Dimension/createNewNodes.e2e.js b/Tests/IntegrationTests/Fixtures/1Dimension/createNewNodes.e2e.js index 1adc77dccb..12b0cedb89 100644 --- a/Tests/IntegrationTests/Fixtures/1Dimension/createNewNodes.e2e.js +++ b/Tests/IntegrationTests/Fixtures/1Dimension/createNewNodes.e2e.js @@ -177,21 +177,21 @@ test('Can create content node from inside InlineUI', async t => { subSection('Inline validation'); // We have to wait for ajax requests to be triggered, since they are debounced for 0.5s - await t.wait(600); + await t.wait(1600); await changeRequestLogger.clear(); await t .expect(Selector('.test-headline h1').exists).ok('Validation tooltip appeared') .click('.test-headline h1') .pressKey('ctrl+a delete') .switchToMainWindow() - .wait(600) + .wait(1600) .expect(ReactSelector('InlineValidationTooltips').exists).ok('Validation tooltip appeared'); await t .expect(changeRequestLogger.count(() => true)).eql(0, 'No requests were fired with invalid state'); await t .switchToIframe(contentIframeSelector) .typeText(Selector('.test-headline h1'), 'Some text') - .wait(600); + .wait(1600); await t.expect(changeRequestLogger.count(() => true)).eql(1, 'Request fired when field became valid'); subSection('Create a link to node'); @@ -228,7 +228,7 @@ test('Inline CKEditor mode `paragraph: false` works as expected', async t => { .expect(Selector('.neos-contentcollection').withText('Foo Bar').exists).ok('Inserted text exists'); await t.switchToMainWindow(); - await t.wait(500); // we debounce the change + await t.wait(1500); // we debounce the change await t.expect(ReactSelector('Inspector TextAreaEditor').withProps({ value: 'Foo Bar
Bun Buz'}).exists).ok('The TextAreaEditor mirrors the expected value') }); diff --git a/packages/neos-ui-ckeditor5-bindings/src/ckEditorApi.js b/packages/neos-ui-ckeditor5-bindings/src/ckEditorApi.js index fa7f56352a..979a2ab5f5 100644 --- a/packages/neos-ui-ckeditor5-bindings/src/ckEditorApi.js +++ b/packages/neos-ui-ckeditor5-bindings/src/ckEditorApi.js @@ -58,11 +58,14 @@ export const createEditor = store => async options => { .create(propertyDomNode, ckEditorConfig) .then(editor => { editor.ui.focusTracker.on('change:isFocused', event => { - if (event.source.isFocused) { - currentEditor = editor; - editorConfig.setCurrentlyEditedPropertyName(propertyName); - handleUserInteractionCallback(); + if (!event.source.isFocused) { + onChange(cleanupContentBeforeCommit(editor.getData())) + return } + + currentEditor = editor; + editorConfig.setCurrentlyEditedPropertyName(propertyName); + handleUserInteractionCallback(); }); editor.keystrokes.set('Ctrl+K', (_, cancel) => { @@ -71,7 +74,7 @@ export const createEditor = store => async options => { }); editor.model.document.on('change', () => handleUserInteractionCallback()); - editor.model.document.on('change:data', debounce(() => onChange(cleanupContentBeforeCommit(editor.getData())), 500, {maxWait: 5000})); + editor.model.document.on('change:data', debounce(() => onChange(cleanupContentBeforeCommit(editor.getData())), 1500, {maxWait: 5000})); return editor; }).catch(e => { if (e instanceof TypeError && e.message.match(/Class constructor .* cannot be invoked without 'new'/)) {