@ux-aspects/ux-aspects
Version:
Open source user interface framework for building modern, responsive, mobile big data applications
50 lines • 6.56 kB
JavaScript
import { Injectable } from '@angular/core';
import { BehaviorSubject, Subject } from 'rxjs';
import * as i0 from "@angular/core";
export class BaseResizableTableService {
constructor() {
/** Emit an event whenever a column is resized */
this.onResize$ = new Subject();
/** Store the current width of the table */
this.tableWidth = 0;
/** Determine if we are currently resizing */
this.isResizing$ = new BehaviorSubject(false);
/** Indicate when the columns are ready */
this.isInitialised$ = new BehaviorSubject(false);
/** Store the percentage widths of each column */
this.columns = [];
}
/** Cleanup when service is disposed */
ngOnDestroy() {
this.onResize$.complete();
}
/** Update the resizing state */
setResizing(isResizing) {
this.isResizing$.next(isResizing);
}
/** Get the width of a column in a specific unit */
getColumnWidth(index, unit, columns = this.columns) {
switch (unit) {
case ColumnUnit.Percentage:
return columns[index];
case ColumnUnit.Pixel:
return (this.tableWidth / 100) * columns[index];
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BaseResizableTableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BaseResizableTableService }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BaseResizableTableService, decorators: [{
type: Injectable
}] });
export var ColumnUnit;
(function (ColumnUnit) {
ColumnUnit[ColumnUnit["Pixel"] = 0] = "Pixel";
ColumnUnit[ColumnUnit["Percentage"] = 1] = "Percentage";
})(ColumnUnit || (ColumnUnit = {}));
export var ResizableTableType;
(function (ResizableTableType) {
ResizableTableType[ResizableTableType["Standard"] = 0] = "Standard";
ResizableTableType[ResizableTableType["Expand"] = 1] = "Expand";
})(ResizableTableType || (ResizableTableType = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLXRhYmxlLWJhc2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3RhYmxlL3RhYmxlLWNvbHVtbi1yZXNpemUvcmVzaXphYmxlLXRhYmxlLWJhc2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUF3QixNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJaEQsTUFBTSxPQUFnQix5QkFBeUI7SUFEL0M7UUFLSSxpREFBaUQ7UUFDakQsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFaEMsMkNBQTJDO1FBQzNDLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFFdkIsNkNBQTZDO1FBQzdDLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFbEQsMENBQTBDO1FBQzFDLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFckQsaURBQWlEO1FBQ2pELFlBQU8sR0FBMEIsRUFBRSxDQUFDO0tBa0N2QztJQXhCRyx1Q0FBdUM7SUFDdkMsV0FBVztRQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxXQUFXLENBQUMsVUFBbUI7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELG1EQUFtRDtJQUNuRCxjQUFjLENBQUMsS0FBYSxFQUFFLElBQWdCLEVBQUUsVUFBaUMsSUFBSSxDQUFDLE9BQU87UUFFekYsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUVYLEtBQUssVUFBVSxDQUFDLFVBQVU7Z0JBQ3RCLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTFCLEtBQUssVUFBVSxDQUFDLEtBQUs7Z0JBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBRUwsQ0FBQzsrR0FqRGlCLHlCQUF5QjttSEFBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUQ5QyxVQUFVOztBQXNEWCxNQUFNLENBQU4sSUFBWSxVQUdYO0FBSEQsV0FBWSxVQUFVO0lBQ2xCLDZDQUFLLENBQUE7SUFDTCx1REFBVSxDQUFBO0FBQ2QsQ0FBQyxFQUhXLFVBQVUsS0FBVixVQUFVLFFBR3JCO0FBRUQsTUFBTSxDQUFOLElBQVksa0JBR1g7QUFIRCxXQUFZLGtCQUFrQjtJQUMxQixtRUFBUSxDQUFBO0lBQ1IsK0RBQU0sQ0FBQTtBQUNWLENBQUMsRUFIVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBRzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmVzaXphYmxlVGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL3Jlc2l6YWJsZS10YWJsZS1jb2x1bW4uY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VSZXNpemFibGVUYWJsZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgYWJzdHJhY3QgdHlwZTogUmVzaXphYmxlVGFibGVUeXBlO1xuXG4gICAgLyoqIEVtaXQgYW4gZXZlbnQgd2hlbmV2ZXIgYSBjb2x1bW4gaXMgcmVzaXplZCAqL1xuICAgIG9uUmVzaXplJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogU3RvcmUgdGhlIGN1cnJlbnQgd2lkdGggb2YgdGhlIHRhYmxlICovXG4gICAgdGFibGVXaWR0aDogbnVtYmVyID0gMDtcblxuICAgIC8qKiBEZXRlcm1pbmUgaWYgd2UgYXJlIGN1cnJlbnRseSByZXNpemluZyAqL1xuICAgIGlzUmVzaXppbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvKiogSW5kaWNhdGUgd2hlbiB0aGUgY29sdW1ucyBhcmUgcmVhZHkgKi9cbiAgICBpc0luaXRpYWxpc2VkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqIFN0b3JlIHRoZSBwZXJjZW50YWdlIHdpZHRocyBvZiBlYWNoIGNvbHVtbiAqL1xuICAgIGNvbHVtbnM6IFJlYWRvbmx5QXJyYXk8bnVtYmVyPiA9IFtdO1xuXG4gICAgYWJzdHJhY3QgcmVzaXplQ29sdW1uKGluZGV4OiBudW1iZXIsIGRlbHRhOiBudW1iZXIsIGlzRHJhZ2dpbmc/OiBib29sZWFuKTogdm9pZDtcblxuICAgIGFic3RyYWN0IHNldENvbHVtbnMoY29sdW1uczogUXVlcnlMaXN0PFJlc2l6YWJsZVRhYmxlQ29sdW1uQ29tcG9uZW50Pik6IHZvaWQ7XG5cbiAgICBhYnN0cmFjdCBzZXRVbmlmb3JtV2lkdGhzKCk6IHZvaWQ7XG5cbiAgICBhYnN0cmFjdCBnZXRDb2x1bW5EaXNhYmxlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbjtcblxuICAgIC8qKiBDbGVhbnVwIHdoZW4gc2VydmljZSBpcyBkaXNwb3NlZCAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uUmVzaXplJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBVcGRhdGUgdGhlIHJlc2l6aW5nIHN0YXRlICovXG4gICAgc2V0UmVzaXppbmcoaXNSZXNpemluZzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzUmVzaXppbmckLm5leHQoaXNSZXNpemluZyk7XG4gICAgfVxuXG4gICAgLyoqIEdldCB0aGUgd2lkdGggb2YgYSBjb2x1bW4gaW4gYSBzcGVjaWZpYyB1bml0ICovXG4gICAgZ2V0Q29sdW1uV2lkdGgoaW5kZXg6IG51bWJlciwgdW5pdDogQ29sdW1uVW5pdCwgY29sdW1uczogUmVhZG9ubHlBcnJheTxudW1iZXI+ID0gdGhpcy5jb2x1bW5zKTogbnVtYmVyIHtcblxuICAgICAgICBzd2l0Y2ggKHVuaXQpIHtcblxuICAgICAgICAgICAgY2FzZSBDb2x1bW5Vbml0LlBlcmNlbnRhZ2U6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbnNbaW5kZXhdO1xuXG4gICAgICAgICAgICBjYXNlIENvbHVtblVuaXQuUGl4ZWw6XG4gICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLnRhYmxlV2lkdGggLyAxMDApICogY29sdW1uc1tpbmRleF07XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG5leHBvcnQgZW51bSBDb2x1bW5Vbml0IHtcbiAgICBQaXhlbCxcbiAgICBQZXJjZW50YWdlXG59XG5cbmV4cG9ydCBlbnVtIFJlc2l6YWJsZVRhYmxlVHlwZSB7XG4gICAgU3RhbmRhcmQsXG4gICAgRXhwYW5kXG59XG4iXX0=