UNPKG

ngx-mat-lib

Version:

A bunch of utilities and components to use in your Angular 7+ apps!

191 lines (190 loc) 17.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Component, ComponentFactoryResolver, Input, ViewContainerRef, ViewEncapsulation } from "@angular/core"; import { XmatLegendItemContentComponent } from "./xmat-legend-item-content.component"; import { XmatLegendLayouts } from "./xmat-legend.model"; import { coerceBooleanProperty } from "@angular/cdk/coercion"; import { each } from "lodash"; /** @type {?} */ var xmatLegendDefaultCols = 4; var XmatLegendComponent = /** @class */ (function () { function XmatLegendComponent(_resolver, _viewContainerRef) { this._resolver = _resolver; this._viewContainerRef = _viewContainerRef; this.layout = XmatLegendLayouts.GRID; this.itemStyle = { "flex": "1 0 " + 100 / xmatLegendDefaultCols + "%" }; this._columns = xmatLegendDefaultCols; this._fillColumns = !0; this._itemContentClass = XmatLegendItemContentComponent; } Object.defineProperty(XmatLegendComponent.prototype, "fillColumns", { get: /** * @return {?} */ function () { return this._fillColumns; }, set: /** * @param {?} newValue * @return {?} */ function (newValue) { this._fillColumns = coerceBooleanProperty(newValue); }, enumerable: true, configurable: true }); Object.defineProperty(XmatLegendComponent.prototype, "columns", { get: /** * @return {?} */ function () { return this._columns; }, set: /** * @param {?} newValue * @return {?} */ function (newValue) { if (!isNaN(+newValue) && +newValue > 0) { this._columns = Math.floor(+newValue); this._updateItemStyle(); this._legendInit(); } else { this._columns = xmatLegendDefaultCols; console.error("XmatLegend invalid length provided, setting to default", newValue); } }, enumerable: true, configurable: true }); Object.defineProperty(XmatLegendComponent.prototype, "items", { get: /** * @return {?} */ function () { return this._items; }, set: /** * @param {?} newValue * @return {?} */ function (newValue) { this._items = newValue; this._legendInit(); }, enumerable: true, configurable: true }); /** * @return {?} */ XmatLegendComponent.prototype._constructContent = /** * @return {?} */ function () { /** @type {?} */ var factory = this._resolver.resolveComponentFactory(this._itemContentClass); this._itemContentRef = this._viewContainerRef.createComponent(factory); return /** @type {?} */ (this._itemContentRef.instance); }; /** * @return {?} */ XmatLegendComponent.prototype._legendInit = /** * @return {?} */ function () { var _this = this; if (!Array.isArray(this.items)) { console.warn("XmatLegend list was not ready. Init prevented."); return !1; } if (this._fillColumns) { /** @type {?} */ var fillerCount = (this._columns - (this.items.length % this._columns)) % this._columns; each(new Array(fillerCount), function () { _this.items.push(/** @type {?} */ ({ content: "<span style=\"display: none\"></span>", className: "xmat-grid-fill" })); }); } each(this.items, function (item) { if (typeof item.content === "string") { /** @type {?} */ var tmpCompInstance = _this._constructContent(); // this._xmatFunctions.logWithStyle("XmatLegend", "Was String Content", "#006699", item.content); tmpCompInstance.content = item.content; item.content = tmpCompInstance; } else if (item.content instanceof XmatLegendItemContentComponent) { // Valid // this._xmatFunctions.logWithStyle("XmatLegend", "Was Instance Content", "#336699", item.content); } else { // this._xmatFunctions.logWithStyle("XmatLegend", "Was INVALID Content", "#CC0000", item.content); // Hide broken ones? } }); }; /** * @return {?} */ XmatLegendComponent.prototype._updateItemStyle = /** * @return {?} */ function () { this.itemStyle = { "flex": "1 0 " + 100 / this._columns + "%" }; return this.itemStyle; }; XmatLegendComponent.decorators = [ { type: Component, args: [{ selector: "xmat-legend", template: "<ul class=\"xmat-legend xmat-legend-{{layout}}\" *ngIf=\"items?.length\">\n <li [ngStyle]=\"itemStyle\" class=\"{{item.className}}\" *ngFor=\"let item of items\">\n <div class=\"xmat-legend-color\" [style.backgroundColor]=\"item.color\" *ngIf=\"!!item.color\"></div>\n <img class=\"xmat-legend-image\" *ngIf=\"!!item?.image\" [src]=\"item.image\" />\n <div *ngTemplateOutlet=\"item.content.xMatLegendItemContent\">\n\n </div>\n </li>\n</ul>\n", encapsulation: ViewEncapsulation.None, styles: ["ul.xmat-legend{list-style-type:none;padding:0;margin:0}ul.xmat-legend.xmat-legend-grid{display:-webkit-box;display:flex;flex-wrap:wrap}ul.xmat-legend.xmat-legend-grid>li{padding:8px;margin:0;box-sizing:border-box}ul.xmat-legend.xmat-legend-grid>li.xmat-grid-fill{padding:0}ul.xmat-legend>li{line-height:24px;font-size:12px;margin:5px 10px;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center}ul.xmat-legend>li>*{margin-right:8px}ul.xmat-legend>li>div.xmat-legend-color{width:8px;height:8px;flex-shrink:0}ul.xmat-legend>li>img.xmat-legend-image{flex-shrink:0;height:24px}"] }] } ]; /** @nocollapse */ XmatLegendComponent.ctorParameters = function () { return [ { type: ComponentFactoryResolver }, { type: ViewContainerRef } ]; }; XmatLegendComponent.propDecorators = { fillColumns: [{ type: Input }], columns: [{ type: Input }], items: [{ type: Input }], layout: [{ type: Input }] }; return XmatLegendComponent; }()); export { XmatLegendComponent }; if (false) { /** @type {?} */ XmatLegendComponent.prototype.layout; /** @type {?} */ XmatLegendComponent.prototype.itemStyle; /** @type {?} */ XmatLegendComponent.prototype._columns; /** @type {?} */ XmatLegendComponent.prototype._fillColumns; /** @type {?} */ XmatLegendComponent.prototype._items; /** @type {?} */ XmatLegendComponent.prototype._itemContentClass; /** @type {?} */ XmatLegendComponent.prototype._itemContentRef; /** @type {?} */ XmatLegendComponent.prototype._resolver; /** @type {?} */ XmatLegendComponent.prototype._viewContainerRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1hdC1sZWdlbmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW1hdC1saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy94bWF0LWxlZ2VuZC94bWF0LWxlZ2VuZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsd0JBQXdCLEVBQ3hCLEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BGLE9BQU8sRUFBbUMsaUJBQWlCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUc1RCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFDOztBQUU1QixJQUFNLHFCQUFxQixHQUFXLENBQUMsQ0FBQzs7SUE0RHBDLDZCQUFvQixTQUFtQyxFQUNuQztRQURBLGNBQVMsR0FBVCxTQUFTLENBQTBCO1FBQ25DLHNCQUFpQixHQUFqQixpQkFBaUI7UUFickMsY0FBb0MsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1FBRTNELGlCQUFpQztZQUM3QixNQUFNLEVBQUUsU0FBTyxHQUFHLEdBQUcscUJBQXFCLE1BQUc7U0FDaEQsQ0FBQzt3QkFFeUIscUJBQXFCOzRCQUNoQixDQUFDLENBQUM7aUNBRU4sOEJBQThCO0tBTXpEO0lBbkRELHNCQUNJLDRDQUFXOzs7O1FBRGY7WUFFSSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDNUI7Ozs7O1FBRUQsVUFBZ0IsUUFBaUI7WUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2RDs7O09BSkE7SUFNRCxzQkFDSSx3Q0FBTzs7OztRQURYO1lBRUksT0FBTyxJQUFJLENBQUMsUUFB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QXVCZixLQUFLOzBCQVNMLEtBQUs7d0JBaUJMLEtBQUs7eUJBVUwsS0FBSzs7OEJBaEVWOztTQXlCYSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb21wb25lbnRSZWYsXG4gICAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIElucHV0LFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbi8vXG5pbXBvcnQge1htYXRMZWdlbmRJdGVtQ29udGVudENvbXBvbmVudH0gZnJvbSBcIi4veG1hdC1sZWdlbmQtaXRlbS1jb250ZW50LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtYbWF0TGVnZW5kSXRlbSwgWG1hdExlZ2VuZExheW91dCwgWG1hdExlZ2VuZExheW91dHN9IGZyb20gXCIuL3htYXQtbGVnZW5kLm1vZGVsXCI7XG5pbXBvcnQge2NvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2VyY2lvblwiO1xuaW1wb3J0IHtYbWF0TGVnZW5kSXRlbVN0eWxlfSBmcm9tIFwiLi94bWF0LWxlZ2VuZC5tb2RlbFwiO1xuLy9cbmltcG9ydCB7ZWFjaH0gZnJvbSBcImxvZGFzaFwiO1xuXG5jb25zdCB4bWF0TGVnZW5kRGVmYXVsdENvbHM6IG51bWJlciA9IDQ7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInhtYXQtbGVnZW5kXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi94bWF0LWxlZ2VuZC5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi94bWF0LWxlZ2VuZC5jb21wb25lbnQuc2Nzc1wiXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuXG5leHBvcnQgY2xhc3MgWG1hdExlZ2VuZENvbXBvbmVudCB7XG5cblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGZpbGxDb2x1bW5zKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsbENvbHVtbnM7XG4gICAgfVxuXG4gICAgc2V0IGZpbGxDb2x1bW5zKG5ld1ZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2ZpbGxDb2x1bW5zID0gY29lcmNlQm9vbGVhblByb3BlcnR5KG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBjb2x1bW5zKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5zO1xuICAgIH1cblxuICAgIHNldCBjb2x1bW5zKG5ld1ZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCFpc05hTigrbmV3VmFsdWUpICYmICtuZXdWYWx1ZSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbHVtbnMgPSBNYXRoLmZsb29yKCtuZXdWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVJdGVtU3R5bGUoKTtcbiAgICAgICAgICAgIHRoaXMuX2xlZ2VuZEluaXQoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbHVtbnMgPSB4bWF0TGVnZW5kRGVmYXVsdENvbHM7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiWG1hdExlZ2VuZCBpbnZhbGlkIGxlbmd0aCBwcm92aWRlZCwgc2V0dGluZyB0byBkZWZhdWx0XCIsIG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGl0ZW1zKCk6IFhtYXRMZWdlbmRJdGVtW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gICAgfVxuXG4gICAgc2V0IGl0ZW1zKG5ld1ZhbHVlOiBYbWF0TGVnZW5kSXRlbVtdKSB7XG4gICAgICAgIHRoaXMuX2l0ZW1zID0gbmV3VmFsdWU7XG4gICAgICAgIHRoaXMuX2xlZ2VuZEluaXQoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBsYXlvdXQ6IFhtYXRMZWdlbmRMYXlvdXQgPSBYbWF0TGVnZW5kTGF5b3V0cy5HUklEO1xuXG4gICAgaXRlbVN0eWxlOiBYbWF0TGVnZW5kSXRlbVN0eWxlID0ge1xuICAgICAgICBcImZsZXhcIjogYDEgMCAkezEwMCAvIHhtYXRMZWdlbmREZWZhdWx0Q29sc30lYFxuICAgIH07XG5cbiAgICBwcml2YXRlIF9jb2x1bW5zOiBudW1iZXIgPSB4bWF0TGVnZW5kRGVmYXVsdENvbHM7XG4gICAgcHJpdmF0ZSBfZmlsbENvbHVtbnM6IGJvb2xlYW4gPSAhMDtcbiAgICBwcml2YXRlIF9pdGVtczogWG1hdExlZ2VuZEl0ZW1bXTtcbiAgICBwcml2YXRlIF9pdGVtQ29udGVudENsYXNzID0gWG1hdExlZ2VuZEl0ZW1Db250ZW50Q29tcG9uZW50O1xuICAgIHByaXZhdGUgX2l0ZW1Db250ZW50UmVmOiBDb21wb25lbnRSZWY8WG1hdExlZ2VuZEl0ZW1Db250ZW50Q29tcG9uZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3Jlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29uc3RydWN0Q29udGVudCgpOiBYbWF0TGVnZW5kSXRlbUNvbnRlbnRDb21wb25lbnQge1xuICAgICAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5fcmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy5faXRlbUNvbnRlbnRDbGFzcyk7XG4gICAgICAgIHRoaXMuX2l0ZW1Db250ZW50UmVmID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtQ29udGVudFJlZi5pbnN0YW5jZSBhcyBYbWF0TGVnZW5kSXRlbUNvbnRlbnRDb21wb25lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbGVnZW5kSW5pdCgpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuaXRlbXMpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJYbWF0TGVnZW5kIGxpc3Qgd2FzIG5vdCByZWFkeS4gSW5pdCBwcmV2ZW50ZWQuXCIpO1xuICAgICAgICAgICAgcmV0dXJuICExO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9maWxsQ29sdW1ucykge1xuICAgICAgICAgICAgY29uc3QgZmlsbGVyQ291bnQgPSAodGhpcy5fY29sdW1ucyAtICh0aGlzLml0ZW1zLmxlbmd0aCAlIHRoaXMuX2NvbHVtbnMpKSAlIHRoaXMuX2NvbHVtbnM7XG4gICAgICAgICAgICBlYWNoKG5ldyBBcnJheShmaWxsZXJDb3VudCksICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGA8c3BhbiBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIj48L3NwYW4+YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJ4bWF0LWdyaWQtZmlsbFwiXG4gICAgICAgICAgICAgICAgICAgIH0gYXMgWG1hdExlZ2VuZEl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZWFjaCh0aGlzLml0ZW1zLCAoaXRlbTogWG1hdExlZ2VuZEl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbS5jb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG1wQ29tcEluc3RhbmNlID0gdGhpcy5fY29uc3RydWN0Q29udGVudCgpO1xuICAgICAgICAgICAgICAgIC8vIHRoaXMuX3htYXRGdW5jdGlvbnMubG9nV2l0aFN0eWxlKFwiWG1hdExlZ2VuZFwiLCBcIldhcyBTdHJpbmcgQ29udGVudFwiLCBcIiMwMDY2OTlcIiwgaXRlbS5jb250ZW50KTtcbiAgICAgICAgICAgICAgICB0bXBDb21wSW5zdGFuY2UuY29udGVudCA9IGl0ZW0uY29udGVudDtcbiAgICAgICAgICAgICAgICBpdGVtLmNvbnRlbnQgPSB0bXBDb21wSW5zdGFuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpdGVtLmNvbnRlbnQgaW5zdGFuY2VvZiBYbWF0TGVnZW5kSXRlbUNvbnRlbnRDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAvLyBWYWxpZFxuICAgICAgICAgICAgICAgIC8vIHRoaXMuX3htYXRGdW5jdGlvbnMubG9nV2l0aFN0eWxlKFwiWG1hdExlZ2VuZFwiLCBcIldhcyBJbnN0YW5jZSBDb250ZW50XCIsIFwiIzMzNjY5OVwiLCBpdGVtLmNvbnRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5feG1hdEZ1bmN0aW9ucy5sb2dXaXRoU3R5bGUoXCJYbWF0TGVnZW5kXCIsIFwiV2FzIElOVkFMSUQgQ29udGVudFwiLCBcIiNDQzAwMDBcIiwgaXRlbS5jb250ZW50KTtcbiAgICAgICAgICAgICAgICAvLyBIaWRlIGJyb2tlbiBvbmVzP1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3VwZGF0ZUl0ZW1TdHlsZSgpOiBYbWF0TGVnZW5kSXRlbVN0eWxlIHtcbiAgICAgICAgdGhpcy5pdGVtU3R5bGUgPSB7XG4gICAgICAgICAgICBcImZsZXhcIjogYDEgMCAkezEwMCAvIHRoaXMuX2NvbHVtbnN9JWBcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbVN0eWxlO1xuICAgIH1cblxufVxuIl19