UNPKG

@lightweightform/theme-common

Version:

Common utilities for Lightweightform themes

147 lines 12.3 kB
import { __decorate } from "tslib"; import { Directive, Input, SkipSelf } from '@angular/core'; import { makeObservable } from 'mobx'; import { computed, observable } from 'mobx-angular'; import { TableColumnContainer } from './table-column-container'; import * as i0 from "@angular/core"; import * as i1 from "./table-column-container"; /** * Directive representing a table column (which may have sub-columns). Leaf * columns (columns with no sub-columns) may specify `minWidth` and `fixed` to * impose sizing restrictions on their respective table columns. */ export class TableColumnDirective extends TableColumnContainer { constructor(parentTableColumnContainer = null, elementRef) { super(parentTableColumnContainer, elementRef); Object.defineProperty(this, "elementRef", { enumerable: true, configurable: true, writable: true, value: elementRef }); /** * Identifier of this column (used, for example, to set a label on the * respective table-header cell). */ Object.defineProperty(this, "id", { enumerable: true, configurable: true, writable: true, value: void 0 }); /** * Colspan of the column; this binding only has an effect if the column is a * leaf column. */ Object.defineProperty(this, "colspan", { enumerable: true, configurable: true, writable: true, value: void 0 }); /** * Minimum width of a column (in pixels); this binding is only relevant when * applied to leaf columns. Note that the actual width of a column will be * relative the minimum width of all other columns; as an example a column * with a `minWidth` of `200` should always be twice as large as a column with * a `minWidth` of `100`. * * An array may be provided (with a length matching `colspan`) to specify the * `minWidth` of each column that this column spans over. */ Object.defineProperty(this, "minWidth", { enumerable: true, configurable: true, writable: true, value: void 0 }); /** * `fixed` columns have their width set to `minWidth` and their width won't * ever vary. */ Object.defineProperty(this, "fixed", { enumerable: true, configurable: true, writable: true, value: false }); makeObservable(this); } /** * `rowSpan` that should be set on the header table cell that represents this * column. * @returns`rowSpan` of the cell representing this column. */ get rowSpan() { // Iterate until `columnContainer` is a `TableHeaderDirective` and // `rowIndex` represents the index of the header row (`<tr>`) to which the // cell (`<th>`) representing this column belongs let columnContainer; let rowIndex = 0; for (columnContainer = this.parentTableColumnContainer; columnContainer.parentTableColumnContainer; columnContainer = columnContainer.parentTableColumnContainer) { ++rowIndex; } return this.height > 1 ? 1 : columnContainer.numberOfRows - rowIndex; } /** * `colSpan` that should be set on the header table cell that represents this * column.colSpan * @returns `colSpan` of the cell representing this column. */ get colSpan() { return this.width; } } Object.defineProperty(TableColumnDirective, "\u0275fac", { enumerable: true, configurable: true, writable: true, value: i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TableColumnDirective, deps: [{ token: i1.TableColumnContainer, skipSelf: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }) }); Object.defineProperty(TableColumnDirective, "\u0275dir", { enumerable: true, configurable: true, writable: true, value: i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: TableColumnDirective, selector: "lf-table-column, [lfTableColumn]", inputs: { id: "id", colspan: "colspan", minWidth: "minWidth", fixed: "fixed" }, providers: [ { provide: TableColumnContainer, useExisting: TableColumnDirective }, ], exportAs: ["lfTableColumn"], usesInheritance: true, ngImport: i0 }) }); __decorate([ observable ], TableColumnDirective.prototype, "id", void 0); __decorate([ observable ], TableColumnDirective.prototype, "colspan", void 0); __decorate([ observable ], TableColumnDirective.prototype, "minWidth", void 0); __decorate([ observable ], TableColumnDirective.prototype, "fixed", void 0); __decorate([ computed ], TableColumnDirective.prototype, "rowSpan", null); __decorate([ computed ], TableColumnDirective.prototype, "colSpan", null); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TableColumnDirective, decorators: [{ type: Directive, args: [{ selector: 'lf-table-column, [lfTableColumn]', exportAs: 'lfTableColumn', providers: [ { provide: TableColumnContainer, useExisting: TableColumnDirective }, ], }] }], ctorParameters: function () { return [{ type: i1.TableColumnContainer, decorators: [{ type: SkipSelf }] }, { type: i0.ElementRef }]; }, propDecorators: { id: [{ type: Input }], colspan: [{ type: Input }], minWidth: [{ type: Input }], fixed: [{ type: Input }], rowSpan: [], colSpan: [] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3RhYmxlLWhlYWRlci90YWJsZS1jb2x1bW4uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVwRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBRWhFOzs7O0dBSUc7QUFRSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsb0JBQW9CO0lBdUM1RCxZQUNjLDZCQUEwRCxJQUFJLEVBQ2hFLFVBQXNCO1FBRWhDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxVQUFVLENBQUMsQ0FBQzs7Ozs7bUJBRnBDOztRQXhDWjs7O1dBR0c7UUFHSDs7Ozs7V0FBa0I7UUFFbEI7OztXQUdHO1FBR0g7Ozs7O1dBQWlDO1FBRWpDOzs7Ozs7Ozs7V0FTRztRQUdIOzs7OztXQUFvQztRQUVwQzs7O1dBR0c7UUFHSDs7OzttQkFBZSxLQUFLO1dBQUM7UUFPbkIsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7OztPQUlHO0lBRUgsSUFBVyxPQUFPO1FBQ2hCLGtFQUFrRTtRQUNsRSwwRUFBMEU7UUFDMUUsaURBQWlEO1FBQ2pELElBQUksZUFBZSxDQUFDO1FBQ3BCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNqQixLQUNFLGVBQWUsR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQ2pELGVBQWUsQ0FBQywwQkFBMEIsRUFDMUMsZUFBZSxHQUFHLGVBQWUsQ0FBQywwQkFBMEIsRUFDNUQ7WUFDQSxFQUFFLFFBQVEsQ0FBQztTQUNaO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztJQUN2RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUVILElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQzs7Ozs7O2lHQTdFVSxvQkFBb0I7Ozs7OztxRkFBcEIsb0JBQW9CLDJJQUpwQjtZQUNULEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRTtTQUNyRTs7QUFTRDtJQUZDLFVBQVU7Z0RBRU87QUFRbEI7SUFGQyxVQUFVO3FEQUVzQjtBQWNqQztJQUZDLFVBQVU7c0RBRXlCO0FBUXBDO0lBRkMsVUFBVTttREFFVTtBQWdCckI7SUFEQyxRQUFRO21EQWVSO0FBUUQ7SUFEQyxRQUFRO21EQUdSOzRGQTdFVSxvQkFBb0I7a0JBUGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtDQUFrQztvQkFDNUMsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFNBQVMsRUFBRTt3QkFDVCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLHNCQUFzQixFQUFFO3FCQUNyRTtpQkFDRjs7MEJBeUNJLFFBQVE7cUVBakNKLEVBQUU7c0JBRFIsS0FBSztnQkFTQyxPQUFPO3NCQURiLEtBQUs7Z0JBZUMsUUFBUTtzQkFEZCxLQUFLO2dCQVNDLEtBQUs7c0JBRFgsS0FBSztnQkFpQkssT0FBTyxNQXNCUCxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1ha2VPYnNlcnZhYmxlIH0gZnJvbSAnbW9ieCc7XG5pbXBvcnQgeyBjb21wdXRlZCwgb2JzZXJ2YWJsZSB9IGZyb20gJ21vYngtYW5ndWxhcic7XG5cbmltcG9ydCB7IFRhYmxlQ29sdW1uQ29udGFpbmVyIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4tY29udGFpbmVyJztcblxuLyoqXG4gKiBEaXJlY3RpdmUgcmVwcmVzZW50aW5nIGEgdGFibGUgY29sdW1uICh3aGljaCBtYXkgaGF2ZSBzdWItY29sdW1ucykuIExlYWZcbiAqIGNvbHVtbnMgKGNvbHVtbnMgd2l0aCBubyBzdWItY29sdW1ucykgbWF5IHNwZWNpZnkgYG1pbldpZHRoYCBhbmQgYGZpeGVkYCB0b1xuICogaW1wb3NlIHNpemluZyByZXN0cmljdGlvbnMgb24gdGhlaXIgcmVzcGVjdGl2ZSB0YWJsZSBjb2x1bW5zLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdsZi10YWJsZS1jb2x1bW4sIFtsZlRhYmxlQ29sdW1uXScsXG4gIGV4cG9ydEFzOiAnbGZUYWJsZUNvbHVtbicsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogVGFibGVDb2x1bW5Db250YWluZXIsIHVzZUV4aXN0aW5nOiBUYWJsZUNvbHVtbkRpcmVjdGl2ZSB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtbkRpcmVjdGl2ZSBleHRlbmRzIFRhYmxlQ29sdW1uQ29udGFpbmVyIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhpcyBjb2x1bW4gKHVzZWQsIGZvciBleGFtcGxlLCB0byBzZXQgYSBsYWJlbCBvbiB0aGVcbiAgICogcmVzcGVjdGl2ZSB0YWJsZS1oZWFkZXIgY2VsbCkuXG4gICAqL1xuICBAb2JzZXJ2YWJsZVxuICBASW5wdXQoKVxuICBwdWJsaWMgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ29sc3BhbiBvZiB0aGUgY29sdW1uOyB0aGlzIGJpbmRpbmcgb25seSBoYXMgYW4gZWZmZWN0IGlmIHRoZSBjb2x1bW4gaXMgYVxuICAgKiBsZWFmIGNvbHVtbi5cbiAgICovXG4gIEBvYnNlcnZhYmxlXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb2xzcGFuPzogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNaW5pbXVtIHdpZHRoIG9mIGEgY29sdW1uIChpbiBwaXhlbHMpOyB0aGlzIGJpbmRpbmcgaXMgb25seSByZWxldmFudCB3aGVuXG4gICAqIGFwcGxpZWQgdG8gbGVhZiBjb2x1bW5zLiBOb3RlIHRoYXQgdGhlIGFjdHVhbCB3aWR0aCBvZiBhIGNvbHVtbiB3aWxsIGJlXG4gICAqIHJlbGF0aXZlIHRoZSBtaW5pbXVtIHdpZHRoIG9mIGFsbCBvdGhlciBjb2x1bW5zOyBhcyBhbiBleGFtcGxlIGEgY29sdW1uXG4gICAqIHdpdGggYSBgbWluV2lkdGhgIG9mIGAyMDBgIHNob3VsZCBhbHdheXMgYmUgdHdpY2UgYXMgbGFyZ2UgYXMgYSBjb2x1bW4gd2l0aFxuICAgKiBhIGBtaW5XaWR0aGAgb2YgYDEwMGAuXG4gICAqXG4gICAqIEFuIGFycmF5IG1heSBiZSBwcm92aWRlZCAod2l0aCBhIGxlbmd0aCBtYXRjaGluZyBgY29sc3BhbmApIHRvIHNwZWNpZnkgdGhlXG4gICAqIGBtaW5XaWR0aGAgb2YgZWFjaCBjb2x1bW4gdGhhdCB0aGlzIGNvbHVtbiBzcGFucyBvdmVyLlxuICAgKi9cbiAgQG9ic2VydmFibGVcbiAgQElucHV0KClcbiAgcHVibGljIG1pbldpZHRoPzogbnVtYmVyIHwgbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIGBmaXhlZGAgY29sdW1ucyBoYXZlIHRoZWlyIHdpZHRoIHNldCB0byBgbWluV2lkdGhgIGFuZCB0aGVpciB3aWR0aCB3b24ndFxuICAgKiBldmVyIHZhcnkuXG4gICAqL1xuICBAb2JzZXJ2YWJsZVxuICBASW5wdXQoKVxuICBwdWJsaWMgZml4ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2tpcFNlbGYoKSBwYXJlbnRUYWJsZUNvbHVtbkNvbnRhaW5lcjogVGFibGVDb2x1bW5Db250YWluZXIgfCBudWxsID0gbnVsbCxcbiAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHtcbiAgICBzdXBlcihwYXJlbnRUYWJsZUNvbHVtbkNvbnRhaW5lciwgZWxlbWVudFJlZik7XG4gICAgbWFrZU9ic2VydmFibGUodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogYHJvd1NwYW5gIHRoYXQgc2hvdWxkIGJlIHNldCBvbiB0aGUgaGVhZGVyIHRhYmxlIGNlbGwgdGhhdCByZXByZXNlbnRzIHRoaXNcbiAgICogY29sdW1uLlxuICAgKiBAcmV0dXJuc2Byb3dTcGFuYCBvZiB0aGUgY2VsbCByZXByZXNlbnRpbmcgdGhpcyBjb2x1bW4uXG4gICAqL1xuICBAY29tcHV0ZWRcbiAgcHVibGljIGdldCByb3dTcGFuKCk6IG51bWJlciB7XG4gICAgLy8gSXRlcmF0ZSB1bnRpbCBgY29sdW1uQ29udGFpbmVyYCBpcyBhIGBUYWJsZUhlYWRlckRpcmVjdGl2ZWAgYW5kXG4gICAgLy8gYHJvd0luZGV4YCByZXByZXNlbnRzIHRoZSBpbmRleCBvZiB0aGUgaGVhZGVyIHJvdyAoYDx0cj5gKSB0byB3aGljaCB0aGVcbiAgICAvLyBjZWxsIChgPHRoPmApIHJlcHJlc2VudGluZyB0aGlzIGNvbHVtbiBiZWxvbmdzXG4gICAgbGV0IGNvbHVtbkNvbnRhaW5lcjtcbiAgICBsZXQgcm93SW5kZXggPSAwO1xuICAgIGZvciAoXG4gICAgICBjb2x1bW5Db250YWluZXIgPSB0aGlzLnBhcmVudFRhYmxlQ29sdW1uQ29udGFpbmVyO1xuICAgICAgY29sdW1uQ29udGFpbmVyLnBhcmVudFRhYmxlQ29sdW1uQ29udGFpbmVyO1xuICAgICAgY29sdW1uQ29udGFpbmVyID0gY29sdW1uQ29udGFpbmVyLnBhcmVudFRhYmxlQ29sdW1uQ29udGFpbmVyXG4gICAgKSB7XG4gICAgICArK3Jvd0luZGV4O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5oZWlnaHQgPiAxID8gMSA6IGNvbHVtbkNvbnRhaW5lci5udW1iZXJPZlJvd3MgLSByb3dJbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBgY29sU3BhbmAgdGhhdCBzaG91bGQgYmUgc2V0IG9uIHRoZSBoZWFkZXIgdGFibGUgY2VsbCB0aGF0IHJlcHJlc2VudHMgdGhpc1xuICAgKiBjb2x1bW4uY29sU3BhblxuICAgKiBAcmV0dXJucyBgY29sU3BhbmAgb2YgdGhlIGNlbGwgcmVwcmVzZW50aW5nIHRoaXMgY29sdW1uLlxuICAgKi9cbiAgQGNvbXB1dGVkXG4gIHB1YmxpYyBnZXQgY29sU3BhbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLndpZHRoO1xuICB9XG59XG4iXX0=