Jelajahi Sumber

Merge branch 'master' into i/7822-eslint-ckerror

Maciej Gołaszewski 5 tahun lalu
induk
melakukan
e0e1d43d35

+ 5 - 4
packages/ckeditor5-link/src/autolink.js

@@ -147,10 +147,11 @@ export default class AutoLink extends Plugin {
 		enterCommand.on( 'execute', () => {
 			const position = model.document.selection.getFirstPosition();
 
-			const rangeToCheck = model.createRange(
-				model.createPositionAt( position.parent.previousSibling, 0 ),
-				model.createPositionAt( position.parent.previousSibling, 'end' )
-			);
+			if ( !position.parent.previousSibling ) {
+				return;
+			}
+
+			const rangeToCheck = model.createRangeIn( position.parent.previousSibling );
 
 			this._checkAndApplyAutoLinkOnRange( rangeToCheck );
 		} );

+ 50 - 0
packages/ckeditor5-link/tests/autolink.js

@@ -110,6 +110,56 @@ describe( 'AutoLink', () => {
 			);
 		} );
 
+		it( 'does not add linkHref attribute on enter when the link is selected', () => {
+			setData( model, '<paragraph>[https://www.cksource.com]</paragraph>' );
+
+			editor.execute( 'enter' );
+
+			expect( getData( model ) ).to.equal(
+				'<paragraph>[]</paragraph>'
+			);
+		} );
+
+		it( 'does not add linkHref attribute on enter when the whole paragraph containing the link is selected', () => {
+			setData( model, '<paragraph>[This feature also works with e-mail addresses: https://www.cksource.com]</paragraph>' );
+
+			editor.execute( 'enter' );
+
+			expect( getData( model ) ).to.equal(
+				'<paragraph>[]</paragraph>'
+			);
+		} );
+
+		it( 'adds linkHref attribute on enter when the link (that contains www) is partially selected (end)', () => {
+			setData( model, '<paragraph>https://www.ckso[urce.com]</paragraph>' );
+
+			editor.execute( 'enter' );
+
+			expect( getData( model ) ).to.equal(
+				'<paragraph><$text linkHref="https://www.ckso">https://www.ckso</$text></paragraph><paragraph>[]</paragraph>'
+			);
+		} );
+
+		it( 'does not add linkHref attribute on enter when the link (that does not contain www) is partially selected (end)', () => {
+			setData( model, '<paragraph>https://ckso[urce.com]</paragraph>' );
+
+			editor.execute( 'enter' );
+
+			expect( getData( model ) ).to.equal(
+				'<paragraph>https://ckso</paragraph><paragraph>[]</paragraph>'
+			);
+		} );
+
+		it( 'does not add linkHref attribute on enter when the link is partially selected (beginning)', () => {
+			setData( model, '<paragraph>[https://www.ckso]urce.com</paragraph>' );
+
+			editor.execute( 'enter' );
+
+			expect( getData( model ) ).to.equal(
+				'<paragraph></paragraph><paragraph>[]urce.com</paragraph>'
+			);
+		} );
+
 		it( 'adds linkHref attribute to a text link after space (inside paragraph)', () => {
 			setData( model, '<paragraph>Foo Bar [] Baz</paragraph>' );