mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 22:28:05 +01:00 
			
		
		
		
	Backport #32966 by metiftikci Co-authored-by: metiftikci <metiftikci@hotmail.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		
							parent
							
								
									90bd08ceef
								
							
						
					
					
						commit
						0e0ebf68d7
					
				| @ -4,13 +4,24 @@ test('EditorMarkdown', () => { | ||||
|   const textarea = document.createElement('textarea'); | ||||
|   initTextareaMarkdown(textarea); | ||||
| 
 | ||||
|   const testInput = (value, expected) => { | ||||
|     textarea.value = value; | ||||
|     textarea.setSelectionRange(value.length, value.length); | ||||
|   type ValueWithCursor = string | { | ||||
|     value: string; | ||||
|     pos: number; | ||||
|   } | ||||
|   const testInput = (input: ValueWithCursor, result: ValueWithCursor) => { | ||||
|     const intputValue = typeof input === 'string' ? input : input.value; | ||||
|     const inputPos = typeof input === 'string' ? intputValue.length : input.pos; | ||||
|     textarea.value = intputValue; | ||||
|     textarea.setSelectionRange(inputPos, inputPos); | ||||
| 
 | ||||
|     const e = new KeyboardEvent('keydown', {key: 'Enter', cancelable: true}); | ||||
|     textarea.dispatchEvent(e); | ||||
|     if (!e.defaultPrevented) textarea.value += '\n'; | ||||
|     expect(textarea.value).toEqual(expected); | ||||
|     if (!e.defaultPrevented) textarea.value += '\n'; // simulate default behavior
 | ||||
| 
 | ||||
|     const expectedValue = typeof result === 'string' ? result : result.value; | ||||
|     const expectedPos = typeof result === 'string' ? expectedValue.length : result.pos; | ||||
|     expect(textarea.value).toEqual(expectedValue); | ||||
|     expect(textarea.selectionStart).toEqual(expectedPos); | ||||
|   }; | ||||
| 
 | ||||
|   testInput('-', '-\n'); | ||||
| @ -18,8 +29,11 @@ test('EditorMarkdown', () => { | ||||
| 
 | ||||
|   testInput('- ', ''); | ||||
|   testInput('1. ', ''); | ||||
|   testInput({value: '1. \n2. ', pos: 3}, {value: '\n2. ', pos: 0}); | ||||
| 
 | ||||
|   testInput('- x', '- x\n- '); | ||||
|   testInput('1. foo', '1. foo\n1. '); | ||||
|   testInput({value: '1. a\n2. b\n3. c', pos: 4}, {value: '1. a\n1. \n2. b\n3. c', pos: 8}); | ||||
|   testInput('- [ ]', '- [ ]\n- '); | ||||
|   testInput('- [ ] foo', '- [ ] foo\n- [ ] '); | ||||
|   testInput('* [x] foo', '* [x] foo\n* [ ] '); | ||||
|  | ||||
| @ -92,6 +92,7 @@ function handleNewline(textarea: HTMLTextAreaElement, e: Event) { | ||||
|   if (!line) { | ||||
|     // clear current line if we only have i.e. '1. ' and the user presses enter again to finish creating a list
 | ||||
|     textarea.value = value.slice(0, lineStart) + value.slice(lineEnd); | ||||
|     textarea.setSelectionRange(selStart - prefix.length, selStart - prefix.length); | ||||
|   } else { | ||||
|     // start a new line with the same indention and prefix
 | ||||
|     let newPrefix = prefix; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user