diff --git a/docs/release-notes-common.md b/docs/release-notes-common.md index 7d8d0cee4cb2c2bad5d7d3ccf00d7b47f0b4fc9d..d920506ac1f15eccc23bf1cd44eda795886862ec 100644 --- a/docs/release-notes-common.md +++ b/docs/release-notes-common.md @@ -1,5 +1,10 @@ Allgemein ========= +## editor/2.4.4+player/2.4.4 +## Änderungen +- Ablegeliste: + - Ersetzte (aka Verdrängen) Elemente ignorieren Listenverbindungen + ## editor/2.4.3+player/2.4.3 ### Fehlerbehebungen - Ablegeliste: diff --git a/projects/common/components/input-elements/drop-list/drag-operator.service.ts b/projects/common/components/input-elements/drop-list/drag-operator.service.ts index 03c85bbc8118035c01c2631b02aaec60d7cab1e8..5f2616a991453c242555bb9000f67cdf24768c8b 100644 --- a/projects/common/components/input-elements/drop-list/drag-operator.service.ts +++ b/projects/common/components/input-elements/drop-list/drag-operator.service.ts @@ -10,6 +10,7 @@ export class DragOperatorService { dropLists: { [id: string]: DropListComponent } = {}; dragOperation: DragOperation | undefined; + registerComponent(comp: DropListComponent): void { this.dropLists[comp.elementModel.id] = comp; } @@ -200,16 +201,21 @@ export class DragOperatorService { static isDropAllowed(draggedItem: DragNDropValueObject | undefined, sourceList: DropListComponent, targetList: DropListComponent, - allLists: { [id: string]: DropListComponent }): boolean { - return (sourceList.elementModel.id === targetList.elementModel.id && sourceList.elementModel.isSortList) || - (DragOperatorService.checkConnected(sourceList, targetList) && + allLists: { [id: string]: DropListComponent }, + ignoreConnection: boolean = false): boolean { + return DragOperatorService.checkIsSourceList(sourceList, targetList) && + DragOperatorService.checkConnected(sourceList, targetList, ignoreConnection) && DragOperatorService.checkOnlyOneItem(targetList, allLists) && - DragOperatorService.checkAddForeignItemToCopyList(draggedItem, targetList)); + DragOperatorService.checkAddForeignItemToCopyList(draggedItem, targetList); + } + + private static checkIsSourceList(sourceList: DropListComponent, targetList: DropListComponent): boolean { + return (sourceList.elementModel.id === targetList.elementModel.id && sourceList.elementModel.isSortList) || + sourceList.elementModel.id !== targetList.elementModel.id; } - /* Drop is only allowed in connected Lists AND THE SAME LIST. */ - private static checkConnected(sourceList: DropListComponent, targetList: DropListComponent): boolean { - return sourceList.elementModel.connectedTo.includes(targetList.elementModel.id); + private static checkConnected(sourceList: DropListComponent, targetList: DropListComponent, ignoreConnection: boolean = false): boolean { + return ignoreConnection || sourceList.elementModel.connectedTo.includes(targetList.elementModel.id); } /* Return false, when drop is not allowed */ @@ -239,7 +245,8 @@ export class DragOperatorService { targetList.elementFormControl.value[0], targetList, allLists[targetList.elementFormControl.value[0].originListID], - allLists + allLists, + true ); } }