Skip to content
Snippets Groups Projects
Commit 5e6cfb82 authored by rhenck's avatar rhenck
Browse files

Rework valid-drop rules for DropLists

parent 97810773
No related branches found
No related tags found
No related merge requests found
Pipeline #43539 passed
...@@ -247,11 +247,34 @@ export class DropListComponent extends FormElementComponent implements OnInit { ...@@ -247,11 +247,34 @@ export class DropListComponent extends FormElementComponent implements OnInit {
this.elementFormControl.setValue(this.elementFormControl.value); this.elementFormControl.setValue(this.elementFormControl.value);
} }
validDropPredicate = (draggedItem: CdkDrag, targetList: CdkDropList): boolean => ( validDropPredicate = (draggedItem: CdkDrag, targetList: CdkDropList): boolean => {
(!targetList.data.elementModel.onlyOneItem || targetList.data.elementFormControl.value.length < 1 || if (!DropListComponent.isItemIDAlreadyPresent(draggedItem.data.id, targetList.data.elementFormControl.value) &&
(targetList.data.elementModel.allowReplacement && DropListComponent.containedItemIsReplacable(targetList)) || !targetList.data.elementModel.onlyOneItem) {
(DropListComponent.isPutBack(draggedItem, targetList))) return true;
); }
if (targetList.data.elementModel.onlyOneItem && targetList.data.elementFormControl.value.length < 1) {
return true;
}
if (targetList.data.elementModel.onlyOneItem &&
targetList.data.elementFormControl.value.length > 0 &&
(targetList.data.elementModel.allowReplacement && DropListComponent.containedItemIsReplacable(targetList))) {
return true;
}
if (DropListComponent.isItemIDAlreadyPresent(draggedItem.data.id, targetList.data.elementFormControl.value) &&
targetList.data.elementModel.onlyOneItem &&
(targetList.data.elementModel.allowReplacement && DropListComponent.containedItemIsReplacable(targetList))) {
return true;
}
if (DropListComponent.isPutBack(draggedItem, targetList)) {
return true;
}
return false;
};
/* To be replacable an item must not be in it's origin. Otherwise it has nowhere to go to. */ /* To be replacable an item must not be in it's origin. Otherwise it has nowhere to go to. */
static containedItemIsReplacable(list: CdkDropList): boolean { static containedItemIsReplacable(list: CdkDropList): boolean {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment