diff --git a/src/directives/NgGrid.ts b/src/directives/NgGrid.ts index dff9384..c005c22 100644 --- a/src/directives/NgGrid.ts +++ b/src/directives/NgGrid.ts @@ -363,6 +363,10 @@ export class NgGrid implements OnInit, DoCheck, OnDestroy { this._cascadeGrid(null, null); } + public triggerResize(): void { + this.resizeEventHandler(null); + } + public resizeEventHandler(e: any): void { this._calculateColWidth(); this._calculateRowHeight(); @@ -1060,10 +1064,6 @@ export class NgGrid implements OnInit, DoCheck, OnDestroy { if (this._itemGrid[pos.row + j] == null) this._itemGrid[pos.row + j] = {}; for (let i: number = 0; i < dims.x; i++) { - if (this._itemGrid[pos.row + j][pos.col + i] != null) { - console.error("ITEM COLLISION", this._hasGridCollision(pos, dims)); - } - this._itemGrid[pos.row + j][pos.col + i] = item; } } @@ -1084,7 +1084,6 @@ export class NgGrid implements OnInit, DoCheck, OnDestroy { const withinCol = x < (item.col + item.sizex) && x >= item.col; if (this._items.indexOf(this._itemGrid[y][x]) < 0 || !withinRow || !withinCol) { - console.error("LEFTOVER ITEM"); delete this._itemGrid[y][x]; } } diff --git a/src/directives/NgGridItem.ts b/src/directives/NgGridItem.ts index 6243ec7..99c2fad 100644 --- a/src/directives/NgGridItem.ts +++ b/src/directives/NgGridItem.ts @@ -195,13 +195,15 @@ export class NgGridItem implements OnInit, OnDestroy { } public findHandle(handleSelector: string, startElement: HTMLElement): boolean { - let targetElem: any = startElement; + try { + let targetElem: any = startElement; - while (targetElem && targetElem != this._ngEl.nativeElement) { - if (this.elementMatches(targetElem, handleSelector)) return true; + while (targetElem && targetElem != this._ngEl.nativeElement) { + if (this.elementMatches(targetElem, handleSelector)) return true; - targetElem = targetElem.parentElement; - } + targetElem = targetElem.parentElement; + } + } catch (err) {} return false; } @@ -374,13 +376,16 @@ export class NgGridItem implements OnInit, OnDestroy { case 'up': case 'left': default: - this._renderer.setElementStyle(this._ngEl.nativeElement, 'transform', 'translate(' + x + 'px, ' + y + 'px)'); + this._renderer.setElementStyle(this._ngEl.nativeElement, 'left', x + 'px'); + this._renderer.setElementStyle(this._ngEl.nativeElement, 'top', y + 'px'); break; case 'right': - this._renderer.setElementStyle(this._ngEl.nativeElement, 'transform', 'translate(' + -x + 'px, ' + y + 'px)'); + this._renderer.setElementStyle(this._ngEl.nativeElement, 'right', x + 'px'); + this._renderer.setElementStyle(this._ngEl.nativeElement, 'top', y + 'px'); break; case 'down': - this._renderer.setElementStyle(this._ngEl.nativeElement, 'transform', 'translate(' + x + 'px, ' + -y + 'px)'); + this._renderer.setElementStyle(this._ngEl.nativeElement, 'left', x + 'px'); + this._renderer.setElementStyle(this._ngEl.nativeElement, 'bottom', y + 'px'); break; } @@ -394,20 +399,20 @@ export class NgGridItem implements OnInit, OnDestroy { case 'up': case 'left': default: - this._renderer.setElementStyle(this._ngEl.nativeElement, 'left', '0px'); - this._renderer.setElementStyle(this._ngEl.nativeElement, 'top', '0px'); + this._renderer.setElementStyle(this._ngEl.nativeElement, 'left', this._elemLeft + 'px'); + this._renderer.setElementStyle(this._ngEl.nativeElement, 'top', this._elemTop + 'px'); this._renderer.setElementStyle(this._ngEl.nativeElement, 'right', null); this._renderer.setElementStyle(this._ngEl.nativeElement, 'bottom', null); break; case 'right': - this._renderer.setElementStyle(this._ngEl.nativeElement, 'right', '0px'); - this._renderer.setElementStyle(this._ngEl.nativeElement, 'top', '0px'); + this._renderer.setElementStyle(this._ngEl.nativeElement, 'right', this._elemLeft + 'px'); + this._renderer.setElementStyle(this._ngEl.nativeElement, 'top', this._elemTop + 'px'); this._renderer.setElementStyle(this._ngEl.nativeElement, 'left', null); this._renderer.setElementStyle(this._ngEl.nativeElement, 'bottom', null); break; case 'down': - this._renderer.setElementStyle(this._ngEl.nativeElement, 'left', '0px'); - this._renderer.setElementStyle(this._ngEl.nativeElement, 'bottom', '0px'); + this._renderer.setElementStyle(this._ngEl.nativeElement, 'left', this._elemLeft + 'px'); + this._renderer.setElementStyle(this._ngEl.nativeElement, 'bottom', this._elemTop + 'px'); this._renderer.setElementStyle(this._ngEl.nativeElement, 'right', null); this._renderer.setElementStyle(this._ngEl.nativeElement, 'top', null); break; @@ -460,12 +465,15 @@ export class NgGridItem implements OnInit, OnDestroy { // Private methods private elementMatches(element: any, selector: string): boolean { + if (!element) return false; if (element.matches) return element.matches(selector); if (element.oMatchesSelector) return element.oMatchesSelector(selector); if (element.msMatchesSelector) return element.msMatchesSelector(selector); if (element.mozMatchesSelector) return element.mozMatchesSelector(selector); if (element.webkitMatchesSelector) return element.webkitMatchesSelector(selector); + if (!element.document || !element.ownerDocument) return false; + const matches: any = (element.document || element.ownerDocument).querySelectorAll(selector); let i: number = matches.length; while (--i >= 0 && matches.item(i) !== element) { }