@@ -442,6 +442,9 @@ export class DragRef<T = any> {
442
442
this . _ngZone . runOutsideAngular ( ( ) => {
443
443
element . addEventListener ( 'mousedown' , this . _pointerDown , activeEventListenerOptions ) ;
444
444
element . addEventListener ( 'touchstart' , this . _pointerDown , passiveEventListenerOptions ) ;
445
+ // Usually this isn't necessary since the we prevent the default action in `pointerDown`,
446
+ // but some cases like dragging of links can slip through (see #24403).
447
+ element . addEventListener ( 'dragstart' , preventDefault , activeEventListenerOptions ) ;
445
448
} ) ;
446
449
this . _initialTransform = undefined ;
447
450
this . _rootElement = element ;
@@ -1159,6 +1162,9 @@ export class DragRef<T = any> {
1159
1162
placeholder = deepCloneNode ( this . _rootElement ) ;
1160
1163
}
1161
1164
1165
+ // Stop pointer events on the preview so the user can't
1166
+ // interact with it while the preview is animating.
1167
+ placeholder . style . pointerEvents = 'none' ;
1162
1168
placeholder . classList . add ( 'cdk-drag-placeholder' ) ;
1163
1169
return placeholder ;
1164
1170
}
@@ -1290,6 +1296,7 @@ export class DragRef<T = any> {
1290
1296
private _removeRootElementListeners ( element : HTMLElement ) {
1291
1297
element . removeEventListener ( 'mousedown' , this . _pointerDown , activeEventListenerOptions ) ;
1292
1298
element . removeEventListener ( 'touchstart' , this . _pointerDown , passiveEventListenerOptions ) ;
1299
+ element . removeEventListener ( 'dragstart' , preventDefault , activeEventListenerOptions ) ;
1293
1300
}
1294
1301
1295
1302
/**
@@ -1555,3 +1562,8 @@ function matchElementSize(target: HTMLElement, sourceRect: ClientRect): void {
1555
1562
target . style . height = `${ sourceRect . height } px` ;
1556
1563
target . style . transform = getTransform ( sourceRect . left , sourceRect . top ) ;
1557
1564
}
1565
+
1566
+ /** Utility to prevent the default action of an event. */
1567
+ function preventDefault ( event : Event ) : void {
1568
+ event . preventDefault ( ) ;
1569
+ }
0 commit comments