"devDependencies": {
"@angular-devkit/build-angular": "~0.803.12",
"@angular/animations": "~8.2.0",
- "@angular/cdk": "^8.1.1",
+ "@angular/cdk": "^8.2.3",
"@angular/cli": "~8.3.0",
"@angular/common": "~8.2.0",
"@angular/compiler": "~8.2.0",
class="videos" myInfiniteScroller [autoInit]="true" (nearOfBottom)="onNearOfBottom()"
cdkDropList (cdkDropListDropped)="drop($event)" [dataObservable]="onDataSubject.asObservable()"
>
- <div class="video" *ngFor="let playlistElement of playlistElements; trackBy: trackByFn" cdkDrag>
+ <div class="video" *ngFor="let playlistElement of playlistElements; trackBy: trackByFn" cdkDrag [cdkDragStartDelay]="getDragStartDelay()">
<my-video-playlist-element-miniature
[playlistElement]="playlistElement" [playlist]="playlist" [owned]="true" (elementRemoved)="onElementRemoved($event)"
[position]="playlistElement.position"
import { VideoPlaylistService } from '@app/shared/video-playlist/video-playlist.service'
import { VideoPlaylist } from '@app/shared/video-playlist/video-playlist.model'
import { I18n } from '@ngx-translate/i18n-polyfill'
+import { ScreenService } from '@app/shared/misc/screen.service'
import { CdkDragDrop } from '@angular/cdk/drag-drop'
import { VideoPlaylistElement } from '@app/shared/video-playlist/video-playlist-element.model'
private confirmService: ConfirmService,
private route: ActivatedRoute,
private i18n: I18n,
+ private screenService: ScreenService,
private videoPlaylistService: VideoPlaylistService
) {}
return elem.id
}
+ /**
+ * Returns null to not have drag and drop delay.
+ * In small views, where elements are about 100% wide,
+ * we add a delay to prevent unwanted drag&drop.
+ *
+ * @see {@link https://github.com/Chocobozzz/PeerTube/issues/2078}
+ *
+ * @returns {null|number} Null for no delay, or a number in milliseconds.
+ */
+ getDragStartDelay (): null | number {
+ if (this.screenService.isInTouchScreen()) {
+ return 500
+ }
+
+ return null
+ }
+
private loadElements () {
this.videoPlaylistService.getPlaylistVideos(this.videoPlaylistId, this.pagination)
.subscribe(({ total, data }) => {