diff --git a/src/server/plugins/engine/components/MultilineTextField.test.ts b/src/server/plugins/engine/components/MultilineTextField.test.ts index f76358fc5..d903e404d 100644 --- a/src/server/plugins/engine/components/MultilineTextField.test.ts +++ b/src/server/plugins/engine/components/MultilineTextField.test.ts @@ -161,6 +161,17 @@ describe('MultilineTextField', () => { expect(answer2).toBe('') }) + it('returns multiline text from state, collapsing multiple newlines into one', () => { + const state1 = getFormState('Line 1\r\nLine 2\r\nLine 3') + const state2 = getFormState('Line 1\r\n\r\nLine 2\r\n\r\n\r\nLine 3') + + const answer1 = getAnswer(field, state1) + const answer2 = getAnswer(field, state2) + + expect(answer1).toBe('Line 1
Line 2
Line 3
') + expect(answer2).toBe('Line 1
Line 2
Line 3
') + }) + it('returns payload from state', () => { const state1 = getFormState('Textarea') const state2 = getFormState(null) diff --git a/src/server/plugins/engine/components/helpers/components.ts b/src/server/plugins/engine/components/helpers/components.ts index 82fd6d210..8fa55556d 100644 --- a/src/server/plugins/engine/components/helpers/components.ts +++ b/src/server/plugins/engine/components/helpers/components.ts @@ -315,7 +315,7 @@ export function getAnswerMarkdown( } else if (field instanceof Components.MultilineTextField) { // Preserve Multiline text new lines answerEscaped = answer - .split(/\r?\n/) + .split(/(?:\r?\n)+/) .map(escapeMarkdown) .join('\n') .concat('\n')