diff --git a/app/assets/javascripts/discourse/app/components/d-editor.js b/app/assets/javascripts/discourse/app/components/d-editor.js index 75bcda31049..ce1b2dcbdf6 100644 --- a/app/assets/javascripts/discourse/app/components/d-editor.js +++ b/app/assets/javascripts/discourse/app/components/d-editor.js @@ -326,7 +326,12 @@ export default Component.extend(TextareaTextManipulation, { this._itsatrap.bind(`${PLATFORM_KEY_MODIFIER}+shift+.`, () => this.send("insertCurrentTime") ); - this._itsatrap.bind("enter", () => this.maybeContinueList(), "keyup"); + this._itsatrap.bind("enter", () => { + // Check the textarea value after a brief delay to ensure the input event has updated the value + setTimeout(() => { + this.maybeContinueList(); + }, 0); + }); // disable clicking on links in the preview this.element diff --git a/app/assets/javascripts/discourse/tests/integration/components/d-editor-test.js b/app/assets/javascripts/discourse/tests/integration/components/d-editor-test.js index 2c9a282e7c7..02937dbb7c9 100644 --- a/app/assets/javascripts/discourse/tests/integration/components/d-editor-test.js +++ b/app/assets/javascripts/discourse/tests/integration/components/d-editor-test.js @@ -989,7 +989,7 @@ third line` const initialValue = "* first item in list\n"; this.set("value", initialValue); setCaretPosition(textarea, initialValue.length); - await triggerKeyEvent(textarea, "keyup", "Enter"); + await triggerKeyEvent(textarea, "keydown", "Enter"); assert.strictEqual(this.value, initialValue + "* "); } ); @@ -1000,7 +1000,7 @@ third line` const initialValue = "- first item in list\n"; this.set("value", initialValue); setCaretPosition(textarea, initialValue.length); - await triggerKeyEvent(textarea, "keyup", "Enter"); + await triggerKeyEvent(textarea, "keydown", "Enter"); assert.strictEqual(this.value, initialValue + "- "); } ); @@ -1011,7 +1011,7 @@ third line` const initialValue = "1. first item in list\n"; this.set("value", initialValue); setCaretPosition(textarea, initialValue.length); - await triggerKeyEvent(textarea, "keyup", "Enter"); + await triggerKeyEvent(textarea, "keydown", "Enter"); assert.strictEqual(this.value, initialValue + "2. "); } ); @@ -1022,7 +1022,7 @@ third line` const initialValue = "* first item in list\n\n* second item in list"; this.set("value", initialValue); setCaretPosition(textarea, 21); - await triggerKeyEvent(textarea, "keyup", "Enter"); + await triggerKeyEvent(textarea, "keydown", "Enter"); assert.strictEqual( this.value, "* first item in list\n* \n* second item in list" @@ -1036,7 +1036,7 @@ third line` const initialValue = "1. first item in list\n\n2. second item in list"; this.set("value", initialValue); setCaretPosition(textarea, 22); - await triggerKeyEvent(textarea, "keyup", "Enter"); + await triggerKeyEvent(textarea, "keydown", "Enter"); assert.strictEqual( this.value, "1. first item in list\n2. \n3. second item in list" @@ -1050,7 +1050,7 @@ third line` const initialValue = "* first item in list with empty line\n* \n"; this.set("value", initialValue); setCaretPosition(textarea, initialValue.length); - await triggerKeyEvent(textarea, "keyup", "Enter"); + await triggerKeyEvent(textarea, "keydown", "Enter"); assert.strictEqual(this.value, "* first item in list with empty line\n"); } );