mirror of https://github.com/Squidex/squidex.git
10 changed files with 30 additions and 141 deletions
@ -1,61 +0,0 @@ |
|||||
|
|
||||
/* |
|
||||
* Squidex Headless CMS |
|
||||
* |
|
||||
* @license |
|
||||
* Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. |
|
||||
*/ |
|
||||
|
|
||||
import { Directive, EventEmitter, Output } from '@angular/core'; |
|
||||
|
|
||||
import { |
|
||||
DragDropSortableService, |
|
||||
SortableComponent, |
|
||||
SortableContainer |
|
||||
} from 'ng2-dnd'; |
|
||||
|
|
||||
@Directive({ |
|
||||
selector: '[sqxSortedDnd]' |
|
||||
}) |
|
||||
export class SortedDndDirective { |
|
||||
private oldArray: any[]; |
|
||||
|
|
||||
@Output('sqxSortedDnd') |
|
||||
public sorted = new EventEmitter<Array<any>>(); |
|
||||
|
|
||||
constructor( |
|
||||
sortableComponent: SortableComponent, |
|
||||
sortableContainer: SortableContainer, |
|
||||
sortableDragDropService: DragDropSortableService |
|
||||
) { |
|
||||
const oldDragStartCallback = sortableComponent._onDragStartCallback.bind(sortableComponent); |
|
||||
|
|
||||
if (Array.isArray(sortableContainer.sortableData)) { |
|
||||
sortableComponent._onDragStartCallback = () => { |
|
||||
oldDragStartCallback(); |
|
||||
|
|
||||
this.oldArray = [...<any>sortableContainer.sortableData]; |
|
||||
}; |
|
||||
|
|
||||
const oldDropCallback = sortableComponent._onDropCallback.bind(sortableComponent); |
|
||||
|
|
||||
sortableComponent._onDropCallback = (event: Event) => { |
|
||||
oldDropCallback(event); |
|
||||
|
|
||||
if (sortableDragDropService.isDragged) { |
|
||||
const newArray: any[] = <any>sortableContainer.sortableData; |
|
||||
const oldArray = this.oldArray; |
|
||||
|
|
||||
if (newArray && oldArray && newArray.length === oldArray.length) { |
|
||||
for (let i = 0; i < oldArray.length; i++) { |
|
||||
if (oldArray[i] !== newArray[i]) { |
|
||||
this.sorted.emit(newArray); |
|
||||
break; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
}; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
Loading…
Reference in new issue