Skip to content

Commit 23d8730

Browse files
[DURACOM-302_2] Manual porting of 'DSC-2002'
1 parent 9e28099 commit 23d8730

File tree

4 files changed

+23
-7
lines changed

4 files changed

+23
-7
lines changed

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
<div [className]="'float-left w-100 ' + wrapperClass">
2-
<div role="list" class="nav nav-pills d-flex flex-column flex-sm-row" cdkDropList cdkDropListOrientation="horizontal" (cdkDropListDropped)="onDrop($event)">
2+
<div role="list" class="nav nav-pills d-flex flex-column flex-sm-row" cdkDropListGroup>
33
<ng-template #tipContent>
44
<p class="text-left p-0 m-0" *ngFor="let tip of tipText">
55
{{tip}}
66
</p>
77
</ng-template>
8-
<div role="listitem" class="nav-item mr-2 mb-1"
8+
<div role="listitem" class="nav-item mr-2 mb-1 d-flex flex-row"
99
*ngFor="let c of chips.getChips(); let i = index"
1010
#t="ngbTooltip"
1111
triggers="manual"
12+
cdkDropList
13+
[cdkDropListData]="{ index: i }"
14+
cdkDropListOrientation="horizontal"
15+
(cdkDropListDropped)="onDrop($event)"
1216
[ngbTooltip]="tipContent"
1317
(mouseover)="showTooltip(t, i)"
1418
(mouseout)="t.close()">

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
.cdk-drag-placeholder {
22
filter: grayscale(100%);
3-
transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
3+
margin: 0 0.25rem;
44
}
5+
56
.cdk-drag-preview {
67
color: white;
78
box-sizing: border-box;

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

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

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

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

150150
expect(chipsComp.dragged).toBe(-1);
151151
expect(chipsComp.chips.updateOrder).toHaveBeenCalled();

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

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {
22
CdkDrag,
33
CdkDragDrop,
44
CdkDropList,
5+
CdkDropListGroup,
56
moveItemInArray,
67
} from '@angular/cdk/drag-drop';
78
import {
@@ -48,6 +49,7 @@ import { ChipsItem } from './models/chips-item.model';
4849
TranslateModule,
4950
CdkDrag,
5051
CdkDropList,
52+
CdkDropListGroup,
5153
],
5254
standalone: true,
5355
})
@@ -105,8 +107,17 @@ export class ChipsComponent implements OnChanges {
105107
this.dragged = index;
106108
}
107109

108-
onDrop(event: CdkDragDrop<ChipsItem[]>) {
109-
moveItemInArray(this.chips.chipsItems.getValue(), event.previousIndex, event.currentIndex);
110+
onDrop(event: CdkDragDrop<{ index: number }>) {
111+
const previousContainerIndex = event.previousContainer.data.index;
112+
const currentContainerIndex = event.container.data.index;
113+
114+
const currentPositionInCurrentContainer = event.currentIndex;
115+
116+
const directionAdjuster = currentContainerIndex > previousContainerIndex ? -1 : 0;
117+
118+
moveItemInArray(this.chips.chipsItems.getValue(),
119+
previousContainerIndex,
120+
currentContainerIndex + currentPositionInCurrentContainer + directionAdjuster);
110121
this.dragged = -1;
111122
this.chips.updateOrder();
112123
this.isDragging.next(false);

0 commit comments

Comments
 (0)