Skip to content

Commit 01c21a9

Browse files
Simone-RamundiFrancescoMolinaro
authored andcommitted
Merged in task/dspace-cris-2023_02_x/DSC-2002 (pull request DSpace#2518)
Task/dspace cris 2023 02 x/DSC-2002 Approved-by: Francesco Molinaro
2 parents 3ba803f + 98a8460 commit 01c21a9

4 files changed

Lines changed: 23 additions & 9 deletions

File tree

src/app/shared/form/chips/chips.component.html

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,20 @@
44
</ng-template>
55

66
<div [className]="'float-left w-100 ' + wrapperClass">
7-
<div *ngIf="isPlatformBrowser" role="list" class="nav nav-pills d-flex flex-column flex-sm-row" cdkDropList cdkDropListOrientation="horizontal" (cdkDropListDropped)="onDrop($event)">
7+
<div *ngIf="isPlatformBrowser" role="list" class="nav nav-pills d-flex flex-column flex-sm-row" cdkDropListGroup>
88
<ng-container *ngFor="let c of chips.getChips(); let i = index">
99
<ng-template #tipContent>
1010
<p class="text-left p-0 m-0" *ngFor="let tip of (tipText$ | async)">
1111
{{tip}}
1212
</p>
1313
</ng-template>
14-
<div role="listitem" class="nav-item mr-2 mb-1"
14+
<div role="listitem" class="nav-item mr-2 mb-1 d-flex flex-row"
1515
#t="ngbTooltip"
1616
triggers="manual"
17+
cdkDropList
18+
[cdkDropListData]="{ index: i }"
19+
cdkDropListOrientation="horizontal"
20+
(cdkDropListDropped)="onDrop($event)"
1721
[ngbTooltip]="tipContent"
1822
(mouseover)="showTooltip(t, i)"
1923
(mouseout)="t.close()">

src/app/shared/form/chips/chips.component.scss

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.cdk-drag-placeholder {
2-
filter: grayscale(100%);
3-
transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
4-
}
2+
filter: grayscale(100%);
3+
margin: 0 0.25rem;
4+
}
55

66
.cdk-drag-preview {
77
color: white;

src/app/shared/form/chips/chips.component.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ describe('ChipsComponent test suite', () => {
101101

102102
it('should update chips item order when drag and drop end', fakeAsync(() => {
103103
spyOn(chipsComp.chips, 'updateOrder');
104-
const de = chipsFixture.debugElement.query(By.css('div[role="list"]'));
104+
const de = chipsFixture.debugElement.query(By.css('div[role="listitem"]'));
105105

106-
de.triggerEventHandler('cdkDropListDropped', { previousIndex: 0, currentIndex: 1 });
106+
de.triggerEventHandler('cdkDropListDropped', { previousIndex: 0, currentIndex: 1, previousContainer: { data: { index: 0 }}, container: { data: { index: 1 }} });
107107

108108
expect(chipsComp.dragged).toBe(-1);
109109
expect(chipsComp.chips.updateOrder).toHaveBeenCalled();

src/app/shared/form/chips/chips.component.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,18 @@ export class ChipsComponent implements OnChanges {
8383
this.dragged = index;
8484
}
8585

86-
onDrop(event: CdkDragDrop<ChipsItem[]>) {
87-
moveItemInArray(this.chips.chipsItems.getValue(), event.previousIndex, event.currentIndex);
86+
onDrop(event: CdkDragDrop<{ index: number }>) {
87+
const previousContainerIndex = event.previousContainer.data.index;
88+
const currentContainerIndex = event.container.data.index;
89+
90+
const currentPositionInCurrentContainer = event.currentIndex;
91+
92+
// if we move forward we need to adjust the new position
93+
const directionAdjuster = currentContainerIndex > previousContainerIndex ? -1 : 0;
94+
95+
moveItemInArray(this.chips.chipsItems.getValue(),
96+
previousContainerIndex,
97+
currentContainerIndex + currentPositionInCurrentContainer + directionAdjuster);
8898
this.dragged = -1;
8999
this.chips.updateOrder();
90100
this.isDragging.next(false);

0 commit comments

Comments
 (0)