Skip to content

Commit 0e7e978

Browse files
committed
fix(grid): column resizing line positioned correctly
1 parent a4c35df commit 0e7e978

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

projects/igniteui-angular/src/lib/grids/resizing/resizer.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
[restrictHResizeMax]="colResizingService.restrictResizeMax"
55
[restrictHResizeMin]="colResizingService.restrictResizeMin"
66
[restrictResizerTop]="restrictResizerTop"
7-
(resizeEnd)="colResizingService.resizeColumn($event)">
7+
(resizeEnd)="colResizingService.resizeColumn($event, resizer.ratio)">
88
</div>

projects/igniteui-angular/src/lib/grids/resizing/resizer.directive.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,13 @@ export class IgxColumnResizerDirective implements OnInit, OnDestroy {
4141
@Output() public resize = new Subject<any>();
4242

4343
private _left: number;
44+
private _ratio: number = 1;
4445
private _destroy = new Subject<boolean>();
4546

47+
public get ratio(): number {
48+
return this._ratio;
49+
}
50+
4651
constructor(
4752
public element: ElementRef<HTMLElement>,
4853
@Inject(DOCUMENT) public document,
@@ -56,7 +61,7 @@ export class IgxColumnResizerDirective implements OnInit, OnDestroy {
5661
.pipe(
5762
takeUntil(this._destroy),
5863
takeUntil<MouseEvent>(this.resizeEnd),
59-
map((event) => event.clientX - offset),
64+
map((event) => (event.clientX - offset) / (this._ratio)),
6065
))
6166
)
6267
.subscribe((pos) => {
@@ -113,8 +118,12 @@ export class IgxColumnResizerDirective implements OnInit, OnDestroy {
113118
public onMousedown(event: MouseEvent) {
114119
event.preventDefault();
115120
const parent = this.element.nativeElement.parentElement.parentElement;
116-
117-
this.left = this._left = event.clientX - parent.getBoundingClientRect().left;
121+
const parentRectWidth = parent.getBoundingClientRect().width;
122+
const parentComputedWidth = parseFloat(window.getComputedStyle(parent).width);
123+
if (parentRectWidth && parentComputedWidth && parentRectWidth / parentComputedWidth !== 1) {
124+
this._ratio = parentRectWidth / parentComputedWidth;
125+
}
126+
this.left = this._left = (event.clientX - parent.getBoundingClientRect().left) / (this._ratio);
118127
this.top = (event.target as HTMLElement).getBoundingClientRect().top - parent.getBoundingClientRect().top;
119128

120129
this.resizeStart.next(event);

projects/igniteui-angular/src/lib/grids/resizing/resizing.service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ export class IgxColumnResizingService {
101101
/**
102102
* Resizes the column regaridng to the column minWidth and maxWidth.
103103
*/
104-
public resizeColumn(event: MouseEvent) {
104+
public resizeColumn(event: MouseEvent, ratio: number = 1) {
105105
this.showResizer = false;
106-
const diff = event.clientX - this.startResizePos;
106+
const diff = (event.clientX - this.startResizePos) / ratio;
107107

108108
const colWidth = this.column.width;
109109
const isPercentageWidth = colWidth && typeof colWidth === 'string' && colWidth.indexOf('%') !== -1;

0 commit comments

Comments
 (0)