UNPKG

angular-gridster2

Version:
84 lines 16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var core_1 = require("@angular/core"); var gridster_component_1 = require("./gridster.component"); var GridsterGridComponent = (function () { function GridsterGridComponent(el, gridster, renderer, cdRef) { this.renderer = renderer; this.cdRef = cdRef; this.el = el.nativeElement; this.gridster = gridster; this.gridster.gridLines = this; this.columns = []; this.rows = []; this.height = 0; this.width = 0; this.columnsHeight = 0; this.rowsWidth = 0; } GridsterGridComponent.prototype.ngOnDestroy = function () { delete this.el; delete this.gridster.gridLines; delete this.gridster; }; GridsterGridComponent.prototype.updateGrid = function () { if (this.gridster.$options.displayGrid === 'always' && !this.gridster.mobile) { this.renderer.setStyle(this.el, 'display', 'block'); } else if (this.gridster.$options.displayGrid === 'onDrag&Resize' && this.gridster.dragInProgress) { this.renderer.setStyle(this.el, 'display', 'block'); } else if (this.gridster.$options.displayGrid === 'none' || !this.gridster.dragInProgress || this.gridster.mobile) { this.renderer.setStyle(this.el, 'display', 'none'); } this.gridster.setGridDimensions(); this.height = this.gridster.curRowHeight - this.gridster.$options.margin; this.width = this.gridster.curColWidth - this.gridster.$options.margin; this.columns.length = Math.max(this.gridster.columns, Math.floor(this.gridster.curWidth / this.gridster.curColWidth)) || 0; this.rows.length = Math.max(this.gridster.rows, Math.floor(this.gridster.curHeight / this.gridster.curRowHeight)) || 0; this.columnsHeight = this.gridster.curRowHeight * this.rows.length + this.getMarginTop(true) - this.gridster.$options.margin; this.rowsWidth = this.gridster.curColWidth * this.columns.length + this.getMarginLeft(true) - this.gridster.$options.margin; this.cdRef.markForCheck(); }; GridsterGridComponent.prototype.getMarginTop = function (isFirst) { if (isFirst && !this.gridster.$options.outerMargin) { return 0; } else if (isFirst && this.gridster.$options.outerMargin && this.gridster.$options.outerMarginTop !== null) { return this.gridster.$options.outerMarginTop; } else { return this.gridster.$options.margin; } }; GridsterGridComponent.prototype.getMarginLeft = function (isFirst) { if (isFirst && !this.gridster.$options.outerMargin) { return 0; } else if (isFirst && this.gridster.$options.outerMargin && this.gridster.$options.outerMarginLeft !== null) { return this.gridster.$options.outerMarginLeft; } else { return this.gridster.$options.margin; } }; return GridsterGridComponent; }()); GridsterGridComponent.decorators = [ { type: core_1.Component, args: [{ selector: 'gridster-grid', template: "<div class=\"columns\" [style.height.px]=\"columnsHeight\"> <div class=\"column\" *ngFor=\"let column of columns; let isFirst = first;\" [style.min-width.px]=\"width\" [style.margin-left.px]=\"getMarginLeft(isFirst)\"></div> </div> <div class=\"rows\" [style.width.px]=\"rowsWidth\"> <div class=\"row\" *ngFor=\"let row of rows; let isFirst = first;\" [style.height.px]=\"height\" [style.margin-top.px]=\"getMarginTop(isFirst)\"></div> </div>", styles: ["gridster-grid { display: none; position: absolute; } gridster-grid .rows, gridster-grid .columns { position: absolute; } gridster-grid .columns { display: flex; flex-direction: row; } gridster-grid .column, gridster-grid .row { transition: .3s; box-sizing: border-box; } gridster-grid .column { height: 100%; border-left: 1px solid white; border-right: 1px solid white; } gridster-grid .row { width: 100%; border-top: 1px solid white; border-bottom: 1px solid white; }"], changeDetection: core_1.ChangeDetectionStrategy.OnPush, encapsulation: core_1.ViewEncapsulation.None },] }, ]; /** @nocollapse */ GridsterGridComponent.ctorParameters = function () { return [ { type: core_1.ElementRef, }, { type: gridster_component_1.GridsterComponent, decorators: [{ type: core_1.Host },] }, { type: core_1.Renderer2, }, { type: core_1.ChangeDetectorRef, }, ]; }; exports.GridsterGridComponent = GridsterGridComponent; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy50bXAvZ3JpZHN0ZXJHcmlkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNDQVN1QjtBQUV2QiwyREFBdUQ7QUFJdkQ7SUFVRSwrQkFBWSxFQUFjLEVBQUcsUUFBMkIsRUFBUyxRQUFtQixFQUNoRSxLQUF3QjtRQURxQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ2hFLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQzFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCwyQ0FBVyxHQUFYO1FBQ0UsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELDBDQUFVLEdBQVY7UUFDRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzdFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLE9B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LEdBQUc7SUFDcEIsRUFBQyxJQUFJLEVBQUUsc0NBQWlCLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBSSxFQUFFLEVBQUcsRUFBQztJQUN6RCxFQUFDLElBQUksRUFBRSxnQkFBUyxHQUFHO0lBQ25CLEVBQUMsSUFBSSxFQUFFLHdCQUFpQixHQUFHO0NBQzFCLEVBTDZGLENBSzdGLENBQUM7QUFqRlcsc0RBQXFCIiwiZmlsZSI6ImdyaWRzdGVyR3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3QsXG4gIE9uRGVzdHJveSxcbiAgUmVuZGVyZXIyLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtHcmlkc3RlckNvbXBvbmVudH0gZnJvbSAnLi9ncmlkc3Rlci5jb21wb25lbnQnO1xuXG5cblxuZXhwb3J0IGNsYXNzIEdyaWRzdGVyR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGVsOiBhbnk7XG4gIGdyaWRzdGVyOiBHcmlkc3RlckNvbXBvbmVudDtcbiAgY29sdW1uczogQXJyYXk8YW55PjtcbiAgcm93czogQXJyYXk8YW55PjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGNvbHVtbnNIZWlnaHQ6IG51bWJlcjtcbiAgcm93c1dpZHRoOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoZWw6IEVsZW1lbnRSZWYsICBncmlkc3RlcjogR3JpZHN0ZXJDb21wb25lbnQsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICAgICAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMuZWwgPSBlbC5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuZ3JpZHN0ZXIgPSBncmlkc3RlcjtcbiAgICB0aGlzLmdyaWRzdGVyLmdyaWRMaW5lcyA9IHRoaXM7XG4gICAgdGhpcy5jb2x1bW5zID0gW107XG4gICAgdGhpcy5yb3dzID0gW107XG4gICAgdGhpcy5oZWlnaHQgPSAwO1xuICAgIHRoaXMud2lkdGggPSAwO1xuICAgIHRoaXMuY29sdW1uc0hlaWdodCA9IDA7XG4gICAgdGhpcy5yb3dzV2lkdGggPSAwO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgZGVsZXRlIHRoaXMuZWw7XG4gICAgZGVsZXRlIHRoaXMuZ3JpZHN0ZXIuZ3JpZExpbmVzO1xuICAgIGRlbGV0ZSB0aGlzLmdyaWRzdGVyO1xuICB9XG5cbiAgdXBkYXRlR3JpZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ncmlkc3Rlci4kb3B0aW9ucy5kaXNwbGF5R3JpZCA9PT0gJ2Fsd2F5cycgJiYgIXRoaXMuZ3JpZHN0ZXIubW9iaWxlKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwsICdkaXNwbGF5JywgJ2Jsb2NrJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmdyaWRzdGVyLiRvcHRpb25zLmRpc3BsYXlHcmlkID09PSAnb25EcmFnJlJlc2l6ZScgJiYgdGhpcy5ncmlkc3Rlci5kcmFnSW5Qcm9ncmVzcykge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLCAnZGlzcGxheScsICdibG9jaycpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5ncmlkc3Rlci4kb3B0aW9ucy5kaXNwbGF5R3JpZCA9PT0gJ25vbmUnIHx8ICF0aGlzLmdyaWRzdGVyLmRyYWdJblByb2dyZXNzIHx8IHRoaXMuZ3JpZHN0ZXIubW9iaWxlKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwsICdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICB9XG4gICAgdGhpcy5ncmlkc3Rlci5zZXRHcmlkRGltZW5zaW9ucygpO1xuICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5ncmlkc3Rlci5jdXJSb3dIZWlnaHQgLSB0aGlzLmdyaWRzdGVyLiRvcHRpb25zLm1hcmdpbjtcbiAgICB0aGlzLndpZHRoID0gdGhpcy5ncmlkc3Rlci5jdXJDb2xXaWR0aCAtIHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMubWFyZ2luO1xuICAgIHRoaXMuY29sdW1ucy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmdyaWRzdGVyLmNvbHVtbnMsIE1hdGguZmxvb3IodGhpcy5ncmlkc3Rlci5jdXJXaWR0aCAvIHRoaXMuZ3JpZHN0ZXIuY3VyQ29sV2lkdGgpKSB8fCAwO1xuICAgIHRoaXMucm93cy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmdyaWRzdGVyLnJvd3MsIE1hdGguZmxvb3IodGhpcy5ncmlkc3Rlci5jdXJIZWlnaHQgLyB0aGlzLmdyaWRzdGVyLmN1clJvd0hlaWdodCkpIHx8IDA7XG4gICAgdGhpcy5jb2x1bW5zSGVpZ2h0ID0gdGhpcy5ncmlkc3Rlci5jdXJSb3dIZWlnaHQgKiB0aGlzLnJvd3MubGVuZ3RoICsgdGhpcy5nZXRNYXJnaW5Ub3AodHJ1ZSkgLSB0aGlzLmdyaWRzdGVyLiRvcHRpb25zLm1hcmdpbjtcbiAgICB0aGlzLnJvd3NXaWR0aCA9IHRoaXMuZ3JpZHN0ZXIuY3VyQ29sV2lkdGggKiB0aGlzLmNvbHVtbnMubGVuZ3RoICsgdGhpcy5nZXRNYXJnaW5MZWZ0KHRydWUpIC0gdGhpcy5ncmlkc3Rlci4kb3B0aW9ucy5tYXJnaW47XG4gICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldE1hcmdpblRvcChpc0ZpcnN0OiBib29sZWFuKTogbnVtYmVyIHtcbiAgICBpZiAoaXNGaXJzdCAmJiAhdGhpcy5ncmlkc3Rlci4kb3B0aW9ucy5vdXRlck1hcmdpbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBlbHNlIGlmIChpc0ZpcnN0ICYmIHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMub3V0ZXJNYXJnaW4gJiYgdGhpcy5ncmlkc3Rlci4kb3B0aW9ucy5vdXRlck1hcmdpblRvcCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMub3V0ZXJNYXJnaW5Ub3A7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmdyaWRzdGVyLiRvcHRpb25zLm1hcmdpbjtcbiAgICB9XG4gIH1cblxuICBnZXRNYXJnaW5MZWZ0KGlzRmlyc3Q6IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIGlmIChpc0ZpcnN0ICYmICF0aGlzLmdyaWRzdGVyLiRvcHRpb25zLm91dGVyTWFyZ2luKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGVsc2UgaWYgKGlzRmlyc3QgJiYgdGhpcy5ncmlkc3Rlci4kb3B0aW9ucy5vdXRlck1hcmdpbiAmJiB0aGlzLmdyaWRzdGVyLiRvcHRpb25zLm91dGVyTWFyZ2luTGVmdCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ3JpZHN0ZXIuJG9wdGlvbnMub3V0ZXJNYXJnaW5MZWZ0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5ncmlkc3Rlci4kb3B0aW9ucy5tYXJnaW47XG4gICAgfVxuICB9XG5zdGF0aWMgZGVjb3JhdG9yczogRGVjb3JhdG9ySW52b2NhdGlvbltdID0gW1xueyB0eXBlOiBDb21wb25lbnQsIGFyZ3M6IFt7XG4gIHNlbGVjdG9yOiAnZ3JpZHN0ZXItZ3JpZCcsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cImNvbHVtbnNcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImNvbHVtbnNIZWlnaHRcIj4gICA8ZGl2IGNsYXNzPVwiY29sdW1uXCIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgaXNGaXJzdCA9IGZpcnN0O1wiIFtzdHlsZS5taW4td2lkdGgucHhdPVwid2lkdGhcIiAgICAgICAgW3N0eWxlLm1hcmdpbi1sZWZ0LnB4XT1cImdldE1hcmdpbkxlZnQoaXNGaXJzdClcIj48L2Rpdj4gPC9kaXY+IDxkaXYgY2xhc3M9XCJyb3dzXCIgW3N0eWxlLndpZHRoLnB4XT1cInJvd3NXaWR0aFwiPiAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3M7IGxldCBpc0ZpcnN0ID0gZmlyc3Q7XCIgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRcIiAgICAgICAgW3N0eWxlLm1hcmdpbi10b3AucHhdPVwiZ2V0TWFyZ2luVG9wKGlzRmlyc3QpXCI+PC9kaXY+IDwvZGl2PmAsXG4gIHN0eWxlczogW2Bncmlkc3Rlci1ncmlkIHsgICBkaXNwbGF5OiBub25lOyAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgfSAgZ3JpZHN0ZXItZ3JpZCAucm93cywgZ3JpZHN0ZXItZ3JpZCAuY29sdW1ucyB7ICAgcG9zaXRpb246IGFic29sdXRlOyB9ICBncmlkc3Rlci1ncmlkIC5jb2x1bW5zIHsgICBkaXNwbGF5OiBmbGV4OyAgIGZsZXgtZGlyZWN0aW9uOiByb3c7IH0gIGdyaWRzdGVyLWdyaWQgLmNvbHVtbiwgZ3JpZHN0ZXItZ3JpZCAucm93IHsgICB0cmFuc2l0aW9uOiAuM3M7ICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfSAgZ3JpZHN0ZXItZ3JpZCAuY29sdW1uIHsgICBoZWlnaHQ6IDEwMCU7ICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB3aGl0ZTsgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB3aGl0ZTsgfSAgZ3JpZHN0ZXItZ3JpZCAucm93IHsgICB3aWR0aDogMTAwJTsgICBib3JkZXItdG9wOiAxcHggc29saWQgd2hpdGU7ICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHdoaXRlOyB9YF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59LCBdIH0sXG5dO1xuLyoqIEBub2NvbGxhcHNlICovXG5zdGF0aWMgY3RvclBhcmFtZXRlcnM6ICgpID0+ICh7dHlwZTogYW55LCBkZWNvcmF0b3JzPzogRGVjb3JhdG9ySW52b2NhdGlvbltdfXxudWxsKVtdID0gKCkgPT4gW1xue3R5cGU6IEVsZW1lbnRSZWYsIH0sXG57dHlwZTogR3JpZHN0ZXJDb21wb25lbnQsIGRlY29yYXRvcnM6IFt7IHR5cGU6IEhvc3QgfSwgXX0sXG57dHlwZTogUmVuZGVyZXIyLCB9LFxue3R5cGU6IENoYW5nZURldGVjdG9yUmVmLCB9LFxuXTtcbn1cblxuaW50ZXJmYWNlIERlY29yYXRvckludm9jYXRpb24ge1xuICB0eXBlOiBGdW5jdGlvbjtcbiAgYXJncz86IGFueVtdO1xufVxuIl19