Skip to content

Commit 0e0ccb7

Browse files
MKirovaMKirova
authored andcommitted
Add reorder for values as well.
1 parent 11aee7c commit 0e0ccb7

File tree

2 files changed

+36
-14
lines changed

2 files changed

+36
-14
lines changed

projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-header-row.component.html

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@
1717
<igx-chips-area #colArea
1818
(dropped)="onDimDrop($event, colArea, 1)"
1919
igxDrop
20-
(igxDragEnter)="onAreaDragEnter($event, colArea)"
20+
(igxDragEnter)="onAreaDragEnter($event, colArea, 1)"
2121
(igxDragLeave)="onAreaDragLeave($event, colArea)"
2222
>
2323
<igx-chip *ngFor="let col of grid.columnDimensions" [draggable]="'true'" [id]="col.fieldName"
2424
[removable]="true" (remove)="columnRemoved($event)"
25-
(dragEnter)="onDimDragEnter($event)"
25+
(dragEnter)="onDimDragEnter($event, 1)"
2626
(dragLeave)="onDimDragLeave($event)"
2727
(dragDrop)="onDimDrop($event, colArea, 1)"
2828
>
@@ -33,8 +33,16 @@
3333
</igx-chips-area>
3434

3535
<!-- Value area -->
36-
<igx-chips-area>
37-
<igx-chip *ngFor="let value of grid.values" [draggable]="'true'" [id]="value.member" [removable]="true" (remove)="valueRemoved($event)">
36+
<igx-chips-area #valueArea
37+
(dropped)="onValueDrop($event, valueArea)"
38+
igxDrop
39+
(igxDragEnter)="onAreaDragEnter($event, valueArea)"
40+
(igxDragLeave)="onAreaDragLeave($event, valueArea)"
41+
>
42+
<igx-chip *ngFor="let value of grid.values" [draggable]="'true'" [id]="value.member" [removable]="true" (remove)="valueRemoved($event)"
43+
(dragEnter)="onDimDragEnter($event)"
44+
(dragLeave)="onDimDragLeave($event)"
45+
(dragDrop)="onValueDrop($event, valueArea)">
3846
<igx-icon igxPrefix>functions</igx-icon>
3947
{{value.member}}
4048
</igx-chip>
@@ -54,12 +62,12 @@
5462
<igx-chips-area #rowArea
5563
(dropped)="onDimDrop($event, rowArea, 0)"
5664
igxDrop
57-
(igxDragEnter)="onAreaDragEnter($event, rowArea)"
65+
(igxDragEnter)="onAreaDragEnter($event, rowArea, 0)"
5866
(igxDragLeave)="onAreaDragLeave($event, rowArea)"
5967
>
6068
<igx-chip *ngFor="let row of grid.rowDimensions" [draggable]="'true'" [id]="row.fieldName"
6169
[removable]="true" (remove)="rowRemoved($event)"
62-
(dragEnter)="onDimDragEnter($event)"
70+
(dragEnter)="onDimDragEnter($event, 0)"
6371
(dragLeave)="onDimDragLeave($event)"
6472
(dragDrop)="onDimDrop($event, rowArea, 0)"
6573
>

projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-header-row.component.ts

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent {
5555
this.grid.pipeTrigger++;
5656
}
5757

58-
public onDimDragEnter(event) {
59-
const isValue = this.grid.pivotConfiguration.values.find(x => x.member === event.dragChip.id);
60-
if (isValue) {
61-
// cannot drag value in dimensions
58+
public onDimDragEnter(event, dimension: PivotDimensionType) {
59+
const typeMismatch = dimension !== undefined ? this.grid.pivotConfiguration.values.find(x => x.member === event.dragChip.id) : null;
60+
if (typeMismatch) {
61+
// cannot drag between dimensions and value
6262
return;
6363
}
6464
event.owner.nativeElement.style.borderLeft = '1px solid red';
@@ -67,11 +67,11 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent {
6767
event.owner.nativeElement.style.borderLeft = '';
6868
}
6969

70-
public onAreaDragEnter(event, area) {
70+
public onAreaDragEnter(event, area, dimension: PivotDimensionType) {
7171
const dragId = event.detail.owner.element.nativeElement.parentElement.id;
72-
const isValue = this.grid.pivotConfiguration.values.find(x => x.member === dragId);
73-
if (isValue) {
74-
// cannot drag value in dimensions
72+
const typeMismatch = dimension !== undefined ? this.grid.pivotConfiguration.values.find(x => x.member === dragId) : null;
73+
if (typeMismatch) {
74+
// cannot drag between dimensions and value
7575
return;
7676
}
7777
const lastElem = area.chipsList.last.nativeElement;
@@ -87,6 +87,20 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent {
8787
});
8888
}
8989

90+
public onValueDrop(event, area) {
91+
//values can only be reordered
92+
const currentDim = this.grid.pivotConfiguration.values;
93+
const dragId = event.dragChip?.id || event.dragData?.chip.id;
94+
const chipsArray = area.chipsList.toArray();
95+
const chipIndex = chipsArray.indexOf(event.owner) !== -1 ? chipsArray.indexOf(event.owner) : chipsArray.length;
96+
const newDim = currentDim.find(x => x.member === dragId);
97+
const dragChipIndex = chipsArray.indexOf(event.dragChip || event.dragData.chip);
98+
currentDim.splice(dragChipIndex, 1);
99+
currentDim.splice(dragChipIndex > chipIndex ? chipIndex : chipIndex - 1, 0, newDim);
100+
101+
this.grid.setupColumns();
102+
}
103+
90104
public onDimDrop(event, area, dimension: PivotDimensionType) {
91105
const dragId = event.dragChip?.id || event.dragData?.chip.id;
92106
const currentDim = dimension === PivotDimensionType.Row ? this.grid.pivotConfiguration.rows :

0 commit comments

Comments
 (0)