blob: e6254a700ee84bdfa0f8236e55489bd52135923e [file] [log] [blame]
{"version":3,"file":"covalent-core.umd.js.map","sources":["ng://@covalent/core/paging/paging-bar.component.ts","ng://@covalent/core/paging/paging.module.ts","node_modules/tslib/tslib.es6.js","ng://@covalent/core/virtual-scroll/virtual-scroll-row.directive.ts","ng://@covalent/core/virtual-scroll/virtual-scroll-container.component.ts","ng://@covalent/core/virtual-scroll/virtual-scroll.module.ts","ng://@covalent/core/notifications/notification-count.component.ts","ng://@covalent/core/notifications/notifications.module.ts","ng://@covalent/core/common/forms/auto-trim/auto-trim.directive.ts","ng://@covalent/core/common/directives/fullscreen/fullscreen.directive.ts","ng://@covalent/core/common/pipes/time-ago/time-ago.pipe.ts","ng://@covalent/core/common/pipes/time-difference/time-difference.pipe.ts","ng://@covalent/core/common/pipes/time-until/time-until.pipe.ts","ng://@covalent/core/common/pipes/bytes/bytes.pipe.ts","ng://@covalent/core/common/pipes/decimal-bytes/decimal-bytes.pipe.ts","ng://@covalent/core/common/pipes/digits/digits.pipe.ts","ng://@covalent/core/common/pipes/truncate/truncate.pipe.ts","ng://@covalent/core/common/services/router-path.service.ts","ng://@covalent/core/common/services/icon.service.ts","ng://@covalent/core/common/common.module.ts","ng://@covalent/core/common/animations/rotate/rotate.animation.ts","ng://@covalent/core/common/animations/collapse/collapse.animation.ts","ng://@covalent/core/common/animations/fade/fadeInOut.animation.ts","ng://@covalent/core/common/animations/bounce/bounce.animation.ts","ng://@covalent/core/common/animations/flash/flash.animation.ts","ng://@covalent/core/common/animations/headshake/headshake.animation.ts","ng://@covalent/core/common/animations/jello/jello.animation.ts","ng://@covalent/core/common/animations/pulse/pulse.animation.ts","ng://@covalent/core/common/behaviors/control-value-accesor.mixin.ts","ng://@covalent/core/common/behaviors/disabled.mixin.ts","ng://@covalent/core/common/behaviors/disable-ripple.mixin.ts","ng://@covalent/core/common/forms/validators/validators.ts","ng://@covalent/core/message/message.component.ts","ng://@covalent/core/message/message.module.ts","ng://@covalent/core/chips/chips.component.ts","ng://@covalent/core/chips/chips.module.ts","ng://@covalent/core/data-table/data-table-row/data-table-row.component.ts","ng://@covalent/core/data-table/directives/data-table-template.directive.ts","ng://@covalent/core/data-table/data-table.component.ts","ng://@covalent/core/data-table/data-table-column/data-table-column.component.ts","ng://@covalent/core/data-table/data-table-cell/data-table-cell.component.ts","ng://@covalent/core/data-table/data-table-table/data-table-table.component.ts","ng://@covalent/core/data-table/services/data-table.service.ts","ng://@covalent/core/data-table/data-table.module.ts","ng://@covalent/core/dialogs/dialog.component.ts","ng://@covalent/core/dialogs/alert-dialog/alert-dialog.component.ts","ng://@covalent/core/dialogs/confirm-dialog/confirm-dialog.component.ts","ng://@covalent/core/dialogs/prompt-dialog/prompt-dialog.component.ts","ng://@covalent/core/dialogs/services/dialog.service.ts","ng://@covalent/core/dialogs/dialogs.module.ts","ng://@covalent/core/expansion-panel/expansion-panel.component.ts","ng://@covalent/core/expansion-panel/expansion-panel-group.component.ts","ng://@covalent/core/expansion-panel/expansion-panel.module.ts","ng://@covalent/core/file/directives/file-select.directive.ts","ng://@covalent/core/file/directives/file-drop.directive.ts","ng://@covalent/core/file/file-input/file-input.component.ts","ng://@covalent/core/file/file-upload/file-upload.component.ts","ng://@covalent/core/file/services/file.service.ts","ng://@covalent/core/file/file.module.ts","ng://@covalent/core/json-formatter/json-formatter.component.ts","ng://@covalent/core/json-formatter/json-formatter.module.ts","ng://@covalent/core/layout/layout.component.ts","ng://@covalent/core/layout/layout-toggle.class.ts","ng://@covalent/core/layout/layout.directives.ts","ng://@covalent/core/layout/layout-nav/layout-nav.component.ts","ng://@covalent/core/layout/layout-nav-list/layout-nav-list.component.ts","ng://@covalent/core/layout/layout-nav-list/layout-nav-list.directives.ts","ng://@covalent/core/layout/layout-card-over/layout-card-over.component.ts","ng://@covalent/core/layout/layout-manage-list/layout-manage-list.component.ts","ng://@covalent/core/layout/layout-manage-list/layout-manage-list.directives.ts","ng://@covalent/core/layout/layout-footer/layout-footer.component.ts","ng://@covalent/core/layout/navigation-drawer/navigation-drawer.component.ts","ng://@covalent/core/layout/layout.module.ts","ng://@covalent/core/loading/loading.component.ts","ng://@covalent/core/loading/services/loading.factory.ts","ng://@covalent/core/loading/services/loading.service.ts","ng://@covalent/core/loading/directives/loading.directive.ts","ng://@covalent/core/loading/loading.module.ts","ng://@covalent/core/media/services/media.service.ts","ng://@covalent/core/media/directives/media-toggle.directive.ts","ng://@covalent/core/media/media.module.ts","ng://@covalent/core/menu/menu.component.ts","ng://@covalent/core/menu/menu.module.ts","ng://@covalent/core/search/search-input/search-input.component.ts","ng://@covalent/core/search/search-box/search-box.component.ts","ng://@covalent/core/search/search.module.ts","ng://@covalent/core/breadcrumbs/breadcrumb/breadcrumb.component.ts","ng://@covalent/core/breadcrumbs/breadcrumbs.component.ts","ng://@covalent/core/breadcrumbs/breadcrumbs.module.ts","ng://@covalent/core/steps/step.component.ts","ng://@covalent/core/steps/steps.component.ts","ng://@covalent/core/steps/step-header/step-header.component.ts","ng://@covalent/core/steps/step-body/step-body.component.ts","ng://@covalent/core/steps/nav/nav-step-link/nav-step-link.component.ts","ng://@covalent/core/steps/nav/nav-steps-horizontal/nav-steps-horizontal.component.ts","ng://@covalent/core/steps/nav/nav-steps-vertical/nav-steps-vertical.component.ts","ng://@covalent/core/steps/steps.module.ts","ng://@covalent/core/tab-select/tab-option.component.ts","ng://@covalent/core/tab-select/tab-select.component.ts","ng://@covalent/core/tab-select/tab-select.module.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, Optional, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Dir } from '@angular/cdk/bidi';\n\nexport interface IPageChangeEvent {\n page: number;\n maxPage: number;\n pageSize: number;\n total: number;\n fromRow: number;\n toRow: number;\n}\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'td-paging-bar',\n templateUrl: './paging-bar.component.html',\n styleUrls: ['./paging-bar.component.scss' ],\n})\nexport class TdPagingBarComponent implements OnInit {\n\n private _pageSize: number = 50;\n private _total: number = 0;\n private _page: number = 1;\n private _fromRow: number = 1;\n private _toRow: number = 1;\n private _initialized: boolean = false;\n private _pageLinks: number[] = [];\n private _pageLinkCount: number = 0;\n // special case when 2 pageLinks, detect when hit end of pages so can lead in correct direction\n private _hitEnd: boolean = false;\n // special case when 2 pageLinks, detect when hit start of pages so can lead in correct direction\n private _hitStart: boolean = false;\n\n /**\n * firstLast?: boolean\n * Shows or hides the first and last page buttons of the paging bar. Defaults to 'false'\n */\n @Input('firstLast') firstLast: boolean = true;\n\n /**\n * initialPage?: number\n * Sets starting page for the paging bar. Defaults to '1'\n */\n @Input('initialPage') initialPage: number = 1;\n\n /**\n * pageLinkCount?: number\n * Amount of page navigation links for the paging bar. Defaults to '0'\n */\n @Input('pageLinkCount')\n set pageLinkCount(pageLinkCount: number) {\n this._pageLinkCount = coerceNumberProperty(pageLinkCount);\n this._calculatePageLinks();\n this._changeDetectorRef.markForCheck();\n }\n get pageLinkCount(): number {\n return this._pageLinkCount;\n }\n\n /**\n * pageSize?: number\n * Selected page size for the pagination. Defaults 50.\n */\n @Input('pageSize')\n set pageSize(pageSize: number) {\n this._pageSize = coerceNumberProperty(pageSize);\n this._page = 1;\n if (this._initialized) {\n this._handleOnChange();\n }\n this._changeDetectorRef.markForCheck();\n }\n get pageSize(): number {\n return this._pageSize;\n }\n\n /**\n * total: number\n * Total rows for the pagination.\n */\n @Input('total')\n set total(total: number) {\n this._total = coerceNumberProperty(total);\n this._calculateRows();\n this._calculatePageLinks();\n this._changeDetectorRef.markForCheck();\n }\n get total(): number {\n return this._total;\n }\n\n /**\n * pageLinks: number[]\n * Returns the pageLinks in an array\n */\n get pageLinks(): number[] {\n return this._pageLinks;\n }\n\n /**\n * range: string\n * Returns the range of the rows.\n */\n get range(): string {\n return `${!this._toRow ? 0 : this._fromRow}-${this._toRow}`;\n }\n\n /**\n * page: number\n * Returns the current page.\n */\n get page(): number {\n return this._page;\n }\n\n /**\n * page: number\n * Returns the max page for the current pageSize and total.\n */\n get maxPage(): number {\n return Math.ceil(this._total / this._pageSize);\n }\n\n /**\n * change?: function\n * Method to be executed when page size changes or any button is clicked in the paging bar.\n * Emits an [IPageChangeEvent] implemented object.\n */\n @Output('change') onChange: EventEmitter<IPageChangeEvent> = new EventEmitter<IPageChangeEvent>();\n\n get isRTL(): boolean {\n if (this._dir) {\n return this._dir.dir === 'rtl';\n }\n return false;\n }\n\n constructor(@Optional() private _dir: Dir,\n private _changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this._page = coerceNumberProperty(this.initialPage);\n this._calculateRows();\n this._calculatePageLinks();\n this._initialized = true;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * navigateToPage?: function\n * Navigates to a specific valid page. Returns 'true' if page is valid, else 'false'.\n */\n navigateToPage(page: number): boolean {\n if (page === 1 || (page >= 1 && page <= this.maxPage)) {\n this._page = coerceNumberProperty(Math.floor(page));\n this._handleOnChange();\n return true;\n }\n return false;\n }\n\n /**\n * firstPage?: function\n * Navigates to the first page. Returns 'true' if page is valid, else 'false'.\n */\n firstPage(): boolean {\n return this.navigateToPage(1);\n }\n\n /**\n * prevPage?: function\n * Navigates to the previous page. Returns 'true' if page is valid, else 'false'.\n */\n prevPage(): boolean {\n return this.navigateToPage(this._page - 1);\n }\n\n /**\n * nextPage?: function\n * Navigates to the next page. Returns 'true' if page is valid, else 'false'.\n */\n nextPage(): boolean {\n return this.navigateToPage(this._page + 1);\n }\n\n /**\n * lastPage?: function\n * Navigates to the last page. Returns 'true' if page is valid, else 'false'.\n */\n lastPage(): boolean {\n return this.navigateToPage(this.maxPage);\n }\n\n isMinPage(): boolean {\n return this._page <= 1;\n }\n\n isMaxPage(): boolean {\n return this._page >= this.maxPage;\n }\n\n private _calculateRows(): void {\n let top: number = (this._pageSize * this._page);\n this._fromRow = (this._pageSize * (this._page - 1)) + 1;\n this._toRow = this._total > top ? top : this._total;\n }\n\n /**\n * _calculatePageLinks?: function\n * Calculates the page links that should be shown to the user based on the current state of the paginator\n */\n private _calculatePageLinks(): void {\n // special case when 2 pageLinks, detect when hit end of pages so can lead in correct direction\n if (this.isMaxPage()) {\n this._hitEnd = true;\n this._hitStart = false;\n }\n // special case when 2 pageLinks, detect when hit start of pages so can lead in correct direction\n if (this.isMinPage()) {\n this._hitEnd = false;\n this._hitStart = true;\n }\n // If the pageLinkCount goes above max possible pages based on perpage setting then reset it to maxPage\n let actualPageLinkCount: number = this.pageLinkCount;\n if (this.pageLinkCount > this.maxPage) {\n actualPageLinkCount = this.maxPage;\n }\n // reset the pageLinks array\n this._pageLinks = [];\n // fill in the array with the pageLinks based on the current selected page\n let middlePageLinks: number = Math.floor(actualPageLinkCount / 2);\n for (let x: number = 0; x < actualPageLinkCount; x++) {\n // don't go past the maxPage in the pageLinks\n // have to handle even and odd pageLinkCounts differently so can still lead to the next numbers\n if ((actualPageLinkCount % 2 === 0 && (this.page + middlePageLinks > this.maxPage)) ||\n (actualPageLinkCount % 2 !== 0 && (this.page + middlePageLinks >= this.maxPage))) {\n this._pageLinks[x] = this.maxPage - (actualPageLinkCount - (x + 1));\n // if the selected page is after the middle then set that page as middle and get the correct balance on left and right\n // special handling when there are only 2 pageLinks to just drop to next if block so can lead to next numbers when moving to right\n // when moving to the left then go into this block\n } else if ((actualPageLinkCount > 2 || actualPageLinkCount <= 2 && this._hitEnd) && (this.page - middlePageLinks) > 0) {\n this._pageLinks[x] = (this.page - middlePageLinks) + x;\n // if the selected page is before the middle then set the pages based on the x index leading up to and after selected page\n } else if ((this.page - middlePageLinks) <= 0) {\n this._pageLinks[x] = x + 1;\n // other wise just set the array in order starting from the selected page\n } else {\n this._pageLinks[x] = this.page + x;\n }\n }\n }\n\n private _handleOnChange(): void {\n this._calculateRows();\n this._calculatePageLinks();\n let event: IPageChangeEvent = {\n page: this._page,\n maxPage: this.maxPage,\n pageSize: this._pageSize,\n total: this._total,\n fromRow: this._fromRow,\n toRow: this._toRow,\n };\n this._changeDetectorRef.markForCheck();\n this.onChange.emit(event);\n }\n\n}\n","import { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TdPagingBarComponent } from './paging-bar.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n ],\n declarations: [\n TdPagingBarComponent,\n ],\n exports: [\n TdPagingBarComponent,\n ],\n})\nexport class CovalentPagingModule {\n\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Directive, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\n\n@Directive({selector: '[tdVirtualScrollRow]'})\nexport class TdVirtualScrollRowDirective extends TemplatePortalDirective {\n\n constructor(templateRef: TemplateRef<any>,\n viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n \n}\n","import { Component, Directive, Input, Output, EventEmitter, ContentChild, AfterViewInit, ViewChild,\n ChangeDetectionStrategy, ChangeDetectorRef, QueryList, ViewChildren, ElementRef, HostListener,\n Renderer2, AfterViewChecked, OnDestroy, TrackByFunction } from '@angular/core';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\n\nimport { Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { TdVirtualScrollRowDirective } from './virtual-scroll-row.directive';\n\nconst TD_VIRTUAL_OFFSET: number = 2;\nconst SCROLL_DEBOUNCE: number = 200;\n\nexport interface ITdVirtualScrollBottomEvent {\n lastRow: any;\n lastIndex: number;\n}\n\n@Component({\n selector: 'td-virtual-scroll-container',\n styleUrls: ['./virtual-scroll-container.component.scss' ],\n templateUrl: './virtual-scroll-container.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdVirtualScrollContainerComponent implements AfterViewInit, AfterViewChecked, OnDestroy {\n\n private _subs: Subscription[] = [];\n private _bottom: Subject<any> = new Subject();\n private _initialized: boolean = false;\n\n private _totalHeight: number = 0;\n private _hostHeight: number = 0;\n private _scrollVerticalOffset: number = 0;\n private _offsetTransform: SafeStyle;\n\n private _fromRow: number = 0;\n private _toRow: number = 0;\n\n private _data: any[];\n private _virtualData: any[];\n\n /**\n * data: any[]\n * List of items to virtually iterate on.\n */\n @Input('data')\n set data(data: any[]) {\n this._data = data;\n if (this._initialized) {\n this._calculateVirtualRows();\n }\n this._changeDetectorRef.markForCheck();\n }\n get data(): any[] {\n return this._data;\n }\n\n get virtualData(): any[] {\n return this._virtualData;\n }\n\n /**\n * bottom: function\n * Method to be executed when user scrolled to the last item of the list.\n * An [ITdVirtualScrollBottomEvent] event is emitted\n */\n @Output() bottom: EventEmitter<ITdVirtualScrollBottomEvent> = new EventEmitter<ITdVirtualScrollBottomEvent>();\n\n @ViewChildren('rowElement') _rows: QueryList<ElementRef>;\n\n @ContentChild(TdVirtualScrollRowDirective) _rowTemplate: TdVirtualScrollRowDirective;\n\n get rowHeight(): number {\n if (this._rows && this._rows.toArray()[0]) {\n return this._rows.toArray()[0].nativeElement.getBoundingClientRect().height;\n }\n return 0;\n }\n\n get totalHeight(): number {\n return this._totalHeight;\n }\n\n get fromRow(): number {\n return this._fromRow;\n }\n\n get toRow(): number {\n return this._toRow;\n }\n\n get offsetTransform(): SafeStyle {\n return this._offsetTransform;\n }\n\n constructor(private _elementRef: ElementRef,\n private _domSanitizer: DomSanitizer,\n private _renderer: Renderer2,\n private _changeDetectorRef: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n this._subs.push(this._rows.changes.subscribe(() => {\n this._calculateVirtualRows();\n }));\n this._initialized = true;\n this._calculateVirtualRows();\n\n this._subs.push(this._bottom.pipe(\n debounceTime(SCROLL_DEBOUNCE),\n ).subscribe(() => {\n this.bottom.emit({\n lastRow: this._data[this._data.length - 1],\n lastIndex: this.toRow,\n });\n }));\n }\n\n ngAfterViewChecked(): void {\n let newHostHeight: number = this._elementRef.nativeElement.getBoundingClientRect().height;\n if (this._hostHeight !== newHostHeight) {\n this._hostHeight = newHostHeight;\n if (this._initialized) {\n this._calculateVirtualRows();\n }\n }\n }\n\n ngOnDestroy(): void {\n if (this._subs) {\n this._subs.forEach((sub: Subscription) => {\n sub.unsubscribe();\n });\n }\n }\n\n /**\n * trackBy?: TrackByFunction\n * This accepts the same trackBy function [ngFor] does.\n * https://angular.io/api/core/TrackByFunction\n */\n @Input('trackBy') trackBy: TrackByFunction<any> = (index: number, item: any) => {\n return item;\n }\n\n @HostListener('scroll', ['$event'])\n handleScroll(event: Event): void {\n let element: HTMLElement = (<HTMLElement>event.target);\n if (element) {\n let verticalScroll: number = element.scrollTop;\n if (this._scrollVerticalOffset !== verticalScroll) {\n this._scrollVerticalOffset = verticalScroll;\n if (this._initialized) {\n this._calculateVirtualRows();\n }\n }\n if (this._initialized) {\n // check to see if bottom was hit to throw the bottom event\n if ((this._data.length * this.rowHeight) - (verticalScroll + this._hostHeight) === 0) {\n this._bottom.next();\n }\n }\n }\n }\n\n /**\n * Method to refresh and recalculate the virtual rows\n * e.g. after changing the [data] content\n */\n refresh(): void {\n this._calculateVirtualRows();\n }\n\n /**\n * Method to scroll to a specific row of the list.\n */\n scrollTo(row: number): void {\n this._elementRef.nativeElement.scrollTop = row * this.rowHeight;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Method to scroll to the start of the list.\n */\n scrollToStart(): void {\n this.scrollTo(0);\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Method to scroll to the end of the list.\n */\n scrollToEnd(): void {\n this.scrollTo(this.totalHeight / this.rowHeight);\n this._changeDetectorRef.markForCheck();\n }\n\n private _calculateVirtualRows(): void {\n if (this._data) {\n this._totalHeight = this._data.length * this.rowHeight;\n let fromRow: number = Math.floor((this._scrollVerticalOffset / this.rowHeight)) - TD_VIRTUAL_OFFSET;\n this._fromRow = fromRow > 0 ? fromRow : 0;\n let range: number = Math.floor((this._hostHeight / this.rowHeight)) + (TD_VIRTUAL_OFFSET * 2);\n let toRow: number = range + this.fromRow;\n if (isFinite(toRow) && toRow > this._data.length) {\n toRow = this._data.length;\n } else if (!isFinite(toRow)) {\n toRow = TD_VIRTUAL_OFFSET;\n }\n this._toRow = toRow;\n } else {\n this._totalHeight = 0;\n this._fromRow = 0;\n this._toRow = 0;\n }\n\n let offset: number = 0;\n if (this._scrollVerticalOffset > (TD_VIRTUAL_OFFSET * this.rowHeight)) {\n offset = this.fromRow * this.rowHeight;\n }\n\n this._offsetTransform = this._domSanitizer.bypassSecurityTrustStyle('translateY(' + (offset - this.totalHeight) + 'px)');\n if (this._data) {\n this._virtualData = this.data.slice(this.fromRow, this.toRow);\n }\n\n // mark for check at the end of the queue so we are sure\n // that the changes will be marked\n Promise.resolve().then(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TdVirtualScrollRowDirective } from './virtual-scroll-row.directive';\nimport { TdVirtualScrollContainerComponent } from './virtual-scroll-container.component';\n\nconst TD_VIRTUAL_SCROLL: Type<any>[] = [\n TdVirtualScrollRowDirective,\n TdVirtualScrollContainerComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n ],\n declarations: [\n TD_VIRTUAL_SCROLL,\n ],\n exports: [\n TD_VIRTUAL_SCROLL,\n ],\n})\nexport class CovalentVirtualScrollModule {\n\n}\n","import { Component, Input, HostBinding, ChangeDetectionStrategy,\n ViewChild, ElementRef, AfterContentInit } from '@angular/core';\n\nexport enum TdNotificationCountPositionY {\n Top = 'top',\n Bottom = 'bottom',\n Center = 'center',\n}\n\nexport enum TdNotificationCountPositionX {\n Before = 'before',\n After = 'after',\n Center = 'center',\n}\n\nexport const DEFAULT_NOTIFICATION_LIMIT: number = 99;\n\n@Component({\n selector: 'td-notification-count',\n styleUrls: ['./notification-count.component.scss' ],\n templateUrl: './notification-count.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdNotificationCountComponent implements AfterContentInit {\n\n private _notifications: number | boolean = 0;\n private _positionY: TdNotificationCountPositionY;\n private _positionX: TdNotificationCountPositionX;\n private _limit: number = DEFAULT_NOTIFICATION_LIMIT;\n\n /**\n * Div content wrapper of `ng-content`.\n */\n @ViewChild('content') content: ElementRef;\n\n /**\n * color?: \"primary\" | \"accent\" | \"warn\"\n * Sets the theme color of the notification tip. Defaults to \"warn\"\n */\n @Input() color: 'primary' | 'accent' | 'warn' = 'warn';\n\n /**\n * positionX?: TdNotificationCountPositionX or \"before\" | \"after\" | \"center\"\n * Sets the X position of the notification tip.\n * Defaults to \"after\" if it has content, else 'center'.\n */\n @Input()\n set positionX(positionX: TdNotificationCountPositionX) {\n this._positionX = positionX;\n }\n get positionX(): TdNotificationCountPositionX {\n return this._positionX;\n }\n\n /**\n * positionY?: TdNotificationCountPositionY or \"top\" | \"bottom\" | \"center\"\n * Sets the Y position of the notification tip.\n * Defaults to \"top\" if it has content, else 'center'.\n */\n @Input()\n set positionY(positionY: TdNotificationCountPositionY) {\n this._positionY = positionY;\n }\n get positionY(): TdNotificationCountPositionY {\n return this._positionY;\n }\n\n /**\n * notifications?: number | boolean\n * Number for the notification count. Shows component only if the input is a positive number or 'true'\n */\n @Input()\n set notifications(notifications: number | boolean) {\n this._notifications = notifications;\n }\n\n /**\n * limit?: number\n * Limit for notification count. If the number of notifications is greater than limit, then + will be added. Defaults to 99.\n */\n @Input()\n set limit(limit: number) {\n this._limit = limit;\n }\n\n @HostBinding('class.td-notification-hidden')\n get hideHost(): boolean {\n return !this.show && !this._hasContent();\n }\n\n /**\n * Sets the component in its 'noCount' state if [notifications] is a boolean 'true'.\n * Makes the notification tip show without a count.\n */\n get noCount(): string | boolean {\n return this._notifications === true;\n }\n\n /**\n * Notification display string when a count is available.\n * Anything over 99 gets set as 99+\n */\n get notificationsDisplay(): string {\n if (this._notifications > this._limit) {\n return `${this._limit}+`;\n }\n return this._notifications.toString();\n }\n\n /**\n * Shows notification tip only when [notifications] is true or a positive integer.\n */\n get show(): boolean {\n return this._notifications === true || (!isNaN(<any>this._notifications) && this._notifications > 0);\n }\n\n /**\n * Check if [positionX] and [positionY] have been set as inputs, else use defaults depending on component content.\n */\n ngAfterContentInit(): void {\n if (!this._positionX) {\n this.positionX = this._hasContent() ? TdNotificationCountPositionX.After : TdNotificationCountPositionX.Center;\n }\n if (!this._positionY) {\n this.positionY = this._hasContent() ? TdNotificationCountPositionY.Top : TdNotificationCountPositionY.Center;\n }\n }\n\n /**\n * Method to check if element has any kind of content (elements or text)\n */\n private _hasContent(): boolean {\n if (this.content) {\n let contentElement: HTMLElement = this.content.nativeElement;\n return contentElement && (contentElement.children.length > 0 || !!contentElement.textContent.trim());\n }\n return false;\n }\n\n}\n","import { Type } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\n\nimport { TdNotificationCountComponent } from './notification-count.component';\n\nconst TD_NOTIFICATIONS: Type<any>[] = [\n TdNotificationCountComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n ],\n declarations: [\n TD_NOTIFICATIONS,\n ],\n exports: [\n TD_NOTIFICATIONS,\n ],\n})\nexport class CovalentNotificationsModule {\n\n}\n","import { Directive } from '@angular/core';\nimport { HostListener, Host, Optional } from '@angular/core';\nimport { NgModel } from '@angular/forms';\n\n@Directive({\n selector: '[tdAutoTrim]',\n})\nexport class TdAutoTrimDirective {\n\n constructor(@Optional() @Host() private _model: NgModel) {}\n\n /**\n * Listens to host's (blur) event and trims value.\n */\n @HostListener('blur', ['$event'])\n onBlur(event: Event): void {\n if (this._model && this._model.value && typeof(this._model.value) === 'string') {\n this._model.update.emit(this._model.value.trim());\n }\n }\n}\n","import { Directive, HostListener, ElementRef, Inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\ninterface IFsDocument extends HTMLDocument {\n fullscreenElement: Element;\n webkitFullscreenElement: Element;\n mozFullscreenElement: Element;\n msFullscreenElement: Element;\n webkitExitFullscreen: () => void;\n mozCancelFullScreen: () => void;\n msExitFullscreen: () => void;\n}\n\n@Directive({\n selector: '[tdFullScreen]',\n exportAs: 'tdFullScreen',\n})\nexport class TdFullscreenDirective {\n fullScreenIsActive: boolean = false;\n constructor(@Inject(DOCUMENT) private _document: IFsDocument, private _el: ElementRef) {}\n\n @HostListener('document:fullscreenchange', ['$event'])\n @HostListener('document:webkitfullscreenchange', ['$event'])\n @HostListener('document:mozfullscreenchange', ['$event'])\n @HostListener('document:msfullscreenchange', ['$event'])\n public fsChangeHandler(event: Event): void {\n this.fullScreenIsActive = event.srcElement === this._getFullScreenElement();\n }\n\n public toggleFullScreen(): void {\n this._getFullScreenElement() === this._el.nativeElement ? this.exitFullScreen() : this.enterFullScreen();\n }\n\n public enterFullScreen(): void {\n const { _el: { nativeElement } }: TdFullscreenDirective = this;\n const enterFullScreenMap: object = {\n requestFullscreen: () => nativeElement.requestFullscreen(), // Chrome\n webkitRequestFullscreen: () => nativeElement.webkitRequestFullscreen(), // Safari \n mozRequestFullScreen: () => nativeElement.mozRequestFullScreen(), // Firefox\n msRequestFullscreen: () => nativeElement.msRequestFullscreen(), // IE\n };\n\n for (const handler of Object.keys(enterFullScreenMap)) {\n if (nativeElement[handler]) {\n enterFullScreenMap[handler]();\n }\n }\n }\n\n public exitFullScreen(): void {\n const { _document, _el: { nativeElement } }: TdFullscreenDirective = this;\n const exitFullScreenMap: object = {\n exitFullscreen: () => _document.exitFullscreen(), // Chrome\n webkitExitFullscreen: () => _document.webkitExitFullscreen(), // Safari\n mozCancelFullScreen: () => _document.mozCancelFullScreen(), // Firefox\n msExitFullscreen: () => _document.msExitFullscreen(), // IE\n };\n\n for (const handler of Object.keys(exitFullScreenMap)) {\n if (_document[handler] && this._getFullScreenElement() === nativeElement) {\n exitFullScreenMap[handler]();\n }\n }\n }\n\n private _getFullScreenElement(): Element {\n const { _document }: TdFullscreenDirective = this;\n const tdFullScreenElementMap: object = {\n fullscreenElement: () => _document.fullscreenElement, // Chrome, Opera\n webkitFullscreenElement: () => _document.webkitFullscreenElement, // Safari\n mozFullscreenElement: () => _document.mozFullscreenElement, // Firefox\n msFullscreenElement: () => _document.msFullscreenElement, // IE, Edge\n };\n for (const props of Object.keys(tdFullScreenElementMap)) {\n if (_document[props]) {\n return _document[props];\n }\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'timeAgo',\n})\nexport class TdTimeAgoPipe implements PipeTransform {\n transform(time: any, reference?: any): string {\n // Convert time to date object if not already\n time = new Date(time);\n let ref: Date = new Date(reference);\n\n // If not a valid timestamp, return 'Invalid Date'\n if (!time.getTime()) {\n return 'Invalid Date';\n }\n\n // For unit testing, we need to be able to declare a static start time\n // for calculations, or else speed of tests can bork.\n let startTime: number = isNaN(ref.getTime()) ? Date.now() : ref.getTime();\n let diff: number = Math.floor((startTime - time.getTime()) / 1000);\n\n if (diff < 2) {\n return '1 second ago';\n }\n if (diff < 60) {\n return Math.floor(diff) + ' seconds ago';\n }\n // Minutes\n diff = diff / 60;\n if (diff < 2) {\n return '1 minute ago';\n }\n if (diff < 60) {\n return Math.floor(diff) + ' minutes ago';\n }\n // Hours\n diff = diff / 60;\n if (diff < 2) {\n return '1 hour ago';\n }\n if (diff < 24) {\n return Math.floor(diff) + ' hours ago';\n }\n // Days\n diff = diff / 24;\n if (diff < 2) {\n return '1 day ago';\n }\n if (diff < 30) {\n return Math.floor(diff) + ' days ago';\n }\n // Months\n diff = diff / 30;\n if (diff < 2) {\n return '1 month ago';\n }\n if (diff < 12) {\n return Math.floor(diff) + ' months ago';\n }\n // Years\n diff = diff / 12;\n if (diff < 2) {\n return '1 year ago';\n } else {\n return Math.floor(diff) + ' years ago';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'timeDifference',\n})\n\nexport class TdTimeDifferencePipe implements PipeTransform {\n transform(start: any, end?: any): string {\n let startTime: Date = new Date(start);\n let endTime: Date;\n\n if (end !== undefined) {\n endTime = new Date(end);\n } else {\n endTime = new Date();\n }\n\n if (!startTime.getTime() || !endTime.getTime()) {\n return 'Invalid Date';\n }\n\n let diff: number = Math.floor((endTime.getTime() - startTime.getTime()) / 1000);\n\n let days: number = Math.floor(diff / (60 * 60 * 24));\n diff = diff - (days * (60 * 60 * 24));\n\n let hours: number = Math.floor(diff / (60 * 60));\n diff = diff - (hours * (60 * 60));\n\n let minutes: number = Math.floor(diff / (60));\n diff -= minutes * (60);\n\n let seconds: number = diff;\n\n let pad: string = '00';\n\n let daysFormatted: string = '';\n\n if (days > 0 && days < 2) {\n daysFormatted = ' day - ';\n } else if (days > 1) {\n daysFormatted = ' days - ' ;\n }\n\n return (days > 0 ? days + daysFormatted : daysFormatted) +\n pad.substring(0, pad.length - (hours + '').length) + hours + ':' +\n pad.substring(0, pad.length - (minutes + '').length) + minutes + ':' +\n pad.substring(0, pad.length - (seconds + '').length) + seconds;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'timeUntil',\n})\nexport class TdTimeUntilPipe implements PipeTransform {\n transform(time: any, reference?: any): string {\n // Convert time to date object if not already\n time = new Date(time);\n let ref: Date = new Date(reference);\n\n // If not a valid timestamp, return 'Invalid Date'\n if (!time.getTime()) {\n return 'Invalid Date';\n }\n\n // For unit testing, we need to be able to declare a static start time\n // for calculations, or else speed of tests can bork.\n let startTime: number = isNaN(ref.getTime()) ? Date.now() : ref.getTime();\n let diff: number = Math.floor((time.getTime() - startTime) / 1000);\n\n if (diff < 2) {\n return 'in 1 second';\n }\n if (diff < 60) {\n return 'in ' + Math.floor(diff) + ' seconds';\n }\n // Minutes\n diff = diff / 60;\n if (diff < 2) {\n return 'in 1 minute';\n }\n if (diff < 60) {\n return 'in ' + Math.floor(diff) + ' minutes';\n }\n // Hours\n diff = diff / 60;\n if (diff < 2) {\n return 'in 1 hour';\n }\n if (diff < 24) {\n return 'in ' + Math.floor(diff) + ' hours';\n }\n // Days\n diff = diff / 24;\n if (diff < 2) {\n return 'in 1 day';\n }\n if (diff < 30) {\n return 'in ' + Math.floor(diff) + ' days';\n }\n // Months\n diff = diff / 30;\n if (diff < 2) {\n return 'in 1 month';\n }\n if (diff < 12) {\n return 'in ' + Math.floor(diff) + ' months';\n }\n // Years\n diff = diff / 12;\n if (diff < 2) {\n return 'in 1 year';\n } else {\n return 'in ' + Math.floor(diff) + ' years';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'bytes',\n})\n\nexport class TdBytesPipe implements PipeTransform {\n /* `bytes` needs to be `any` or TypeScript complains\n Tried both `number` and `number | string` */\n transform(bytes: any, precision: number = 2): string {\n if (bytes === 0) {\n return '0 B';\n } else if (isNaN(parseInt(bytes, 10))) {\n /* If not a valid number, return 'Invalid Number' */\n return 'Invalid Number';\n }\n let k: number = 1024;\n let sizes: string[] = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];\n let i: number = Math.floor(Math.log(bytes) / Math.log(k));\n // if less than 1\n if (i < 0) {\n return 'Invalid Number';\n }\n return parseFloat((bytes / Math.pow(k, i)).toFixed(precision)) + ' ' + sizes[i];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'decimalBytes',\n})\n\nexport class TdDecimalBytesPipe implements PipeTransform {\n /* `bytes` needs to be `any` or TypeScript complains\n Tried both `number` and `number | string` */\n transform(bytes: any, precision: number = 2): string {\n if (bytes === 0) {\n return '0 B';\n } else if (isNaN(parseInt(bytes, 10))) {\n /* If not a valid number, return 'Invalid Number' */\n return 'Invalid Number';\n }\n let k: number = 1000;\n let sizes: string[] = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n let i: number = Math.floor(Math.log(bytes) / Math.log(k));\n // if less than 1\n if (i < 0) {\n return 'Invalid Number';\n }\n return parseFloat((bytes / Math.pow(k, i)).toFixed(precision)) + ' ' + sizes[i];\n }\n}\n","import { Pipe, PipeTransform, Inject, LOCALE_ID } from '@angular/core';\nimport { DecimalPipe } from '@angular/common';\n\n@Pipe({\n name: 'digits',\n})\n\nexport class TdDigitsPipe implements PipeTransform {\n\n private _decimalPipe: DecimalPipe;\n\n constructor(@Inject(LOCALE_ID) private _locale: string = 'en') {\n this._decimalPipe = new DecimalPipe(this._locale);\n }\n\n /* `digits` needs to be type `digits: any` or TypeScript complains */\n transform(digits: any, precision: number = 1): string {\n if (digits === 0) {\n return '0';\n } else if (isNaN(parseInt(digits, 10))) {\n /* If not a valid number, return the value */\n return digits;\n } else if (digits < 1) {\n return this._decimalPipe.transform(digits.toFixed(precision));\n }\n let k: number = 1000;\n let sizes: string[] = ['', 'K', 'M', 'B', 'T', 'Q'];\n let i: number = Math.floor(Math.log(digits) / Math.log(k));\n let size: string = sizes[i];\n return this._decimalPipe.transform(parseFloat((digits / Math.pow(k, i)).toFixed(precision))) + (size ? ' ' + size : '');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate',\n})\n\nexport class TdTruncatePipe implements PipeTransform {\n transform(text: any, length: number): string {\n if (typeof text !== 'string') {\n return '';\n }\n\n // Truncate\n let truncated: string = text.substr(0, length);\n\n if (text.length > length) {\n if (truncated.lastIndexOf(' ') > 0) {\n truncated = truncated.trim();\n }\n\n truncated += '…';\n }\n\n return truncated;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router, RoutesRecognized } from '@angular/router';\n\nimport { filter, pairwise } from 'rxjs/operators';\n\n@Injectable()\nexport class RouterPathService {\nprivate static _previousRoute: string = '/';\n constructor(private _router: Router) {\n this._router.events.pipe(\n filter((e: any) => e instanceof RoutesRecognized),\n pairwise(),\n ).subscribe((e: any[]) => {\n RouterPathService._previousRoute = e[0].urlAfterRedirects;\n });\n }\n\n /*\n * Utility function to get the route the user previously went to\n * good for use in a \"back button\"\n */\n getPreviousRoute(): string {\n return RouterPathService._previousRoute;\n }\n}\n","/*\n * Copyright (C) 2016-2017 by Teradata Corporation. All rights reserved.\n * TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class IconService {\n\n private _icons: string[] = [\n 'access_alarm',\n 'access_alarms',\n 'access_time',\n 'accessibility',\n 'account_balance',\n 'account_balance_wallet',\n 'account_box',\n 'account_circle',\n 'add',\n 'add_alarm',\n 'add_box',\n 'add_circle',\n 'add_circle_outline',\n 'add_shopping_cart',\n 'add_to_photos',\n 'adjust',\n 'alarm',\n 'alarm_add',\n 'alarm_off',\n 'alarm_on',\n 'album',\n 'android',\n 'announcement',\n 'apps',\n 'archive',\n 'arrow_back',\n 'arrow_drop_down',\n 'arrow_drop_down_circle',\n 'arrow_drop_up',\n 'arrow_forward',\n 'aspect_ratio',\n 'assessment',\n 'assignment',\n 'assignment_ind',\n 'assignment_late',\n 'assignment_return',\n 'assignment_returned',\n 'assignment_turned_in',\n 'assistant_photo',\n 'attach_file',\n 'attach_money',\n 'attachment',\n 'audiotrack',\n 'autorenew',\n 'av_timer',\n 'backspace',\n 'backup',\n 'battery_alert',\n 'battery_charging_full',\n 'battery_full',\n 'battery_std',\n 'battery_unknown',\n 'beenhere',\n 'block',\n 'bluetooth',\n 'bluetooth_audio',\n 'bluetooth_connected',\n 'bluetooth_disabled',\n 'bluetooth_searching',\n 'blur_circular',\n 'blur_linear',\n 'blur_off',\n 'blur_on',\n 'book',\n 'bookmark',\n 'bookmark_border',\n 'border_all',\n 'border_bottom',\n 'border_clear',\n 'border_color',\n 'border_horizontal',\n 'border_inner',\n 'border_left',\n 'border_outer',\n 'border_right',\n 'border_style',\n 'border_top',\n 'border_vertical',\n 'brightness_1',\n 'brightness_2',\n 'brightness_3',\n 'brightness_4',\n 'brightness_5',\n 'brightness_6',\n 'brightness_7',\n 'brightness_auto',\n 'brightness_high',\n 'brightness_low',\n 'brightness_medium',\n 'broken_image',\n 'brush',\n 'bug_report',\n 'build',\n 'business',\n 'cached',\n 'cake',\n 'call',\n 'call_end',\n 'call_made',\n 'call_merge',\n 'call_missed',\n 'call_received',\n 'call_split',\n 'camera',\n 'camera_alt',\n 'camera_front',\n 'camera_rear',\n 'camera_roll',\n 'cancel',\n 'cast',\n 'cast_connected',\n 'center_focus_strong',\n 'center_focus_weak',\n 'chat',\n 'check',\n 'check_box',\n 'check_box_outline_blank',\n 'check_circle',\n 'chevron_left',\n 'chevron_right',\n 'class',\n 'clear',\n 'clear_all',\n 'close',\n 'closed_caption',\n 'cloud',\n 'cloud_circle',\n 'cloud_done',\n 'cloud_download',\n 'cloud_off',\n 'cloud_queue',\n 'cloud_upload',\n 'collections',\n 'collections_bookmark',\n 'color_lens',\n 'colorize',\n 'comment',\n 'compare',\n 'computer',\n 'confirmation_number',\n 'contact_phone',\n 'contacts',\n 'content_copy',\n 'content_cut',\n 'content_paste',\n 'control_point',\n 'control_point_duplicate',\n 'create',\n 'credit_card',\n 'crop',\n 'crop_16_9',\n 'crop_3_2',\n 'crop_5_4',\n 'crop_7_5',\n 'crop_din',\n 'crop_free',\n 'crop_landscape',\n 'crop_original',\n 'crop_portrait',\n 'crop_square',\n 'dashboard',\n 'data_usage',\n 'dehaze',\n 'delete',\n 'description',\n 'desktop_mac',\n 'desktop_windows',\n 'details',\n 'developer_board',\n 'developer_mode',\n 'device_hub',\n 'devices',\n 'dialer_sip',\n 'dialpad',\n 'directions',\n 'directions_bike',\n 'directions_boat',\n 'directions_bus',\n 'directions_car',\n 'directions_railway',\n 'directions_run',\n 'directions_subway',\n 'directions_transit',\n 'directions_walk',\n 'disc_full',\n 'dns',\n 'do_not_disturb',\n 'do_not_disturb_alt',\n 'dock',\n 'domain',\n 'done',\n 'done_all',\n 'drafts',\n 'drive_eta',\n 'dvr',\n 'edit',\n 'eject',\n 'email',\n 'equalizer',\n 'error',\n 'error_outline',\n 'event',\n 'event_available',\n 'event_busy',\n 'event_note',\n 'event_seat',\n 'exit_to_app',\n 'expand_less',\n 'expand_more',\n 'explicit',\n 'explore',\n 'exposure',\n 'exposure_neg_1',\n 'exposure_neg_2',\n 'exposure_plus_1',\n 'exposure_plus_2',\n 'exposure_zero',\n 'extension',\n 'face',\n 'fast_forward',\n 'fast_rewind',\n 'favorite',\n 'favorite_border',\n 'feedback',\n 'file_download',\n 'file_upload',\n 'filter',\n 'filter_1',\n 'filter_2',\n 'filter_3',\n 'filter_4',\n 'filter_5',\n 'filter_6',\n 'filter_7',\n 'filter_8',\n 'filter_9',\n 'filter_9_plus',\n 'filter_b_and_w',\n 'filter_center_focus',\n 'filter_drama',\n 'filter_frames',\n 'filter_hdr',\n 'filter_list',\n 'filter_none',\n 'filter_tilt_shift',\n 'filter_vintage',\n 'find_in_page',\n 'find_replace',\n 'flag',\n 'flare',\n 'flash_auto',\n 'flash_off',\n 'flash_on',\n 'flight',\n 'flight_land',\n 'flight_takeoff',\n 'flip',\n 'flip_to_back',\n 'flip_to_front',\n 'folder',\n 'folder_open',\n 'folder_shared',\n 'folder_special',\n 'font_download',\n 'format_align_center',\n 'format_align_justify',\n 'format_align_left',\n 'format_align_right',\n 'format_bold',\n 'format_clear',\n 'format_color_fill',\n 'format_color_reset',\n 'format_color_text',\n 'format_indent_decrease',\n 'format_indent_increase',\n 'format_italic',\n 'format_line_spacing',\n 'format_list_bulleted',\n 'format_list_numbered',\n 'format_paint',\n 'format_quote',\n 'format_size',\n 'format_strikethrough',\n 'format_textdirection_l_to_r',\n 'format_textdirection_r_to_l',\n 'format_underlined',\n 'forum',\n 'forward',\n 'forward_10',\n 'forward_30',\n 'forward_5',\n 'fullscreen',\n 'fullscreen_exit',\n 'functions',\n 'gamepad',\n 'games',\n 'gesture',\n 'get_app',\n 'gif',\n 'gps_fixed',\n 'gps_not_fixed',\n 'gps_off',\n 'grade',\n 'gradient',\n 'grain',\n 'graphic_eq',\n 'grid_off',\n 'grid_on',\n 'group',\n 'group_add',\n 'group_work',\n 'hd',\n 'hdr_off',\n 'hdr_on',\n 'hdr_strong',\n 'hdr_weak',\n 'headset',\n 'headset_mic',\n 'healing',\n 'hearing',\n 'help',\n 'help_outline',\n 'high_quality',\n 'highlight_off',\n 'history',\n 'home',\n 'hotel',\n 'hourglass_empty',\n 'hourglass_full',\n 'http',\n 'https',\n 'image',\n 'image_aspect_ratio',\n 'import_export',\n 'inbox',\n 'indeterminate_check_box',\n 'info',\n 'info_outline',\n 'input',\n 'insert_chart',\n 'insert_comment',\n 'insert_drive_file',\n 'insert_emoticon',\n 'insert_invitation',\n 'insert_link',\n 'insert_photo',\n 'invert_colors',\n 'invert_colors_off',\n 'iso',\n 'keyboard',\n 'keyboard_arrow_down',\n 'keyboard_arrow_left',\n 'keyboard_arrow_right',\n 'keyboard_arrow_up',\n 'keyboard_backspace',\n 'keyboard_capslock',\n 'keyboard_hide',\n 'keyboard_return',\n 'keyboard_tab',\n 'keyboard_voice',\n 'label',\n 'label_outline',\n 'landscape',\n 'language',\n 'laptop',\n 'laptop_chromebook',\n 'laptop_mac',\n 'laptop_windows',\n 'launch',\n 'layers',\n 'layers_clear',\n 'leak_add',\n 'leak_remove',\n 'lens',\n 'library_add',\n 'library_books',\n 'library_music',\n 'link',\n 'list',\n 'live_help',\n 'live_tv',\n 'local_activity',\n 'local_airport',\n 'local_atm',\n 'local_bar',\n 'local_cafe',\n 'local_car_wash',\n 'local_convenience_store',\n 'local_dining',\n 'local_drink',\n 'local_florist',\n 'local_gas_station',\n 'local_grocery_store',\n 'local_hospital',\n 'local_hotel',\n 'local_laundry_service',\n 'local_library',\n 'local_mall',\n 'local_movies',\n 'local_offer',\n 'local_parking',\n 'local_pharmacy',\n 'local_phone',\n 'local_pizza',\n 'local_play',\n 'local_post_office',\n 'local_printshop',\n 'local_see',\n 'local_shipping',\n 'local_taxi',\n 'location_city',\n 'location_disabled',\n 'location_off',\n 'location_on',\n 'location_searching',\n 'lock',\n 'lock_open',\n 'lock_outline',\n 'looks',\n 'looks_3',\n 'looks_4',\n 'looks_5',\n 'looks_6',\n 'looks_one',\n 'looks_two',\n 'loop',\n 'loupe',\n 'loyalty',\n 'mail',\n 'map',\n 'markunread',\n 'markunread_mailbox',\n 'memory',\n 'menu',\n 'merge_type',\n 'message',\n 'mic',\n 'mic_none',\n 'mic_off',\n 'mms',\n 'mode_comment',\n 'mode_edit',\n 'money_off',\n 'monochrome_photos',\n 'mood',\n 'mood_bad',\n 'more',\n 'more_horiz',\n 'more_vert',\n 'mouse',\n 'movie',\n 'movie_creation',\n 'music_note',\n 'my_library_add',\n 'my_library_books',\n 'my_library_music',\n 'my_location',\n 'nature',\n 'nature_people',\n 'navigate_before',\n 'navigate_next',\n 'navigation',\n 'network_cell',\n 'network_locked',\n 'network_wifi',\n 'new_releases',\n 'nfc',\n 'no_sim',\n 'not_interested',\n 'note_add',\n 'notifications',\n 'notifications_active',\n 'notifications_none',\n 'notifications_off',\n 'notifications_paused',\n 'offline_pin',\n 'ondemand_video',\n 'open_in_browser',\n 'open_in_new',\n 'open_with',\n 'pages',\n 'pageview',\n 'palette',\n 'panorama',\n 'panorama_fish_eye',\n 'panorama_horizontal',\n 'panorama_vertical',\n 'panorama_wide_angle',\n 'party_mode',\n 'pause',\n 'pause_circle_filled',\n 'pause_circle_outline',\n 'payment',\n 'people',\n 'people_outline',\n 'perm_camera_mic',\n 'perm_contact_calendar',\n 'perm_data_setting',\n 'perm_device_information',\n 'perm_identity',\n 'perm_media',\n 'perm_phone_msg',\n 'perm_scan_wifi',\n 'person',\n 'person_add',\n 'person_outline',\n 'person_pin',\n 'personal_video',\n 'phone',\n 'phone_android',\n 'phone_bluetooth_speaker',\n 'phone_forwarded',\n 'phone_in_talk',\n 'phone_iphone',\n 'phone_locked',\n 'phone_missed',\n 'phone_paused',\n 'phonelink',\n 'phonelink_erase',\n 'phonelink_lock',\n 'phonelink_off',\n 'phonelink_ring',\n 'phonelink_setup',\n 'photo',\n 'photo_album',\n 'photo_camera',\n 'photo_library',\n 'photo_size_select_actual',\n 'photo_size_select_large',\n 'photo_size_select_small',\n 'picture_as_pdf',\n 'picture_in_picture',\n 'pin_drop',\n 'place',\n 'play_arrow',\n 'play_circle_filled',\n 'play_circle_outline',\n 'play_for_work',\n 'play_shopping_bag',\n 'playlist_add',\n 'plus_one',\n 'poll',\n 'polymer',\n 'portable_wifi_off',\n 'portrait',\n 'power',\n 'power_input',\n 'power_settings_new',\n 'present_to_all',\n 'print',\n 'public',\n 'publish',\n 'query_builder',\n 'question_answer',\n 'queue',\n 'queue_music',\n 'radio',\n 'radio_button_checked',\n 'radio_button_unchecked',\n 'rate_review',\n 'receipt',\n 'recent_actors',\n 'redeem',\n 'redo',\n 'refresh',\n 'remove',\n 'remove_circle',\n 'remove_circle_outline',\n 'remove_red_eye',\n 'reorder',\n 'repeat',\n 'repeat_one',\n 'replay',\n 'replay_10',\n 'replay_30',\n 'replay_5',\n 'reply',\n 'reply_all',\n 'report',\n 'report_problem',\n 'restaurant_menu',\n 'restore',\n 'ring_volume',\n 'room',\n 'rotate_90_degrees_ccw',\n 'rotate_left',\n 'rotate_right',\n 'router',\n 'satellite',\n 'save',\n 'scanner',\n 'schedule',\n 'school',\n 'screen_lock_landscape',\n 'screen_lock_portrait',\n 'screen_lock_rotation',\n 'screen_rotation',\n 'sd_card',\n 'sd_storage',\n 'search',\n 'security',\n 'select_all',\n 'send',\n 'settings',\n 'settings_applications',\n 'settings_backup_restore',\n 'settings_bluetooth',\n 'settings_brightness',\n 'settings_cell',\n 'settings_ethernet',\n 'settings_input_antenna',\n 'settings_input_component',\n 'settings_input_composite',\n 'settings_input_hdmi',\n 'settings_input_svideo',\n 'settings_overscan',\n 'settings_phone',\n 'settings_power',\n 'settings_remote',\n 'settings_system_daydream',\n 'settings_voice',\n 'share',\n 'shop',\n 'shop_two',\n 'shopping_basket',\n 'shopping_cart',\n 'shuffle',\n 'signal_cellular_4_bar',\n 'signal_cellular_connected_no_internet_4_bar',\n 'signal_cellular_no_sim',\n 'signal_cellular_null',\n 'signal_cellular_off',\n 'signal_wifi_4_bar',\n 'signal_wifi_4_bar_lock',\n 'signal_wifi_off',\n 'sim_card',\n 'sim_card_alert',\n 'skip_next',\n 'skip_previous',\n 'slideshow',\n 'smartphone',\n 'sms',\n 'sms_failed',\n 'snooze',\n 'sort',\n 'sort_by_alpha',\n 'space_bar',\n 'speaker',\n 'speaker_group',\n 'speaker_notes',\n 'speaker_phone',\n 'spellcheck',\n 'star',\n 'star_border',\n 'star_half',\n 'stars',\n 'stay_current_landscape',\n 'stay_current_portrait',\n 'stay_primary_landscape',\n 'stay_primary_portrait',\n 'stop',\n 'storage',\n 'store',\n 'store_mall_directory',\n 'straighten',\n 'strikethrough_s',\n 'style',\n 'subject',\n 'subtitles',\n 'supervisor_account',\n 'surround_sound',\n 'swap_calls',\n 'swap_horiz',\n 'swap_vert',\n 'swap_vertical_circle',\n 'switch_camera',\n 'switch_video',\n 'sync',\n 'sync_disabled',\n 'sync_problem',\n 'system_update',\n 'system_update_alt',\n 'tab',\n 'tab_unselected',\n 'tablet',\n 'tablet_android',\n 'tablet_mac',\n 'tag_faces',\n 'tap_and_play',\n 'terrain',\n 'text_format',\n 'textsms',\n 'texture',\n 'theaters',\n 'thumb_down',\n 'thumb_up',\n 'thumbs_up_down',\n 'time_to_leave',\n 'timelapse',\n 'timer',\n 'timer_10',\n 'timer_3',\n 'timer_off',\n 'toc',\n 'today',\n 'toll',\n 'tonality',\n 'toys',\n 'track_changes',\n 'traffic',\n 'transform',\n 'translate',\n 'trending_down',\n 'trending_flat',\n 'trending_up',\n 'tune',\n 'turned_in',\n 'turned_in_not',\n 'tv',\n 'undo',\n 'unfold_less',\n 'unfold_more',\n 'usb',\n 'verified_user',\n 'vertical_align_bottom',\n 'vertical_align_center',\n 'vertical_align_top',\n 'vibration',\n 'video_library',\n 'videocam',\n 'videocam_off',\n 'view_agenda',\n 'view_array',\n 'view_carousel',\n 'view_column',\n 'view_comfy',\n 'view_compact',\n 'view_day',\n 'view_headline',\n 'view_list',\n 'view_module',\n 'view_quilt',\n 'view_stream',\n 'view_week',\n 'vignette',\n 'visibility',\n 'visibility_off',\n 'voice_chat',\n 'voicemail',\n 'volume_down',\n 'volume_mute',\n 'volume_off',\n 'volume_up',\n 'vpn_key',\n 'vpn_lock',\n 'wallpaper',\n 'warning',\n 'watch',\n 'wb_auto',\n 'wb_cloudy',\n 'wb_incandescent',\n 'wb_iridescent',\n 'wb_sunny',\n 'wc',\n 'web',\n 'whatshot',\n 'widgets',\n 'wifi',\n 'wifi_lock',\n 'wifi_tethering',\n 'work',\n 'wrap_text',\n 'youtube_searched_for',\n 'zoom_in',\n 'zoom_out',\n ];\n\n get icons(): string[] {\n return this._icons;\n }\n\n filter(query: string): string[] {\n return this.icons.filter((el: string) => {\n return el.toLowerCase().indexOf(query ? query.toLowerCase() : '') > -1;\n });\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n/**\n * Directives\n */\nimport { TdAutoTrimDirective } from './forms/auto-trim/auto-trim.directive';\nimport { TdFullscreenDirective } from './directives/fullscreen/fullscreen.directive';\n\nconst TD_DIRECTIVES: Type<any>[] = [TdAutoTrimDirective, TdFullscreenDirective];\n\n// Validators\nconst TD_VALIDATORS: Type<any>[] = [];\n\n/**\n * PIPES\n */\nimport { TdTimeAgoPipe } from './pipes/time-ago/time-ago.pipe';\nimport { TdTimeDifferencePipe } from './pipes/time-difference/time-difference.pipe';\nimport { TdTimeUntilPipe } from './pipes/time-until/time-until.pipe';\nimport { TdBytesPipe } from './pipes/bytes/bytes.pipe';\nimport { TdDecimalBytesPipe } from './pipes/decimal-bytes/decimal-bytes.pipe';\nimport { TdDigitsPipe } from './pipes/digits/digits.pipe';\nimport { TdTruncatePipe } from './pipes/truncate/truncate.pipe';\n\nconst TD_PIPES: Type<any>[] = [\n TdTimeAgoPipe,\n TdTimeDifferencePipe,\n TdTimeUntilPipe,\n TdBytesPipe,\n TdDecimalBytesPipe,\n TdDigitsPipe,\n TdTruncatePipe,\n];\n\n/**\n * Services\n */\n\nimport { RouterPathService } from './services/router-path.service';\nimport { IconService } from './services/icon.service';\n\n@NgModule({\n imports: [FormsModule, CommonModule],\n declarations: [TD_DIRECTIVES, TD_PIPES, TD_VALIDATORS],\n exports: [FormsModule, CommonModule, TD_DIRECTIVES, TD_PIPES, TD_VALIDATORS],\n providers: [RouterPathService, IconService],\n})\nexport class CovalentCommonModule {}\n","import {\n trigger, state, style, transition, animate, AnimationTriggerMetadata,\n query, animateChild, group,\n} from '@angular/animations';\n\nimport { IAnimationOptions } from '../common/interfaces';\n\nexport interface IRotateAnimation extends IAnimationOptions {\n degrees?: number;\n ease?: string;\n}\n\n/**\n * const tdRotateAnimation\n *\n * Parameter Options:\n * * degressStart: Degrees of rotation that the dom object will end up in during the \"false\" state\n * * degreesEnd: Degrees of rotation that the dom object will end up in during the \"true\" state\n * * duration: Duration the animation will run in milliseconds. Defaults to 150 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerates and decelerates. Defaults to ease-in.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a rotation animation.\n *\n * usage: [@tdRotate]=\"{ value: true | false, params: { degreesEnd: 90 }}\"\n */\n\nexport const tdRotateAnimation: AnimationTriggerMetadata = trigger('tdRotate', [\n state('0', style({\n transform: 'rotate({{ degressStart }}deg)',\n }), { params: { degressStart: 0 }}),\n state('1', style({\n transform: 'rotate({{ degreesEnd }}deg)',\n }), { params: { degreesEnd: 180 }}),\n transition('0 <=> 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ ease }}'),\n ]),\n ], { params: { duration: 250, delay: '0', ease: 'ease-in' }}),\n]);\n","import { trigger, state, style, transition, animate,\n AnimationTriggerMetadata, AUTO_STYLE, query, animateChild, group } from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\nexport interface ICollapseAnimation extends IAnimationOptions {\n easeOnClose?: string;\n easeOnOpen?: string;\n}\n\n/**\n * const tdCollapseAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 150 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * easeOnClose: Animation accelerates and decelerates when closing. Defaults to ease-in.\n * * easeOnOpen: Animation accelerates and decelerates when opening. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a collapse/expand animation.\n *\n * usage: [@tdCollapse]=\"{ value: true | false, params: { duration: 500 }}\"\n */\nexport const tdCollapseAnimation: AnimationTriggerMetadata = trigger('tdCollapse', [\n state('1', style({\n height: '0',\n overflow: 'hidden',\n })),\n state('0', style({\n height: AUTO_STYLE,\n overflow: AUTO_STYLE,\n })),\n transition('0 => 1', [\n style({\n overflow: 'hidden',\n height: AUTO_STYLE,\n }),\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ ease }}', style({\n height: '0',\n overflow: 'hidden',\n })),\n ]),\n ], { params: { duration: 150, delay: '0', ease: 'ease-in' }}),\n transition('1 => 0', [\n style({\n height: '0',\n overflow: 'hidden',\n }),\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ ease }}', style({\n overflow: 'hidden',\n height: AUTO_STYLE,\n })),\n ]),\n ], { params: { duration: 150, delay: '0', ease: 'ease-out' }}),\n]);\n","import { trigger, state, style, transition, animate,\n AnimationTriggerMetadata, AUTO_STYLE, query, animateChild, group } from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\nexport interface IFadeInOutAnimation extends IAnimationOptions {\n easeOnIn?: string;\n easeOnOut?: string;\n}\n\n/**\n * const tdFadeInOutAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 150 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * easeOnIn: Animation accelerates and decelerates when fading in. Defaults to ease-in.\n * * easeOnOut: Animation accelerates and decelerates when fading out. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a fade animation.\n *\n * usage: [@tdFadeInOut]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdFadeInOutAnimation: AnimationTriggerMetadata = trigger('tdFadeInOut', [\n state('0', style({\n opacity: '0',\n visibility: 'hidden',\n })),\n state('1', style({\n opacity: AUTO_STYLE,\n visibility: AUTO_STYLE,\n })),\n transition('0 => 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ easeOnIn }}'),\n ]),\n ], { params: { duration: 150, delay: '0', easeOnIn: 'ease-in' }}),\n transition('1 => 0', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ easeOnOut }}'),\n ]),\n ], { params: { duration: 150, delay: '0', easeOnOut: 'ease-out' }}),\n]);\n","\nimport { trigger, state, style, keyframes, transition, animate,\n AnimationTriggerMetadata, query, animateChild, group } from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\n/**\n * const tdBounceAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerate and decelerate style. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a bounce animation.\n *\n * usage: [@tdBounce]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdBounceAnimation: AnimationTriggerMetadata = trigger('tdBounce', [\n state('0', style({\n transform: 'translate3d(0, 0, 0)',\n })),\n state('1', style({\n transform: 'translate3d(0, 0, 0)',\n })),\n transition('0 <=> 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ ease }}',\n keyframes([\n style({animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)', transform: 'translate3d(0, 0, 0)', offset: 0}),\n style({animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)', transform: 'translate3d(0, 0, 0)', offset: 0.2}),\n style({animationTimingFunction: 'cubic-bezier(0.755, 0.050, 0.855, 0.060)', transform: 'translate3d(0, -30px, 0)', offset: 0.4}),\n style({animationTimingFunction: 'cubic-bezier(0.755, 0.050, 0.855, 0.060)', transform: 'translate3d(0, -30px, 0)', offset: 0.43}),\n style({animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)', transform: 'translate3d(0, 0, 0)', offset: 0.53}),\n style({animationTimingFunction: 'cubic-bezier(0.755, 0.050, 0.855, 0.060)', transform: 'translate3d(0, -15px, 0)', offset: .7}),\n style({animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)', transform: 'translate3d(0, 0, 0)', offset: 0.8}),\n style({transform: 'translate3d(0, -4px, 0)', offset: .9}),\n style({animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)', transform: 'translate3d(0, 0, 0)', offset: 1.0}),\n ])),\n ]),\n ], { params: { duration: 500, delay: '0', ease: 'ease-out' }}),\n]);\n","\nimport { trigger, state, style, keyframes, transition, animate,\n AnimationTriggerMetadata, AUTO_STYLE, query, animateChild, group } from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\n/**\n * const tdFlashAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerate and decelerate style. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a flash animation.\n *\n * usage: [@tdFlash]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdFlashAnimation: AnimationTriggerMetadata = trigger('tdFlash', [\n state('0', style({\n opacity: 1,\n })),\n state('1', style({\n opacity: 1,\n })),\n transition('0 <=> 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ ease }}',\n keyframes([\n style({opacity: 1, offset: 0}),\n style({opacity: 0, offset: 0.25}),\n style({opacity: 1, offset: 0.5}),\n style({opacity: 0, offset: 0.75}),\n style({opacity: 1, offset: 1.0}),\n ])),\n ]),\n ], { params: { duration: 500, delay: '0', ease: 'ease-out' }}),\n]);\n","\nimport { trigger, state, style, keyframes, transition, animate,\n AnimationTriggerMetadata, AUTO_STYLE, query, animateChild, group } from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\n/**\n * const tdHeadshakeAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerate and decelerate style. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a headshake animation.\n *\n * usage: [@tdHeadshake]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdHeadshakeAnimation: AnimationTriggerMetadata = trigger('tdHeadshake', [\n state('0', style({\n transform: 'translateX(0)',\n })),\n state('1', style({\n transform: 'translateX(0)',\n })),\n transition('0 <=> 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ ease }}',\n keyframes([\n style({transform: 'translateX(0)', offset: 0}),\n style({transform: 'translateX(-6px) rotateY(-9deg)', offset: 0.065}),\n style({transform: 'translateX(5px) rotateY(7deg)', offset: 0.185}),\n style({transform: 'translateX(-3px) rotateY(-5deg)', offset: 0.315}),\n style({transform: 'translateX(2px) rotateY(3deg)', offset: 0.435}),\n style({transform: 'translateX(0)', offset: 0.50}),\n ])),\n ]),\n ], { params: { duration: 500, delay: '0', ease: 'ease-out' }}),\n]);\n","\nimport { trigger, state, style, keyframes, transition, animate,\n AnimationTriggerMetadata, AUTO_STYLE, query, animateChild, group } from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\n/**\n * const tdJelloAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerate and decelerate style. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a jello animation.\n *\n * usage: [@tdJello]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdJelloAnimation: AnimationTriggerMetadata = trigger('tdJello', [\n state('0', style({\n transform: 'none',\n })),\n state('1', style({\n transform: 'none',\n })),\n transition('0 <=> 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ ease }}',\n keyframes([\n style({transform: 'none', offset: 0}),\n style({transform: 'none', offset: 0.011}),\n style({transform: 'skewX(-12.5deg) skewY(-12.5deg)', offset: 0.222}),\n style({transform: 'skewX(6.25deg) skewY(6.25deg)', offset: 0.333}),\n style({transform: 'skewX(-3.125deg) skewY(-3.125deg)', offset: 0.444}),\n style({transform: 'skewX(1.5625deg) skewY(1.5625deg)', offset: 0.555}),\n style({transform: 'skewX(-0.78125deg) skewY(-0.78125deg)', offset: 0.666}),\n style({transform: 'skewX(0.390625deg) skewY(0.390625deg)', offset: 0.777}),\n style({transform: 'skewX(-0.1953125deg) skewY(-0.1953125deg)', offset: 0.888}),\n ])),\n ]),\n ], { params: { duration: 500, delay: '0', ease: 'ease-out' }}),\n]);\n","\nimport { trigger, state, style, keyframes, transition, animate,\n AnimationTriggerMetadata, AUTO_STYLE, query, animateChild, group } from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\n/**\n * const tdPulseAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerate and decelerate style. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a pulse animation.\n *\n * usage: [@tdPulse]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdPulseAnimation: AnimationTriggerMetadata = trigger('tdPulse', [\n state('0', style({\n transform: 'scale3d(1, 1, 1)',\n })),\n state('1', style({\n transform: 'scale3d(1, 1, 1)',\n })),\n transition('0 <=> 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ ease }}',\n keyframes([\n style({ transform: 'scale3d(1, 1, 1)', offset: 0 }),\n style({ transform: 'scale3d(1.05, 1.05, 1.05)', offset: 0.5 }),\n style({ transform: 'scale3d(1, 1, 1)', offset: 1.0 }),\n ]),\n ),\n ]),\n ], { params: { duration: 500, delay: '0', ease: 'ease-out' }}),\n]);\n","import { ChangeDetectorRef } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\nimport { Observable, Subject } from 'rxjs';\n\ntype Constructor<T> = new (...args: any[]) => T;\n\nconst noop: any = () => {\n // empty method\n};\n\nexport interface IControlValueAccessor extends ControlValueAccessor {\n value: any;\n valueChanges: Observable<any>;\n onChange: (_: any) => any;\n onTouched: () => any;\n}\n\nexport interface IHasChangeDetectorRef {\n _changeDetectorRef: ChangeDetectorRef;\n}\n\n/** Mixin to augment a component with ngModel support. */\nexport function mixinControlValueAccessor<T extends Constructor<IHasChangeDetectorRef>>\n (base: T, initialValue?: any): Constructor<IControlValueAccessor> & T {\n return class extends base {\n private _value: any = initialValue instanceof Array ? Object.assign([], initialValue) : initialValue;\n private _subjectValueChanges: Subject<any>;\n valueChanges: Observable<any>;\n\n constructor(...args: any[]) {\n super(...args); \n this._subjectValueChanges = new Subject<any>();\n this.valueChanges = this._subjectValueChanges.asObservable();\n }\n\n set value(v: any) {\n if (v !== this._value) {\n this._value = v;\n this.onChange(v);\n this._changeDetectorRef.markForCheck();\n this._subjectValueChanges.next(v);\n }\n }\n get value(): any {\n return this._value;\n }\n\n writeValue(value: any): void {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n onChange = (_: any) => noop;\n onTouched = () => noop;\n\n };\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\n\ntype Constructor<T> = new (...args: any[]) => T;\n\n/** Interface to implement when applying the disabled mixin */\nexport interface ICanDisable {\n disabled: boolean;\n onDisabledChange(v: boolean): void;\n}\n\n/** Mixin to augment a component or directive with a `disabled` property. */\nexport function mixinDisabled<T extends Constructor<{}>>(base: T): Constructor<ICanDisable> & T {\n return class extends base {\n private _disabled: boolean = false;\n\n constructor(...args: any[]) {\n super(...args);\n }\n\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n let newValue: boolean = coerceBooleanProperty(value);\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.onDisabledChange(this._disabled);\n }\n }\n\n onDisabledChange(v: boolean): void {\n /** NOT IMPLEMENTED, this needs to be overriden by subclasses if needed */\n }\n };\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\n\ntype Constructor<T> = new (...args: any[]) => T;\n\n/** Interface to implement when applying the disabled mixin */\nexport interface ICanDisableRipple {\n disableRipple: boolean;\n onDisableRippleChange(v: boolean): void;\n}\n\n/** Mixin to augment a component or directive with a `disabled` property. */\nexport function mixinDisableRipple<T extends Constructor<{}>>(base: T): Constructor<ICanDisableRipple> & T {\n return class extends base {\n private _disableRipple: boolean = false;\n\n constructor(...args: any[]) {\n super(...args);\n }\n\n get disableRipple(): boolean {\n return this._disableRipple;\n }\n set disableRipple(value: boolean) {\n let newValue: boolean = coerceBooleanProperty(value);\n if (this._disableRipple !== newValue) {\n this._disableRipple = newValue;\n this.onDisableRippleChange(this._disableRipple);\n }\n }\n\n onDisableRippleChange(v: boolean): void {\n /** NOT IMPLEMENTED, this needs to be overriden by subclasses if needed */\n }\n };\n}\n","import { Validators, AbstractControl, ValidatorFn } from '@angular/forms';\n\nexport class CovalentValidators {\n static min(minValue: any): ValidatorFn {\n let func: ValidatorFn = (c: AbstractControl): {[key: string]: any} => {\n if (!!Validators.required(c) || (!minValue && minValue !== 0)) {\n return undefined;\n }\n let v: number = c.value;\n return v < minValue ?\n { min: {minValue: minValue, actualValue: v} } :\n undefined;\n };\n return func;\n }\n\n static max(maxValue: any): ValidatorFn {\n let func: ValidatorFn = (c: AbstractControl): {[key: string]: any} => {\n if (!!Validators.required(c) || (!maxValue && maxValue !== 0)) {\n return undefined;\n }\n let v: number = c.value;\n return v > maxValue ?\n { max: {maxValue: maxValue, actualValue: v} } :\n undefined;\n };\n return func;\n }\n\n static numberRequired(c: AbstractControl): {[key: string]: any} {\n return (Number.isNaN(c.value)) ?\n { required: true } :\n undefined;\n }\n\n}\n","import { Component, Directive, Input, Renderer2, ElementRef, AfterViewInit, ViewContainerRef, TemplateRef, ViewChild,\n HostBinding, HostListener, ChangeDetectorRef } from '@angular/core';\n\nimport { tdCollapseAnimation } from '@covalent/core/common';\n\n@Directive({\n selector: '[tdMessageContainer]',\n})\nexport class TdMessageContainerDirective {\n constructor(public viewContainer: ViewContainerRef) { }\n}\n\n@Component({\n selector: 'td-message',\n templateUrl: './message.component.html',\n styleUrls: ['./message.component.scss'],\n animations: [\n tdCollapseAnimation,\n ],\n})\nexport class TdMessageComponent implements AfterViewInit {\n\n private _color: string;\n private _opened: boolean = true;\n private _hidden: boolean = false;\n private _animating: boolean = false;\n private _initialized: boolean = false;\n\n @ViewChild(TdMessageContainerDirective) _childElement: TdMessageContainerDirective;\n @ViewChild(TemplateRef) _template: TemplateRef<any>;\n\n /**\n * Binding host to tdCollapse animation\n */\n @HostBinding('@tdCollapse')\n get collapsedAnimation(): any {\n return { value: !this._opened, duration: 100 };\n }\n\n /**\n * Binding host to display style when hidden\n */\n @HostBinding('style.display')\n get hidden(): string {\n return this._hidden ? 'none' : undefined;\n }\n\n /**\n * label: string\n *\n * Sets the label of the message.\n */\n @Input('label') label: string;\n\n /**\n * sublabel?: string\n *\n * Sets the sublabel of the message.\n */\n @Input('sublabel') sublabel: string;\n\n /**\n * icon?: string\n *\n * The icon to be displayed before the title.\n * Defaults to `info_outline` icon\n */\n @Input('icon') icon: string = 'info_outline';\n\n /**\n * color?: primary | accent | warn\n *\n * Sets the color of the message.\n * Can also use any material color: purple | light-blue, etc.\n */\n @Input('color')\n set color(color: string) {\n this._renderer.removeClass(this._elementRef.nativeElement, 'mat-' + this._color);\n this._renderer.removeClass(this._elementRef.nativeElement, 'bgc-' + this._color + '-100');\n this._renderer.removeClass(this._elementRef.nativeElement, 'tc-' + this._color + '-700');\n if (color === 'primary' || color === 'accent' || color === 'warn') {\n this._renderer.addClass(this._elementRef.nativeElement, 'mat-' + color);\n } else {\n this._renderer.addClass(this._elementRef.nativeElement, 'bgc-' + color + '-100');\n this._renderer.addClass(this._elementRef.nativeElement, 'tc-' + color + '-700');\n }\n this._color = color;\n this._changeDetectorRef.markForCheck();\n }\n get color(): string {\n return this._color;\n }\n\n /**\n * opened?: boolean\n *\n * Shows or hiddes the message depending on its value.\n * Defaults to 'true'.\n */\n @Input('opened')\n set opened(opened: boolean) {\n if (this._initialized) {\n if (opened) {\n this.open();\n } else {\n this.close();\n }\n } else {\n this._opened = opened;\n }\n }\n get opened(): boolean {\n return this._opened;\n }\n\n constructor(private _renderer: Renderer2,\n private _changeDetectorRef: ChangeDetectorRef,\n private _elementRef: ElementRef) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-message');\n }\n\n /**\n * Detach element when close animation is finished to set animating state to false\n * hidden state to true and detach element from DOM\n */\n @HostListener('@tdCollapse.done')\n animationDoneListener(): void {\n if (!this._opened) {\n this._hidden = true;\n this._detach();\n }\n this._animating = false;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Initializes the component and attaches the content.\n */\n ngAfterViewInit(): void {\n Promise.resolve(undefined).then(() => {\n if (this._opened) {\n this._attach();\n }\n this._initialized = true;\n });\n }\n\n /**\n * Renders the message on screen\n * Validates if there is an animation currently and if its already opened\n */\n open(): void {\n if (!this._opened && !this._animating) {\n this._opened = true;\n this._attach();\n this._startAnimationState();\n }\n }\n\n /**\n * Removes the message content from screen.\n * Validates if there is an animation currently and if its already closed\n */\n close(): void {\n if (this._opened && !this._animating) {\n this._opened = false;\n this._startAnimationState();\n }\n }\n\n /**\n * Toggles between open and close depending on state.\n */\n toggle(): void {\n if (this._opened) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * Method to set the state before starting an animation\n */\n private _startAnimationState(): void {\n this._animating = true;\n this._hidden = false;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Method to attach template to DOM\n */\n private _attach(): void {\n this._childElement.viewContainer.createEmbeddedView(this._template);\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Method to detach template from DOM\n */\n private _detach(): void {\n this._childElement.viewContainer.clear();\n this._changeDetectorRef.markForCheck();\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { TdMessageComponent, TdMessageContainerDirective } from './message.component';\n\nconst TD_MESSAGE: Type<any>[] = [\n TdMessageComponent,\n TdMessageContainerDirective,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n ],\n declarations: [\n TD_MESSAGE,\n ],\n exports: [\n TD_MESSAGE,\n ],\n})\nexport class CovalentMessageModule {\n\n}\n","import { Component, Input, Output, forwardRef, DoCheck, ViewChild, ViewChildren, QueryList, OnInit, HostListener,\n ElementRef, Optional, Inject, Directive, TemplateRef, ViewContainerRef, ContentChild, ChangeDetectionStrategy,\n ChangeDetectorRef, AfterViewInit, OnDestroy, HostBinding, Renderer2 } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { EventEmitter } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor, FormControl } from '@angular/forms';\n\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { UP_ARROW, DOWN_ARROW, ESCAPE, LEFT_ARROW, RIGHT_ARROW, DELETE, BACKSPACE, ENTER, SPACE, TAB, HOME } from '@angular/cdk/keycodes';\nimport { MatChip } from '@angular/material/chips';\nimport { MatInput } from '@angular/material/input';\nimport { MatOption } from '@angular/material/core';\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\n\nimport { Observable, Subscription, timer, merge, fromEvent } from 'rxjs';\nimport { filter, debounceTime } from 'rxjs/operators';\n\nimport { ICanDisable, mixinDisabled, IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\n@Directive({\n selector: '[td-chip]ng-template',\n})\nexport class TdChipDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Directive({\n selector: '[td-autocomplete-option]ng-template',\n})\nexport class TdAutocompleteOptionDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\nexport class TdChipsBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdChipsMixinBase = mixinControlValueAccessor(mixinDisabled(TdChipsBase), []);\n\n@Component({\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdChipsComponent),\n multi: true,\n }],\n selector: 'td-chips',\n inputs: ['disabled', 'value'],\n styleUrls: ['./chips.component.scss' ],\n templateUrl: './chips.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdChipsComponent extends _TdChipsMixinBase implements IControlValueAccessor, DoCheck, OnInit, AfterViewInit, OnDestroy, ICanDisable {\n\n private _outsideClickSubs: Subscription = Subscription.EMPTY;\n private _inputValueChangesSubs: Subscription = Subscription.EMPTY;\n private _isMousedown: boolean = false;\n\n private _items: any[];\n private _length: number = 0;\n private _stacked: boolean = false;\n private _requireMatch: boolean = false;\n private _color: 'primary' | 'accent' | 'warn' = 'primary';\n private _inputPosition: 'before' | 'after' = 'after';\n private _chipAddition: boolean = true;\n private _chipRemoval: boolean = true;\n private _focused: boolean = false;\n private _required: boolean = false;\n private _tabIndex: number = 0;\n private _touchendDebounce: number = 100;\n\n _internalClick: boolean = false;\n _internalActivateOption: boolean = false;\n\n @ViewChild('input') _nativeInput: ElementRef;\n @ViewChild(MatInput) _inputChild: MatInput;\n @ViewChild(MatAutocompleteTrigger) _autocompleteTrigger: MatAutocompleteTrigger;\n @ViewChildren(MatChip) _chipsChildren: QueryList<MatChip>;\n\n @ContentChild(TdChipDirective) _chipTemplate: TdChipDirective;\n @ContentChild(TdAutocompleteOptionDirective) _autocompleteOptionTemplate: TdAutocompleteOptionDirective;\n\n @ViewChildren(MatOption) _options: QueryList<MatOption>;\n\n /**\n * Flag that is true when autocomplete is focused.\n */\n get focused(): boolean {\n return this._focused;\n }\n\n /**\n * FormControl for the matInput element.\n */\n inputControl: FormControl = new FormControl();\n\n /**\n * items?: any[]\n * Renders the `mat-autocomplete` with the provided list to display as options.\n */\n @Input('items')\n set items(items: any[]) {\n this._items = items;\n this._setFirstOptionActive();\n this._changeDetectorRef.markForCheck();\n }\n get items(): any[] {\n return this._items;\n }\n\n /**\n * stacked?: boolean\n * Set stacked or horizontal chips depending on value.\n * Defaults to false.\n */\n @Input('stacked')\n set stacked(stacked: boolean) {\n this._stacked = coerceBooleanProperty(stacked);\n }\n get stacked(): boolean {\n return this._stacked;\n }\n\n /**\n * inputPosition?: 'before' | 'after'\n * Set input position before or after the chips.\n * Defaults to 'after'.\n */\n @Input('inputPosition')\n set inputPosition(inputPosition: 'before' | 'after') {\n this._inputPosition = inputPosition;\n }\n get inputPosition(): 'before' | 'after' {\n return this._inputPosition;\n }\n\n /**\n * requireMatch?: boolean\n * Blocks custom inputs and only allows selections from the autocomplete list.\n */\n @Input('requireMatch')\n set requireMatch(requireMatch: boolean) {\n this._requireMatch = coerceBooleanProperty(requireMatch);\n }\n get requireMatch(): boolean {\n return this._requireMatch;\n }\n\n /**\n * required?: boolean\n * Value is set to true if at least one chip is needed\n * Defaults to false\n */\n @Input('required')\n set required(required: boolean) {\n this._required = coerceBooleanProperty(required);\n }\n get required(): boolean {\n return this._required;\n }\n\n /**\n * chipAddition?: boolean\n * Disables the ability to add chips. When setting disabled as true, this will be overriden.\n * Defaults to true.\n */\n @Input('chipAddition')\n set chipAddition(chipAddition: boolean) {\n this._chipAddition = chipAddition;\n this._toggleInput();\n }\n get chipAddition(): boolean {\n return this._chipAddition;\n }\n\n /**\n * Checks if not in disabled state and if chipAddition is set to 'true'\n * States if a chip can be added and if the input is available\n */\n get canAddChip(): boolean {\n return this.chipAddition && !this.disabled;\n }\n\n /**\n * chipRemoval?: boolean\n * Disables the ability to remove chips. If it doesn't exist chip remmoval defaults to true.\n * When setting disabled as true, this will be overriden to false.\n */\n @Input('chipRemoval')\n set chipRemoval(chipRemoval: boolean) {\n this._chipRemoval = chipRemoval;\n }\n get chipRemoval(): boolean {\n return this._chipRemoval;\n }\n\n /**\n * Checks if not in disabled state and if chipRemoval is set to 'true'\n * States if a chip can be removed\n */\n get canRemoveChip(): boolean {\n return this.chipRemoval && !this.disabled;\n }\n\n /**\n * returns the display placeholder\n */\n get displayPlaceHolder(): string {\n if (!this.canAddChip) {\n return '';\n }\n return (this._required) ? `${this.placeholder} *` : this.placeholder;\n }\n\n /**\n * placeholder?: string\n * Placeholder for the autocomplete input.\n */\n @Input('placeholder') placeholder: string;\n\n /**\n * debounce?: number\n * Debounce timeout between keypresses. Defaults to 200.\n */\n @Input('debounce') debounce: number = 200;\n\n /**\n * color?: 'primary' | 'accent' | 'warn'\n * Sets the color for the input and focus/selected state of the chips.\n * Defaults to 'primary'\n */\n @Input('color')\n set color(color: 'primary' | 'accent' | 'warn') {\n if (color) {\n this._renderer.removeClass(this._elementRef.nativeElement, 'mat-' + this._color);\n this._color = color;\n this._renderer.addClass(this._elementRef.nativeElement, 'mat-' + this._color);\n }\n }\n get color(): 'primary' | 'accent' | 'warn' {\n return this._color;\n }\n\n /**\n * add?: function\n * Method to be executed when a chip is added.\n * Sends chip value as event.\n */\n @Output('add') onAdd: EventEmitter<any> = new EventEmitter<any>();\n\n /**\n * remove?: function\n * Method to be executed when a chip is removed.\n * Sends chip value as event.\n */\n @Output('remove') onRemove: EventEmitter<any> = new EventEmitter<any>();\n\n /**\n * inputChange?: function\n * Method to be executed when the value in the autocomplete input changes.\n * Sends string value as event.\n */\n @Output('inputChange') onInputChange: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * chipFocus?: function\n * Method to be executed when a chip is focused.\n * Sends chip value as event.\n */\n @Output('chipFocus') onChipFocus: EventEmitter<any> = new EventEmitter<any>();\n\n /**\n * blur?: function\n * Method to be executed when a chip is blurred.\n * Sends chip value as event.\n */\n @Output('chipBlur') onChipBlur: EventEmitter<any> = new EventEmitter<any>();\n\n /**\n * Hostbinding to set the a11y of the TdChipsComponent depending on its state\n */\n @HostBinding('attr.tabindex')\n get tabIndex(): number {\n return this.disabled ? -1 : this._tabIndex;\n }\n\n constructor(private _elementRef: ElementRef,\n private _renderer: Renderer2,\n @Optional() @Inject(DOCUMENT) private _document: any,\n _changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n this._renderer.addClass(this._elementRef.nativeElement, 'mat-' + this._color);\n }\n\n /**\n * compareWith? function\n * Function used to check whether a chip value already exists.\n * Defaults to strict equality comparison ===\n */\n @Input('compareWith') compareWith: (o1: any, o2: any) => boolean = (o1: any, o2: any) => {\n return o1 === o2;\n }\n\n /**\n * Listens to host focus event to act on it\n */\n @HostListener('focus', ['$event'])\n focusListener(event: FocusEvent): void {\n // should only focus if its not via mousedown to prevent clashing with autocomplete\n if (!this._isMousedown) {\n this.focus();\n }\n event.preventDefault();\n }\n\n /**\n * Listens to host mousedown event to act on it\n */\n @HostListener('mousedown', ['$event'])\n mousedownListener(event: FocusEvent): void {\n // sets a flag to know if there was a mousedown and then it returns it back to false\n this._isMousedown = true;\n timer().toPromise().then(() => {\n this._isMousedown = false;\n });\n }\n\n /**\n * If clicking on :host or `td-chips-wrapper`, then we stop the click propagation so the autocomplete\n * doesnt close automatically.\n */\n @HostListener('click', ['$event'])\n clickListener(event: Event): void {\n const clickTarget: HTMLElement = <HTMLElement>event.target;\n if (clickTarget === this._elementRef.nativeElement ||\n clickTarget.className.indexOf('td-chips-wrapper') > -1) {\n this.focus();\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n /**\n * Listens to host keydown event to act on it depending on the keypress\n */\n @HostListener('keydown', ['$event'])\n keydownListener(event: KeyboardEvent): void {\n switch (event.keyCode) {\n case TAB:\n // if tabing out, then unfocus the component\n timer().toPromise().then(() => {\n this.removeFocusedState();\n });\n break;\n case ESCAPE:\n if (this._inputChild.focused) {\n this._nativeInput.nativeElement.blur();\n this.removeFocusedState();\n this._closeAutocomplete();\n } else {\n this.focus();\n }\n break;\n default:\n // default\n }\n }\n\n ngOnInit(): void {\n this._inputValueChangesSubs = this.inputControl.valueChanges.pipe(\n debounceTime(this.debounce),\n ).subscribe((value: string) => {\n this.onInputChange.emit(value ? value : '');\n });\n this._changeDetectorRef.markForCheck();\n }\n\n ngAfterViewInit(): void {\n this._watchOutsideClick();\n this._changeDetectorRef.markForCheck();\n }\n\n ngDoCheck(): void {\n // Throw onChange event only if array changes size.\n if (this.value && this.value.length !== this._length) {\n this._length = this.value.length;\n this.onChange(this.value);\n }\n }\n\n ngOnDestroy(): void {\n this._outsideClickSubs.unsubscribe();\n this._inputValueChangesSubs.unsubscribe();\n }\n\n _setInternalClick(): void {\n this._internalClick = true;\n }\n\n /** Method executed when the disabled value changes */\n onDisabledChange(v: boolean): void {\n this._toggleInput();\n }\n\n /**\n * Method that is executed when trying to create a new chip from the autocomplete.\n * It check if [requireMatch] is enabled, and tries to add the first active option\n * else if just adds the value thats on the input\n * returns 'true' if successful, 'false' if it fails.\n */\n _handleAddChip(): boolean {\n let value: any;\n if (this.requireMatch) {\n let selectedOptions: MatOption[] = this._options.toArray().filter((option: MatOption) => {\n return option.active;\n });\n if (selectedOptions.length > 0) {\n value = selectedOptions[0].value;\n selectedOptions[0].setInactiveStyles();\n }\n if (!value) {\n return false;\n }\n } else {\n // if there is a selection, then use that\n // else use the input value as chip\n if (this._autocompleteTrigger.activeOption) {\n value = this._autocompleteTrigger.activeOption.value;\n this._autocompleteTrigger.activeOption.setInactiveStyles();\n } else {\n value = this._inputChild.value;\n if (value.trim() === '') {\n return false;\n }\n }\n }\n return this.addChip(value);\n }\n\n /**\n * Method thats exectuted when trying to add a value as chip\n * returns 'true' if successful, 'false' if it fails.\n */\n addChip(value: any): boolean {\n /**\n * add a debounce ms delay when reopening the autocomplete to give it time\n * to rerender the next list and at the correct spot\n */\n\n this._closeAutocomplete();\n timer(this.debounce).toPromise().then(() => {\n this.setFocusedState();\n this._setFirstOptionActive();\n this._openAutocomplete();\n });\n\n this.inputControl.setValue('');\n // check if value is already part of the model\n if (this.value.findIndex((item: any) => this.compareWith(item, value)) > -1) {\n return false;\n }\n\n this.value.push(value);\n this.onAdd.emit(value);\n this.onChange(this.value);\n this._changeDetectorRef.markForCheck();\n return true;\n }\n\n /**\n * Method that is executed when trying to remove a chip.\n * returns 'true' if successful, 'false' if it fails.\n */\n removeChip(index: number): boolean {\n let removedValues: any[] = this.value.splice(index, 1);\n if (removedValues.length === 0) {\n return false;\n }\n\n /**\n * Checks if deleting last single chip, to focus input afterwards\n * Else check if its not the last chip of the list to focus the next one.\n */\n if (index === (this._totalChips - 1) && index === 0) {\n this._inputChild.focus();\n } else if (index < (this._totalChips - 1)) {\n this._focusChip(index + 1);\n } else if (index > 0) {\n this._focusChip(index - 1);\n }\n\n this.onRemove.emit(removedValues[0]);\n this.onChange(this.value);\n this.inputControl.setValue('');\n this._changeDetectorRef.markForCheck();\n return true;\n }\n\n /**\n * Sets blur of chip and sends out event\n */\n _handleChipBlur(event: FocusEvent, value: any): void {\n this.onChipBlur.emit(value);\n }\n\n /**\n * Sets focus of chip and sends out event\n */\n _handleChipFocus(event: FocusEvent, value: any): void {\n this.setFocusedState();\n this.onChipFocus.emit(value);\n }\n\n _handleFocus(): boolean {\n this.setFocusedState();\n this._setFirstOptionActive();\n return true;\n }\n\n /**\n * Sets focus state of the component\n */\n setFocusedState(): void {\n if (!this.disabled) {\n this._focused = true;\n this._tabIndex = -1;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Removes focus state of the component\n */\n removeFocusedState(): void {\n this._focused = false;\n this._tabIndex = 0;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Programmatically focus the input or first chip. Since its the component entry point\n * depending if a user can add or remove chips\n */\n focus(): void {\n if (this.canAddChip) {\n this._inputChild.focus();\n } else if (!this.disabled) {\n this._focusFirstChip();\n }\n }\n\n /**\n * Passes relevant input key presses.\n */\n _inputKeydown(event: KeyboardEvent): void {\n switch (event.keyCode) {\n case UP_ARROW:\n /**\n * Since the first item is highlighted on [requireMatch], we need to inactivate it\n * when pressing the up key\n */\n if (this.requireMatch) {\n let length: number = this._options.length;\n if (length > 1 && this._options.toArray()[0].active && this._internalActivateOption) {\n this._options.toArray()[0].setInactiveStyles();\n this._internalActivateOption = false;\n // prevent default window scrolling\n event.preventDefault();\n }\n }\n break;\n case LEFT_ARROW:\n case DELETE:\n case BACKSPACE:\n this._closeAutocomplete();\n /** Check to see if input is empty when pressing left arrow to move to the last chip */\n if (!this._inputChild.value) {\n this._focusLastChip();\n // prevent default window scrolling\n event.preventDefault();\n }\n break;\n case RIGHT_ARROW:\n this._closeAutocomplete();\n /** Check to see if input is empty when pressing right arrow to move to the first chip */\n if (!this._inputChild.value) {\n this._focusFirstChip();\n // prevent default window scrolling\n event.preventDefault();\n }\n break;\n default:\n // default\n }\n }\n\n /**\n * Passes relevant chip key presses.\n */\n _chipKeydown(event: KeyboardEvent, index: number): void {\n switch (event.keyCode) {\n case DELETE:\n case BACKSPACE:\n /** Check to see if we can delete a chip */\n if (this.canRemoveChip) {\n this.removeChip(index);\n }\n break;\n case UP_ARROW:\n case LEFT_ARROW:\n /**\n * Check to see if left/down arrow was pressed while focusing the first chip to focus input next\n * Also check if input should be focused\n */\n if (index === 0) {\n // only try to target input if pressing left\n if (this.canAddChip && event.keyCode === LEFT_ARROW) {\n this._inputChild.focus();\n } else {\n this._focusLastChip();\n }\n } else if (index > 0) {\n this._focusChip(index - 1);\n }\n // prevent default window scrolling\n event.preventDefault();\n break;\n case DOWN_ARROW:\n case RIGHT_ARROW:\n /**\n * Check to see if right/up arrow was pressed while focusing the last chip to focus input next\n * Also check if input should be focused\n */\n if (index === (this._totalChips - 1)) {\n // only try to target input if pressing right\n if (this.canAddChip && event.keyCode === RIGHT_ARROW) {\n this._inputChild.focus();\n } else {\n this._focusFirstChip();\n }\n } else if (index < (this._totalChips - 1)) {\n this._focusChip(index + 1);\n }\n // prevent default window scrolling\n event.preventDefault();\n break;\n default:\n // default\n }\n }\n\n /**\n * Method to remove from display the value added from the autocomplete since it goes directly as chip.\n */\n _removeInputDisplay(): string {\n return '';\n }\n\n /**\n * Method to open the autocomplete manually if its not already opened\n */\n _openAutocomplete(): void {\n if (!this._autocompleteTrigger.panelOpen) {\n this._autocompleteTrigger.openPanel();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Method to close the autocomplete manually if its not already closed\n */\n _closeAutocomplete(): void {\n if (this._autocompleteTrigger.panelOpen) {\n this._autocompleteTrigger.closePanel();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Get total of chips\n */\n get _totalChips(): number {\n let chips: MatChip[] = this._chipsChildren.toArray();\n return chips.length;\n }\n\n /**\n * Method to focus a desired chip by index\n */\n private _focusChip(index: number): void {\n /** check to see if index exists in the array before focusing */\n if (index > -1 && this._totalChips > index) {\n this._chipsChildren.toArray()[index].focus();\n }\n }\n\n /** Method to focus first chip */\n private _focusFirstChip(): void {\n this._focusChip(0);\n }\n\n /** Method to focus last chip */\n private _focusLastChip(): void {\n this._focusChip(this._totalChips - 1);\n }\n\n /**\n * Method to toggle the disable state of input\n * Checks if not in disabled state and if chipAddition is set to 'true'\n */\n private _toggleInput(): void {\n if (this.canAddChip) {\n this.inputControl.enable();\n } else {\n this.inputControl.disable();\n }\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Sets first option as active to let the user know which one will be added when pressing enter\n * Only if [requireMatch] has been set\n */\n private _setFirstOptionActive(): void {\n if (this.requireMatch) {\n // need to use a timer here to wait until the autocomplete has been opened (end of queue)\n timer().toPromise().then(() => {\n if (this.focused && this._options && this._options.length > 0) {\n // clean up of previously active options\n this._options.toArray().forEach((option: MatOption) => {\n option.setInactiveStyles();\n });\n // set the first one as active\n this._options.toArray()[0].setActiveStyles();\n this._internalActivateOption = true;\n this._changeDetectorRef.markForCheck();\n }\n });\n }\n }\n\n /**\n * Watches clicks outside of the component to remove the focus\n * The autocomplete panel is considered inside the component so we\n * need to use a flag to find out when its clicked.\n */\n private _watchOutsideClick(): void {\n if (this._document) {\n this._outsideClickSubs = merge(\n fromEvent(this._document, 'click'),\n fromEvent(this._document, 'touchend'),\n ).pipe(\n debounceTime(this._touchendDebounce),\n filter(\n (event: MouseEvent) => {\n const clickTarget: HTMLElement = <HTMLElement>event.target;\n setTimeout(() => {\n this._internalClick = false;\n });\n return this.focused &&\n (clickTarget !== this._elementRef.nativeElement) &&\n !this._elementRef.nativeElement.contains(clickTarget) && !this._internalClick;\n },\n ),\n ).subscribe(() => {\n if (this.focused) {\n this._autocompleteTrigger.closePanel();\n this.removeFocusedState();\n this.onTouched();\n this._changeDetectorRef.markForCheck();\n }\n });\n }\n return undefined;\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatChipsModule } from '@angular/material/chips';\n\nimport { TdChipsComponent, TdChipDirective, TdAutocompleteOptionDirective } from './chips.component';\n\n@NgModule({\n imports: [\n ReactiveFormsModule,\n CommonModule,\n MatInputModule,\n MatIconModule,\n MatChipsModule,\n MatAutocompleteModule,\n ],\n declarations: [\n TdChipsComponent,\n TdChipDirective,\n TdAutocompleteOptionDirective,\n ],\n exports: [\n TdChipsComponent,\n TdChipDirective,\n TdAutocompleteOptionDirective,\n ],\n})\nexport class CovalentChipsModule {\n\n}\n","import { Component, Input, Output, Renderer2, ElementRef, ContentChildren, QueryList, HostListener } from '@angular/core';\n\nimport { TdDataTableCellComponent } from '../data-table-cell/data-table-cell.component';\nimport { TdDataTableColumnComponent } from '../data-table-column/data-table-column.component';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'tr[td-data-table-column-row]',\n styleUrls: ['./data-table-row.component.scss' ],\n templateUrl: './data-table-row.component.html',\n})\nexport class TdDataTableColumnRowComponent {\n\n constructor(protected _elementRef: ElementRef, protected _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-column-row');\n }\n\n}\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'tr[td-data-table-row]',\n styleUrls: ['./data-table-row.component.scss' ],\n templateUrl: './data-table-row.component.html',\n})\nexport class TdDataTableRowComponent {\n\n private _selected: boolean = false;\n\n @Input('selected')\n set selected(selected: boolean) {\n if (selected) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-selected');\n } else {\n this._renderer.removeClass(this._elementRef.nativeElement, 'td-selected');\n }\n this._selected = selected;\n }\n get selected(): boolean {\n return this._selected;\n }\n\n get height(): number {\n let height: number = 48;\n if (this._elementRef.nativeElement) {\n height = (<HTMLElement>this._elementRef.nativeElement).getBoundingClientRect().height;\n }\n return height;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-row');\n }\n\n /**\n * Listening to click event to explicitly focus the row element.\n */\n @HostListener('click')\n clickListener(): void {\n this.focus();\n }\n\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n}\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\n\n@Directive({selector: '[tdDataTableTemplate]ng-template'})\nexport class TdDataTableTemplateDirective extends TemplatePortalDirective {\n\n @Input() tdDataTableTemplate: string;\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n","import { Component, Input, Output, EventEmitter, forwardRef, ChangeDetectionStrategy,\n ChangeDetectorRef, ViewChild, OnDestroy, AfterViewInit,\n ContentChildren, TemplateRef, AfterContentInit, QueryList, Inject,\n Optional, ViewChildren, ElementRef, OnInit, AfterContentChecked } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ENTER, SPACE, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';\n\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { TdDataTableRowComponent } from './data-table-row/data-table-row.component';\nimport { ITdDataTableSortChangeEvent, TdDataTableColumnComponent } from './data-table-column/data-table-column.component';\nimport { TdDataTableTemplateDirective } from './directives/data-table-template.directive';\n\nimport { IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\nexport enum TdDataTableSortingOrder {\n Ascending = 'ASC',\n Descending = 'DESC',\n}\n\nexport interface ITdDataTableColumnWidth {\n min?: number;\n max?: number;\n}\n\nexport interface ITdDataTableColumn {\n name: string;\n label: string;\n tooltip?: string;\n numeric?: boolean;\n format?: (value: any) => any;\n nested?: boolean;\n sortable?: boolean;\n hidden?: boolean;\n filter?: boolean;\n width?: ITdDataTableColumnWidth | number;\n}\n\nexport interface ITdDataTableSelectEvent {\n row: any;\n selected: boolean;\n index: number;\n}\n\nexport interface ITdDataTableSelectAllEvent {\n rows: any[];\n selected: boolean;\n}\n\nexport interface ITdDataTableRowClickEvent {\n row: any;\n index: number;\n}\n\nexport interface IInternalColumnWidth {\n value: number;\n limit: boolean;\n index: number;\n min?: boolean;\n max?: boolean;\n}\n\n/**\n * Constant to set the rows offset before and after the viewport\n */\nconst TD_VIRTUAL_OFFSET: number = 2;\n\n/**\n * Constant to set default row height if none is provided\n */\nconst TD_VIRTUAL_DEFAULT_ROW_HEIGHT: number = 48;\n\nexport class TdDataTableBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdDataTableMixinBase = mixinControlValueAccessor(TdDataTableBase, []);\n\n@Component({\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdDataTableComponent),\n multi: true,\n }],\n selector: 'td-data-table',\n styleUrls: ['./data-table.component.scss' ],\n templateUrl: './data-table.component.html',\n inputs: ['value'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdDataTableComponent extends _TdDataTableMixinBase implements IControlValueAccessor, OnInit,\n AfterContentInit, AfterContentChecked, AfterViewInit, OnDestroy {\n\n /** responsive width calculations */\n private _resizeSubs: Subscription;\n private _rowsChangedSubs: Subscription;\n private _hostWidth: number = 0;\n\n /** manually resizable columns */\n private _resizableColumns: boolean = false;\n private _columnClientX: number = 0;\n private _columnResizeSubs: Subscription;\n private _resizingColumn: number;\n private _onColumnResize: Subject<number> = new Subject<number>();\n\n get resizingColumn(): number {\n return this._resizingColumn;\n }\n\n get hostWidth(): number {\n // if the checkboxes are rendered, we need to remove their width\n // from the total width to calculate properly\n if (this.selectable) {\n return this._hostWidth - 42;\n }\n return this._hostWidth;\n }\n\n private _widths: IInternalColumnWidth[] = [];\n private _onResize: Subject<void> = new Subject<void>();\n\n /** column header reposition and viewpoort */\n private _verticalScrollSubs: Subscription;\n private _horizontalScrollSubs: Subscription;\n private _scrollHorizontalOffset: number = 0;\n\n private _onHorizontalScroll: Subject<number> = new Subject<number>();\n private _onVerticalScroll: Subject<number> = new Subject<number>();\n\n // Array of cached row heights to allow dynamic row heights\n private _rowHeightCache: number[] = [];\n // Total pseudo height of all the elements\n private _totalHeight: number = 0;\n // Total host height for the viewport\n private _hostHeight: number = 0;\n // Scrolled vertical pixels\n private _scrollVerticalOffset: number = 0;\n // Style to move the content a certain offset depending on scrolled offset\n private _offsetTransform: SafeStyle;\n\n // Variables that set from and to which rows will be rendered\n private _fromRow: number = 0;\n private _toRow: number = 0;\n\n /**\n * Returns the offset style with a proper calculation on how much it should move\n * over the y axis of the total height\n */\n get offsetTransform(): SafeStyle {\n return this._offsetTransform;\n }\n\n /**\n * Returns the assumed total height of the rows\n */\n get totalHeight(): number {\n return this._totalHeight;\n }\n\n /**\n * Returns the initial row to render in the viewport\n */\n get fromRow(): number {\n return this._fromRow;\n }\n\n /**\n * Returns the last row to render in the viewport\n */\n get toRow(): number {\n return this._toRow;\n }\n\n private _valueChangesSubs: Subscription;\n /** internal attributes */\n private _data: any[];\n // data virtually iterated by component\n private _virtualData: any[];\n private _columns: ITdDataTableColumn[];\n private _selectable: boolean = false;\n private _clickable: boolean = false;\n private _multiple: boolean = true;\n private _allSelected: boolean = false;\n private _indeterminate: boolean = false;\n\n /** sorting */\n private _sortable: boolean = false;\n private _sortBy: ITdDataTableColumn;\n private _sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending;\n\n /** shift select */\n private _shiftPreviouslyPressed: boolean = false;\n private _lastSelectedIndex: number = -1;\n private _firstSelectedIndex: number = -1;\n private _firstCheckboxValue: boolean = false;\n\n /** template fetching support */\n private _templateMap: Map<string, TemplateRef<any>> = new Map<string, TemplateRef<any>>();\n @ContentChildren(TdDataTableTemplateDirective) _templates: QueryList<TdDataTableTemplateDirective>;\n\n @ViewChild('scrollableDiv') _scrollableDiv: ElementRef;\n\n @ViewChildren('columnElement') _colElements: QueryList<TdDataTableColumnComponent>;\n\n @ViewChildren(TdDataTableRowComponent) _rows: QueryList<TdDataTableRowComponent>;\n\n /**\n * Returns scroll position to reposition column headers\n */\n get columnsLeftScroll(): number {\n return this._scrollHorizontalOffset * -1;\n }\n\n /**\n * Returns true if all values are selected.\n */\n get allSelected(): boolean {\n return this._allSelected;\n }\n\n /**\n * Returns true if all values are not deselected\n * and at least one is.\n */\n get indeterminate(): boolean {\n return this._indeterminate;\n }\n\n /**\n * data?: {[key: string]: any}[]\n * Sets the data to be rendered as rows.\n */\n @Input('data')\n set data(data: any[]) {\n this._data = data;\n this._rowHeightCache = [];\n Promise.resolve().then(() => {\n this.refresh();\n // scroll back to the top if the data has changed\n this._scrollableDiv.nativeElement.scrollTop = 0;\n });\n }\n get data(): any[] {\n return this._data;\n }\n\n get virtualData(): any[] {\n return this._virtualData;\n }\n\n /**\n * columns?: ITdDataTableColumn[]\n * Sets additional column configuration. [ITdDataTableColumn.name] has to exist in [data] as key.\n * Defaults to [data] keys.\n */\n @Input('columns')\n set columns(cols: ITdDataTableColumn[]) {\n this._columns = cols;\n }\n get columns(): ITdDataTableColumn[] {\n if (this._columns) {\n return this._columns;\n }\n\n if (this.hasData) {\n this._columns = [];\n // if columns is undefined, use key in [data] rows as name and label for column headers.\n let row: any = this._data[0];\n Object.keys(row).forEach((k: string) => {\n if (!this._columns.find((c: any) => c.name === k)) {\n this._columns.push({ name: k, label: k });\n }\n });\n return this._columns;\n } else {\n return [];\n }\n }\n\n /**\n * resizableColumns?: boolean\n * Enables manual column resize.\n * Defaults to 'false'\n */\n @Input('resizableColumns')\n set resizableColumns(resizableColumns: boolean) {\n this._resizableColumns = coerceBooleanProperty(resizableColumns);\n }\n get resizableColumns(): boolean {\n return this._resizableColumns;\n }\n\n /**\n * selectable?: boolean\n * Enables row selection events, hover and selected row states.\n * Defaults to 'false'\n */\n @Input('selectable')\n set selectable(selectable: boolean) {\n this._selectable = coerceBooleanProperty(selectable);\n }\n get selectable(): boolean {\n return this._selectable;\n }\n\n /**\n * clickable?: boolean\n * Enables row click events, hover.\n * Defaults to 'false'\n */\n @Input('clickable')\n set clickable(clickable: boolean) {\n this._clickable = coerceBooleanProperty(clickable);\n }\n get clickable(): boolean {\n return this._clickable;\n }\n\n /**\n * multiple?: boolean\n * Enables multiple row selection. [selectable] needs to be enabled.\n * Defaults to 'false'\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * sortable?: boolean\n * Enables sorting events, sort icons and active column states.\n * Defaults to 'false'\n */\n @Input('sortable')\n set sortable(sortable: boolean) {\n this._sortable = coerceBooleanProperty(sortable);\n }\n get sortable(): boolean {\n return this._sortable;\n }\n\n /**\n * sortBy?: string\n * Sets the active sort column. [sortable] needs to be enabled.\n */\n @Input('sortBy')\n set sortBy(columnName: string) {\n if (!columnName) {\n return;\n }\n const column: ITdDataTableColumn = this.columns.find((c: any) => c.name === columnName);\n if (!column) {\n throw new Error('[sortBy] must be a valid column name');\n }\n\n this._sortBy = column;\n }\n get sortByColumn(): ITdDataTableColumn {\n return this._sortBy;\n }\n\n /**\n * sortOrder?: ['ASC' | 'DESC'] or TdDataTableSortingOrder\n * Sets the sort order of the [sortBy] column. [sortable] needs to be enabled.\n * Defaults to 'ASC' or TdDataTableSortingOrder.Ascending\n */\n @Input('sortOrder')\n set sortOrder(order: 'ASC' | 'DESC') {\n let sortOrder: string = order ? order.toUpperCase() : 'ASC';\n if (sortOrder !== 'DESC' && sortOrder !== 'ASC') {\n throw new Error('[sortOrder] must be empty, ASC or DESC');\n }\n\n this._sortOrder = sortOrder === 'ASC' ?\n TdDataTableSortingOrder.Ascending : TdDataTableSortingOrder.Descending;\n }\n get sortOrderEnum(): TdDataTableSortingOrder {\n return this._sortOrder;\n }\n\n get hasData(): boolean {\n return this._data && this._data.length > 0;\n }\n\n /**\n * sortChange?: function\n * Event emitted when the column headers are clicked. [sortable] needs to be enabled.\n * Emits an [ITdDataTableSortChangeEvent] implemented object.\n */\n @Output('sortChange') onSortChange: EventEmitter<ITdDataTableSortChangeEvent> =\n new EventEmitter<ITdDataTableSortChangeEvent>();\n\n /**\n * rowSelect?: function\n * Event emitted when a row is selected/deselected. [selectable] needs to be enabled.\n * Emits an [ITdDataTableSelectEvent] implemented object.\n */\n @Output('rowSelect') onRowSelect: EventEmitter<ITdDataTableSelectEvent> = new EventEmitter<ITdDataTableSelectEvent>();\n\n /**\n * rowClick?: function\n * Event emitted when a row is clicked.\n * Emits an [ITdDataTableRowClickEvent] implemented object.\n */\n @Output('rowClick') onRowClick: EventEmitter<ITdDataTableRowClickEvent> = new EventEmitter<ITdDataTableRowClickEvent>();\n\n /**\n * selectAll?: function\n * Event emitted when all rows are selected/deselected by the all checkbox. [selectable] needs to be enabled.\n * Emits an [ITdDataTableSelectAllEvent] implemented object.\n */\n @Output('selectAll') onSelectAll: EventEmitter<ITdDataTableSelectAllEvent> =\n new EventEmitter<ITdDataTableSelectAllEvent>();\n\n constructor(@Optional() @Inject(DOCUMENT) private _document: any,\n private _elementRef: ElementRef,\n private _domSanitizer: DomSanitizer,\n _changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n }\n\n /**\n * compareWith?: function(row, model): boolean\n * Allows custom comparison between row and model to see if row is selected or not\n * Default comparation is by reference\n */\n @Input('compareWith') compareWith: (row: any, model: any) => boolean = (row: any, model: any) => {\n return row === model;\n }\n\n /**\n * Initialize observable for resize and scroll events\n */\n ngOnInit(): void {\n // initialize observable for resize calculations\n this._resizeSubs = this._onResize.asObservable().subscribe(() => {\n if (this._rows) {\n this._rows.toArray().forEach((row: TdDataTableRowComponent, index: number) => {\n this._rowHeightCache[this.fromRow + index] = row.height + 1;\n });\n }\n this._calculateWidths();\n this._calculateVirtualRows();\n });\n\n // initialize observable for column resize calculations\n this._columnResizeSubs = this._onColumnResize.asObservable().pipe(\n debounceTime(0),\n ).subscribe((clientX: number) => {\n this._columnClientX = clientX;\n this._calculateWidths();\n this._changeDetectorRef.markForCheck();\n });\n // initialize observable for scroll column header reposition\n this._horizontalScrollSubs = this._onHorizontalScroll.asObservable()\n .subscribe((horizontalScroll: number) => {\n this._scrollHorizontalOffset = horizontalScroll;\n this._changeDetectorRef.markForCheck();\n });\n // initialize observable for virtual scroll rendering\n this._verticalScrollSubs = this._onVerticalScroll.asObservable()\n .subscribe((verticalScroll: number) => {\n this._scrollVerticalOffset = verticalScroll;\n this._calculateVirtualRows();\n this._changeDetectorRef.markForCheck();\n });\n this._valueChangesSubs = this.valueChanges.subscribe((value: any) => {\n this.refresh();\n });\n }\n\n /**\n * Loads templates and sets them in a map for faster access.\n */\n ngAfterContentInit(): void {\n for (let i: number = 0; i < this._templates.toArray().length; i++) {\n this._templateMap.set(\n this._templates.toArray()[i].tdDataTableTemplate,\n this._templates.toArray()[i].templateRef,\n );\n }\n }\n\n /**\n * Checks hosts native elements widths to see if it has changed (resize check)\n */\n ngAfterContentChecked(): void {\n // check if the scroll has been reset when element is hidden\n if (this._scrollVerticalOffset - this._scrollableDiv.nativeElement.scrollTop > 5) {\n // scroll back to the top if element has been reset\n this._onVerticalScroll.next(0);\n }\n if (this._elementRef.nativeElement) {\n let newHostWidth: number = this._elementRef.nativeElement.getBoundingClientRect().width;\n // if the width has changed then we throw a resize event.\n if (this._hostWidth !== newHostWidth) {\n setTimeout(() => {\n this._hostWidth = newHostWidth;\n this._onResize.next();\n }, 0);\n }\n }\n if (this._scrollableDiv.nativeElement) {\n let newHostHeight: number = this._scrollableDiv.nativeElement.getBoundingClientRect().height;\n // if the height of the viewport has changed, then we mark for check\n if (this._hostHeight !== newHostHeight) {\n this._hostHeight = newHostHeight;\n this._calculateVirtualRows();\n this._changeDetectorRef.markForCheck();\n }\n }\n }\n\n /**\n * Registers to an observable that checks if all rows have been rendered\n * so we can start calculating the widths\n */\n ngAfterViewInit(): void {\n this._rowsChangedSubs = this._rows.changes.pipe(\n debounceTime(0),\n ).subscribe(() => {\n this._onResize.next();\n });\n this._calculateVirtualRows();\n }\n\n /**\n * Unsubscribes observables when data table is destroyed\n */\n ngOnDestroy(): void {\n if (this._resizeSubs) {\n this._resizeSubs.unsubscribe();\n }\n if (this._columnResizeSubs) {\n this._columnResizeSubs.unsubscribe();\n }\n if (this._horizontalScrollSubs) {\n this._horizontalScrollSubs.unsubscribe();\n }\n if (this._verticalScrollSubs) {\n this._verticalScrollSubs.unsubscribe();\n }\n if (this._rowsChangedSubs) {\n this._rowsChangedSubs.unsubscribe();\n }\n if (this._valueChangesSubs) {\n this._valueChangesSubs.unsubscribe();\n }\n }\n\n /**\n * Method that gets executed every time there is a scroll event\n * Calls the scroll observable\n */\n handleScroll(event: Event): void {\n let element: HTMLElement = (<HTMLElement>event.target);\n if (element) {\n let horizontalScroll: number = element.scrollLeft;\n if (this._scrollHorizontalOffset !== horizontalScroll) {\n this._onHorizontalScroll.next(horizontalScroll);\n }\n let verticalScroll: number = element.scrollTop;\n if (this._scrollVerticalOffset !== verticalScroll) {\n this._onVerticalScroll.next(verticalScroll);\n }\n }\n }\n\n /**\n * Returns the width needed for the columns via index\n */\n getColumnWidth(index: number): number {\n if (this._widths[index]) {\n return this._widths[index].value;\n }\n return undefined;\n }\n\n getCellValue(column: ITdDataTableColumn, value: any): string {\n if (column.nested === undefined || column.nested) {\n return this._getNestedValue(column.name, value);\n }\n return value[column.name];\n }\n\n /**\n * Getter method for template references\n */\n getTemplateRef(name: string): TemplateRef<any> {\n return this._templateMap.get(name);\n }\n\n /**\n * Clears model (ngModel) of component by removing all values in array.\n */\n clearModel(): void {\n this.value.splice(0, this.value.length);\n }\n\n /**\n * Refreshes data table and rerenders [data] and [columns]\n */\n refresh(): void {\n this._calculateVirtualRows();\n this._calculateWidths();\n this._calculateCheckboxState();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Selects or clears all rows depending on 'checked' value.\n */\n selectAll(checked: boolean): void {\n let toggledRows: any[] = [];\n if (checked) {\n this._data.forEach((row: any) => {\n // skiping already selected rows\n if (!this.isRowSelected(row)) {\n this.value.push(row);\n // checking which ones are being toggled\n toggledRows.push(row);\n }\n });\n this._allSelected = true;\n this._indeterminate = true;\n } else {\n this._data.forEach((row: any) => {\n // checking which ones are being toggled\n if (this.isRowSelected(row)) {\n toggledRows.push(row);\n let modelRow: any = this.value.filter((val: any) => {\n return this.compareWith(row, val);\n })[0];\n let index: number = this.value.indexOf(modelRow);\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n });\n this._allSelected = false;\n this._indeterminate = false;\n }\n this.onSelectAll.emit({rows: toggledRows, selected: checked});\n this.onChange(this.value);\n }\n\n /**\n * Checks if row is selected\n */\n isRowSelected(row: any): boolean {\n // compare items by [compareWith] function\n return this.value ? this.value.filter((val: any) => {\n return this.compareWith(row, val);\n }).length > 0 : false;\n }\n\n /**\n * Selects or clears a row depending on 'checked' value if the row 'isSelectable'\n * handles cntrl clicks and shift clicks for multi-select\n */\n select(row: any, event: Event, currentSelected: number): void {\n if (this.selectable) {\n this.blockEvent(event);\n // Check to see if Shift key is selected and need to select everything in between\n let mouseEvent: MouseEvent = event as MouseEvent;\n if (this.multiple && mouseEvent && mouseEvent.shiftKey && this._lastSelectedIndex > -1) {\n let firstIndex: number = currentSelected;\n let lastIndex: number = this._lastSelectedIndex;\n if (currentSelected > this._lastSelectedIndex) {\n firstIndex = this._lastSelectedIndex;\n lastIndex = currentSelected;\n }\n // if clicking a checkbox behind the initial check, then toggle all selections expect the initial checkbox\n // else the checkboxes clicked are all after the initial one\n if ((this._firstSelectedIndex >= currentSelected && this._lastSelectedIndex > this._firstSelectedIndex) ||\n (this._firstSelectedIndex <= currentSelected && this._lastSelectedIndex < this._firstSelectedIndex)) {\n for (let i: number = firstIndex; i <= lastIndex; i++) {\n if (this._firstSelectedIndex !== i) {\n this._doSelection(this._data[i], i);\n }\n }\n } else if ((this._firstSelectedIndex > currentSelected) || (this._firstSelectedIndex < currentSelected)) {\n // change indexes depending on where the next checkbox is selected (before or after)\n if (this._firstSelectedIndex > currentSelected) {\n lastIndex--;\n } else if (this._firstSelectedIndex < currentSelected) {\n firstIndex++;\n }\n for (let i: number = firstIndex; i <= lastIndex; i++) {\n let rowSelected: boolean = this.isRowSelected(this._data[i]);\n // if row is selected and first checkbox was selected\n // or if row was unselected and first checkbox was unselected\n // we ignore the toggle\n if ((this._firstCheckboxValue && !rowSelected) ||\n (!this._firstCheckboxValue && rowSelected)) {\n this._doSelection(this._data[i], i);\n } else if (this._shiftPreviouslyPressed) {\n // else if the checkbox selected was in the middle of the last selection and the first selection\n // then we undo the selections\n if ((currentSelected >= this._firstSelectedIndex && currentSelected <= this._lastSelectedIndex) ||\n (currentSelected <= this._firstSelectedIndex && currentSelected >= this._lastSelectedIndex)) {\n this._doSelection(this._data[i], i);\n }\n }\n }\n }\n this._shiftPreviouslyPressed = true;\n // if shift wasnt pressed, then we take the element checked as the first row\n // incase the next click uses shift\n } else if (mouseEvent && !mouseEvent.shiftKey) {\n this._firstCheckboxValue = this._doSelection(row, currentSelected);\n this._shiftPreviouslyPressed = false;\n this._firstSelectedIndex = currentSelected;\n }\n this._lastSelectedIndex = currentSelected;\n }\n }\n\n /**\n * Overrides the onselectstart method of the document so other text on the page\n * doesn't get selected when doing shift selections.\n */\n disableTextSelection(): void {\n if (this._document) {\n this._document.onselectstart = function(): boolean {\n return false;\n };\n }\n }\n\n /**\n * Resets the original onselectstart method.\n */\n enableTextSelection(): void {\n if (this._document) {\n this._document.onselectstart = undefined;\n }\n }\n\n /**\n * emits the onRowClickEvent when a row is clicked\n * if clickable is true and selectable is false then select the row\n */\n handleRowClick(row: any, index: number, event: Event): void {\n if (this.clickable) {\n // ignoring linting rules here because attribute it actually null or not there\n // can't check for undefined\n const srcElement: any = event.srcElement || event.currentTarget;\n let element: HTMLElement = event.target as HTMLElement;\n /* tslint:disable-next-line */\n if (srcElement.getAttribute('stopRowClick') === null && element.tagName.toLowerCase() !== 'mat-pseudo-checkbox') {\n this.onRowClick.emit({\n row: row,\n index: index,\n });\n }\n }\n }\n\n /**\n * Method handle for sort click event in column headers.\n */\n handleSort(column: ITdDataTableColumn): void {\n if (this._sortBy === column) {\n this._sortOrder = this._sortOrder === TdDataTableSortingOrder.Ascending ?\n TdDataTableSortingOrder.Descending : TdDataTableSortingOrder.Ascending;\n } else {\n this._sortBy = column;\n this._sortOrder = TdDataTableSortingOrder.Ascending;\n }\n this.onSortChange.next({ name: this._sortBy.name, order: this._sortOrder });\n }\n\n /**\n * Handle all keyup events when focusing a data table row\n */\n _rowKeyup(event: KeyboardEvent, row: any, index: number): void {\n switch (event.keyCode) {\n case ENTER:\n case SPACE:\n /** if user presses enter or space, the row should be selected */\n if (this.selectable) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n case UP_ARROW:\n /**\n * if users presses the up arrow, we focus the prev row\n * unless its the first row\n */\n if (index > 0) {\n this._rows.toArray()[index - 1].focus();\n }\n this.blockEvent(event);\n if (this.selectable && this.multiple && event.shiftKey && this.fromRow + index >= 0) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n case DOWN_ARROW:\n /**\n * if users presses the down arrow, we focus the next row\n * unless its the last row\n */\n if (index < (this._rows.toArray().length - 1)) {\n this._rows.toArray()[index + 1].focus();\n }\n this.blockEvent(event);\n if (this.selectable && this.multiple && event.shiftKey && this.fromRow + index < this._data.length) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n default:\n // default\n }\n }\n\n /**\n * Sets column index of the dragged column and initial clientX of column\n */\n _handleStartColumnDrag(index: number, event: MouseEvent): void {\n this._columnClientX = event.clientX;\n this._resizingColumn = index;\n }\n\n /**\n * Calculates new width depending on new clientX of dragger column\n */\n _handleColumnDrag(event: MouseEvent | DragEvent): void {\n // check if there was been a separator clicked for resize\n if (this._resizingColumn !== undefined && event.clientX > 0) {\n let xPosition: number = event.clientX;\n // checks if the separator is being moved to try and resize the column, else dont do anything\n if (xPosition > 0 && this._columnClientX > 0 && (xPosition - this._columnClientX) !== 0) {\n // calculate the new width depending if making the column bigger or smaller\n let proposedManualWidth: number = this._widths[this._resizingColumn].value + (xPosition - this._columnClientX);\n // if the proposed new width is less than the projected min width of the column, use projected min width\n if (proposedManualWidth < this._colElements.toArray()[this._resizingColumn].projectedWidth) {\n proposedManualWidth = this._colElements.toArray()[this._resizingColumn].projectedWidth;\n }\n this.columns[this._resizingColumn].width = proposedManualWidth;\n // update new x position for the resized column\n this._onColumnResize.next(xPosition);\n }\n }\n }\n\n /**\n * Ends dragged flags\n */\n _handleEndColumnDrag(): void {\n this._columnClientX = undefined;\n this._resizingColumn = undefined;\n }\n\n /**\n * Method to prevent the default events\n */\n blockEvent(event: Event): void {\n event.preventDefault();\n }\n\n private _getNestedValue(name: string, value: any): string {\n if (!(value instanceof Object) || !name) {\n return value;\n }\n if (name.indexOf('.') > -1) {\n let splitName: string[] = name.split(/\\.(.+)/, 2);\n return this._getNestedValue(splitName[1], value[splitName[0]]);\n } else {\n return value[name];\n }\n }\n\n /**\n * Does the actual Row Selection\n */\n private _doSelection(row: any, rowIndex: number): boolean {\n let wasSelected: boolean = this.isRowSelected(row);\n if (!wasSelected) {\n if (!this._multiple) {\n this.clearModel();\n }\n this.value.push(row);\n } else {\n // compare items by [compareWith] function\n row = this.value.filter((val: any) => {\n return this.compareWith(row, val);\n })[0];\n let index: number = this.value.indexOf(row);\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n this._calculateCheckboxState();\n this.onRowSelect.emit({row: row, index: rowIndex, selected: !wasSelected});\n this.onChange(this.value);\n return !wasSelected;\n }\n\n /**\n * Calculate all the state of all checkboxes\n */\n private _calculateCheckboxState(): void {\n if (this._data) {\n this._allSelected = typeof this._data.find((d: any) => !this.isRowSelected(d)) === 'undefined';\n this._indeterminate = false;\n for (let row of this._data) {\n if (!this.isRowSelected(row)) {\n continue;\n }\n this._indeterminate = true;\n break;\n }\n }\n }\n\n /**\n * Calculates the widths for columns and cells depending on content\n */\n private _calculateWidths(): void {\n if (this._colElements && this._colElements.length) {\n this._widths = [];\n this._colElements.forEach((col: TdDataTableColumnComponent, index: number) => {\n this._adjustColumnWidth(index, this._calculateWidth());\n });\n this._adjustColumnWidhts();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Adjusts columns after calculation to see if they need to be recalculated.\n */\n private _adjustColumnWidhts(): void {\n let fixedTotalWidth: number = 0;\n // get the number of total columns that have flexible widths (not fixed or hidden)\n let flexibleWidths: number = this._widths.filter((width: IInternalColumnWidth, index: number) => {\n if (this.columns[index].hidden) {\n return false;\n }\n if (width.limit || width.max || width.min) {\n fixedTotalWidth += width.value;\n }\n return !width.limit && !width.max && !width.min;\n }).length;\n // calculate how much pixes are left that could be spread across\n // the flexible columns\n let recalculateHostWidth: number = 0;\n if (fixedTotalWidth < this.hostWidth) {\n recalculateHostWidth = this.hostWidth - fixedTotalWidth;\n }\n // if we have flexible columns and pixels to spare on them\n // we try and spread the pixels across them\n if (flexibleWidths && recalculateHostWidth) {\n let newValue: number = Math.floor(recalculateHostWidth / flexibleWidths);\n let adjustedNumber: number = 0;\n // adjust the column widths with the spread pixels\n this._widths.forEach((colWidth: IInternalColumnWidth) => {\n if (this._widths[colWidth.index].max && this._widths[colWidth.index].value > newValue ||\n this._widths[colWidth.index].min && this._widths[colWidth.index].value < newValue ||\n !this._widths[colWidth.index].limit) {\n this._adjustColumnWidth(colWidth.index, newValue);\n adjustedNumber++;\n }\n });\n // if there are still columns that need to be recalculated, we start over\n let newFlexibleWidths: number = this._widths.filter((width: IInternalColumnWidth) => {\n return !width.limit && !width.max;\n }).length;\n if (newFlexibleWidths !== adjustedNumber && newFlexibleWidths !== flexibleWidths) {\n this._adjustColumnWidhts();\n }\n }\n }\n\n /**\n * Adjusts a single column to see if it can be recalculated\n */\n private _adjustColumnWidth(index: number, value: number): void {\n this._widths[index] = {\n value: value,\n index: index,\n limit: false,\n min: false,\n max: false,\n };\n // flag to see if we need to skip the min width projection\n // depending if a width or min width has been provided\n let skipMinWidthProjection: boolean = false;\n if (this.columns[index]) {\n // if the provided width has min/max, then we check to see if we need to set it\n if (typeof this.columns[index].width === 'object') {\n let widthOpts: ITdDataTableColumnWidth = <ITdDataTableColumnWidth>this.columns[index].width;\n // if the column width is less than the configured min, we override it\n skipMinWidthProjection = (widthOpts && !!widthOpts.min);\n if (widthOpts && widthOpts.min >= this._widths[index].value) {\n this._widths[index].value = widthOpts.min;\n this._widths[index].min = true;\n // if the column width is more than the configured max, we override it\n } else if (widthOpts && widthOpts.max <= this._widths[index].value) {\n this._widths[index].value = widthOpts.max;\n this._widths[index].max = true;\n }\n // if it has a fixed width, then we just set it\n } else if (typeof this.columns[index].width === 'number') {\n this._widths[index].value = <number>this.columns[index].width;\n skipMinWidthProjection = this._widths[index].limit = true;\n }\n }\n // if there wasn't any width or min width provided, we set a min to what the column width min should be\n if (!skipMinWidthProjection &&\n this._widths[index].value < this._colElements.toArray()[index].projectedWidth) {\n this._widths[index].value = this._colElements.toArray()[index].projectedWidth;\n this._widths[index].min = true;\n this._widths[index].limit = false;\n }\n }\n\n /**\n * Generic method to calculate column width\n */\n private _calculateWidth(): number {\n let renderedColumns: ITdDataTableColumn[] = this.columns.filter((col: ITdDataTableColumn) => !col.hidden);\n return Math.floor(this.hostWidth / renderedColumns.length);\n }\n\n /**\n * Method to calculate the rows to be rendered in the viewport\n */\n private _calculateVirtualRows(): void {\n let scrolledRows: number = 0;\n if (this._data) {\n this._totalHeight = 0;\n let rowHeightSum: number = 0;\n // loop through all rows to see if we have their height cached\n // and sum them all to calculate the total height\n this._data.forEach((d: any, i: number) => {\n // iterate through all rows at first and assume all\n // rows are the same height as the first one\n if (!this._rowHeightCache[i]) {\n this._rowHeightCache[i] = this._rowHeightCache[0] || TD_VIRTUAL_DEFAULT_ROW_HEIGHT;\n }\n rowHeightSum += this._rowHeightCache[i];\n // check how many rows have been scrolled\n if (this._scrollVerticalOffset - rowHeightSum > 0) {\n scrolledRows++;\n }\n });\n this._totalHeight = rowHeightSum;\n // set the initial row to be rendered taking into account the row offset\n let fromRow: number = scrolledRows - TD_VIRTUAL_OFFSET;\n this._fromRow = fromRow > 0 ? fromRow : 0;\n\n let hostHeight: number = this._hostHeight;\n let index: number = 0;\n // calculate how many rows can fit in the viewport\n while (hostHeight > 0) {\n hostHeight -= this._rowHeightCache[this.fromRow + index];\n index++;\n }\n // set the last row to be rendered taking into account the row offset\n let range: number = (index - 1) + (TD_VIRTUAL_OFFSET * 2);\n let toRow: number = range + this.fromRow;\n // if last row is greater than the total length, then we use the total length\n if (isFinite(toRow) && toRow > this._data.length) {\n toRow = this._data.length;\n } else if (!isFinite(toRow)) {\n toRow = TD_VIRTUAL_OFFSET;\n }\n this._toRow = toRow;\n } else {\n this._totalHeight = 0;\n this._fromRow = 0;\n this._toRow = 0;\n }\n\n let offset: number = 0;\n // calculate the proper offset depending on how many rows have been scrolled\n if (scrolledRows > TD_VIRTUAL_OFFSET) {\n for (let index: number = 0; index < this.fromRow; index++) {\n offset += this._rowHeightCache[index];\n }\n }\n\n this._offsetTransform = this._domSanitizer.bypassSecurityTrustStyle('translateY(' + (offset - this.totalHeight) + 'px)');\n if (this._data) {\n this._virtualData = this.data.slice(this.fromRow, this.toRow);\n }\n // mark for check at the end of the queue so we are sure\n // that the changes will be marked\n Promise.resolve().then(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","import { Component, Input, Output, EventEmitter, Renderer2, ElementRef, HostBinding, HostListener, ViewChild } from '@angular/core';\n\nimport { TdDataTableSortingOrder } from '../data-table.component';\n\nexport interface ITdDataTableSortChangeEvent {\n order: TdDataTableSortingOrder;\n name: string;\n}\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'th[td-data-table-column]',\n styleUrls: ['./data-table-column.component.scss' ],\n templateUrl: './data-table-column.component.html',\n})\nexport class TdDataTableColumnComponent {\n\n private _sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending;\n\n @ViewChild('columnContent', {read: ElementRef}) _columnContent: ElementRef;\n\n get projectedWidth(): number {\n if (this._columnContent && this._columnContent.nativeElement) {\n return (<HTMLElement>this._columnContent.nativeElement).getBoundingClientRect().width;\n }\n return 100;\n }\n\n /**\n * name?: string\n * Sets unique column [name] for [sortable] events.\n */\n @Input('name') name: string = '';\n\n /**\n * sortable?: boolean\n * Enables sorting events, sort icons and active column states.\n * Defaults to 'false'\n */\n @Input('sortable') sortable: boolean = false;\n\n /**\n * active?: boolean\n * Sets column to active state when 'true'.\n * Defaults to 'false'\n */\n @Input('active') active: boolean = false;\n\n /**\n * numeric?: boolean\n * Makes column follow the numeric data-table specs and sort icon.\n * Defaults to 'false'\n */\n @Input('numeric') numeric: boolean = false;\n\n /**\n * sortOrder?: ['ASC' | 'DESC'] or TdDataTableSortingOrder\n * Sets the sort order of column.\n * Defaults to 'ASC' or TdDataTableSortingOrder.Ascending\n */\n @Input('sortOrder')\n set sortOrder(order: 'ASC' | 'DESC') {\n let sortOrder: string = order ? order.toUpperCase() : 'ASC';\n if (sortOrder !== 'DESC' && sortOrder !== 'ASC') {\n throw new Error('[sortOrder] must be empty, ASC or DESC');\n }\n\n this._sortOrder = sortOrder === 'ASC' ?\n TdDataTableSortingOrder.Ascending : TdDataTableSortingOrder.Descending;\n }\n\n /**\n * sortChange?: function\n * Event emitted when the column headers are clicked. [sortable] needs to be enabled.\n * Emits an [ITdDataTableSortChangeEvent] implemented object.\n */\n @Output('sortChange') onSortChange: EventEmitter<ITdDataTableSortChangeEvent> =\n new EventEmitter<ITdDataTableSortChangeEvent>();\n\n @HostBinding('class.mat-clickable')\n get bindClickable(): boolean {\n return this.sortable;\n }\n\n @HostBinding('class.mat-sortable')\n get bingSortable(): boolean {\n return this.sortable;\n }\n\n @HostBinding('class.mat-active')\n get bindActive(): boolean {\n return this.active;\n }\n\n @HostBinding('class.mat-numeric')\n get bindNumeric(): boolean {\n return this.numeric;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-column');\n }\n\n /**\n * Listening to click event on host to throw a sort event\n */\n @HostListener('click')\n handleClick(): void {\n if (this.sortable) {\n this.onSortChange.emit({name: this.name, order: this._sortOrder});\n }\n }\n\n isAscending(): boolean {\n return this._sortOrder === TdDataTableSortingOrder.Ascending;\n }\n\n isDescending(): boolean {\n return this._sortOrder === TdDataTableSortingOrder.Descending;\n }\n\n}\n","import { Component, Input, Renderer2, ElementRef, HostBinding } from '@angular/core';\n\nexport type TdDataTableCellAlign = 'start' | 'center' | 'end';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'td[td-data-table-cell]',\n styleUrls: ['./data-table-cell.component.scss' ],\n templateUrl: './data-table-cell.component.html',\n})\nexport class TdDataTableCellComponent {\n\n private _align: TdDataTableCellAlign;\n\n /**\n * numeric?: boolean\n * Makes cell follow the numeric data-table specs.\n * Defaults to 'false'\n */\n @Input('numeric') numeric: boolean = false;\n\n /**\n * align?: 'start' | 'center' | 'end'\n * Makes cell content align on demand\n * Defaults to 'left', overrides numeric\n */\n @Input() \n set align(align: TdDataTableCellAlign) {\n this._align = align;\n }\n get align(): TdDataTableCellAlign {\n return this._align; \n }\n\n @HostBinding('class.mat-numeric')\n get bindNumeric(): boolean {\n return this.numeric;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-cell');\n }\n\n}\n","import { Component, Renderer2, ElementRef } from '@angular/core';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'table[td-data-table]',\n styleUrls: ['./data-table-table.component.scss' ],\n templateUrl: './data-table-table.component.html',\n})\nexport class TdDataTableTableComponent {\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table');\n }\n\n}\n","import { Injectable, Provider, SkipSelf, Optional } from '@angular/core';\n\nimport { TdDataTableSortingOrder, ITdDataTableColumn } from '../data-table.component';\n\n@Injectable()\nexport class TdDataTableService {\n\n /**\n * params:\n * - data: any[]\n * - searchTerm: string\n * - ignoreCase: boolean = false\n * - excludedColumns: string[] = []\n *\n * Searches [data] parameter for [searchTerm] matches and returns a new array with them.\n */\n filterData(data: any[], searchTerm: string, ignoreCase: boolean = false, excludedColumns?: string[]): any[] {\n let filter: string = searchTerm ? (ignoreCase ? searchTerm.toLowerCase() : searchTerm) : '';\n if (filter) {\n data = data.filter((item: any) => {\n const res: any = Object.keys(item).find((key: string) => {\n if (!excludedColumns || excludedColumns.indexOf(key) === -1) {\n const preItemValue: string = ('' + item[key]);\n const itemValue: string = ignoreCase ? preItemValue.toLowerCase() : preItemValue;\n return itemValue.indexOf(filter) > -1;\n }\n });\n return !(typeof res === 'undefined');\n });\n }\n return data;\n }\n\n /**\n * params:\n * - data: any[]\n * - sortBy: string\n * - sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending\n *\n * Sorts [data] parameter by [sortBy] and [sortOrder] and returns the sorted data.\n */\n sortData(data: any[], sortBy: string, sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending): any[] {\n if (sortBy) {\n data = Array.from(data); // Change the array reference to trigger OnPush and not mutate original array\n data.sort((a: any, b: any) => {\n let compA: any = a[sortBy];\n let compB: any = b[sortBy];\n let direction: number = 0;\n if (!Number.isNaN(Number.parseFloat(compA)) && !Number.isNaN(Number.parseFloat(compB))) {\n direction = Number.parseFloat(compA) - Number.parseFloat(compB);\n } else {\n if (compA < compB) {\n direction = -1;\n } else if (compA > compB) {\n direction = 1;\n }\n }\n return direction * (sortOrder === TdDataTableSortingOrder.Descending ? -1 : 1);\n });\n }\n return data;\n }\n\n /**\n * params:\n * - data: any[]\n * - fromRow: number\n * - toRow: : number\n *\n * Returns a section of the [data] parameter starting from [fromRow] and ending in [toRow].\n */\n pageData(data: any[], fromRow: number, toRow: number): any[] {\n if (fromRow >= 1) {\n data = data.slice(fromRow - 1, toRow);\n }\n return data;\n }\n}\n\nexport function DATA_TABLE_PROVIDER_FACTORY(\n parent: TdDataTableService): TdDataTableService {\n return parent || new TdDataTableService();\n}\n\nexport const DATA_TABLE_PROVIDER: Provider = {\n // If there is already a service available, use that. Otherwise, provide a new one.\n provide: TdDataTableService,\n deps: [[new Optional(), new SkipSelf(), TdDataTableService]],\n useFactory: DATA_TABLE_PROVIDER_FACTORY,\n};\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatPseudoCheckboxModule } from '@angular/material/core';\n\nimport { TdDataTableComponent } from './data-table.component';\nimport { TdDataTableColumnComponent } from './data-table-column/data-table-column.component';\nimport { TdDataTableCellComponent } from './data-table-cell/data-table-cell.component';\nimport { TdDataTableRowComponent, TdDataTableColumnRowComponent } from './data-table-row/data-table-row.component';\nimport { TdDataTableTableComponent } from './data-table-table/data-table-table.component';\nimport { TdDataTableTemplateDirective } from './directives/data-table-template.directive';\n\nimport { DATA_TABLE_PROVIDER } from './services/data-table.service';\n\nconst TD_DATA_TABLE: Type<any>[] = [\n TdDataTableComponent,\n TdDataTableTemplateDirective,\n\n TdDataTableColumnComponent,\n TdDataTableCellComponent,\n TdDataTableRowComponent,\n TdDataTableColumnRowComponent,\n TdDataTableTableComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n MatCheckboxModule,\n MatTooltipModule,\n MatIconModule,\n MatPseudoCheckboxModule,\n ],\n declarations: [\n TD_DATA_TABLE,\n ],\n exports: [\n TD_DATA_TABLE,\n ],\n providers: [\n DATA_TABLE_PROVIDER,\n ],\n})\nexport class CovalentDataTableModule {\n\n}\n","import { Component, Directive, ContentChildren, QueryList, AfterContentInit } from '@angular/core';\n\n@Directive({selector: 'td-dialog-title'})\nexport class TdDialogTitleDirective {}\n\n@Directive({selector: 'td-dialog-content'})\nexport class TdDialogContentDirective {}\n\n@Directive({selector: 'td-dialog-actions'})\nexport class TdDialogActionsDirective {}\n\n@Component({\n selector: 'td-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss' ],\n})\nexport class TdDialogComponent implements AfterContentInit {\n\n @ContentChildren(TdDialogTitleDirective) dialogTitle: QueryList<TdDialogTitleDirective>;\n @ContentChildren(TdDialogContentDirective) dialogContent: QueryList<TdDialogContentDirective>;\n @ContentChildren(TdDialogActionsDirective) dialogActions: QueryList<TdDialogActionsDirective>;\n\n ngAfterContentInit(): void {\n if (this.dialogTitle.length > 1) {\n throw new Error('Duplicate td-dialog-title component at in td-dialog.');\n }\n if (this.dialogContent.length > 1) {\n throw new Error('Duplicate td-dialog-content component at in td-dialog.');\n }\n if (this.dialogActions.length > 1) {\n throw new Error('Duplicate td-dialog-actions component at in td-dialog.');\n }\n }\n\n}\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-alert-dialog',\n templateUrl: './alert-dialog.component.html',\n styleUrls: ['./alert-dialog.component.scss' ],\n})\nexport class TdAlertDialogComponent {\n title: string;\n message: string;\n closeButton: string = 'CLOSE';\n\n constructor(private _dialogRef: MatDialogRef<TdAlertDialogComponent>) {}\n\n close(): void {\n this._dialogRef.close();\n }\n}\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss' ],\n})\nexport class TdConfirmDialogComponent {\n title: string;\n message: string;\n cancelButton: string = 'CANCEL';\n acceptButton: string = 'ACCEPT';\n\n constructor(private _dialogRef: MatDialogRef<TdConfirmDialogComponent>) {}\n\n cancel(): void {\n this._dialogRef.close(false);\n }\n\n accept(): void {\n this._dialogRef.close(true);\n }\n}\n","import { Component, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-prompt-dialog',\n templateUrl: './prompt-dialog.component.html',\n styleUrls: ['./prompt-dialog.component.scss' ],\n})\nexport class TdPromptDialogComponent implements AfterViewInit {\n title: string;\n message: string;\n value: string;\n cancelButton: string = 'CANCEL';\n acceptButton: string = 'ACCEPT';\n\n @ViewChild('input') _input: ElementRef;\n\n constructor(private _dialogRef: MatDialogRef<TdPromptDialogComponent>) {}\n\n ngAfterViewInit(): void {\n // focus input once everything is rendered and good to go\n Promise.resolve().then(() => {\n (<HTMLInputElement>this._input.nativeElement).focus();\n });\n }\n\n /**\n * Method executed when input is focused\n * Selects all text\n */\n handleInputFocus(): void {\n (<HTMLInputElement>this._input.nativeElement).select();\n }\n\n cancel(): void {\n this._dialogRef.close(undefined);\n }\n\n accept(): void {\n this._dialogRef.close(this.value);\n }\n}\n","import { Injectable, ViewContainerRef, Provider, SkipSelf, Optional } from '@angular/core';\nimport { MatDialog, MatDialogRef, MatDialogConfig } from '@angular/material/dialog';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { TdAlertDialogComponent } from '../alert-dialog/alert-dialog.component';\nimport { TdConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';\nimport { TdPromptDialogComponent } from '../prompt-dialog/prompt-dialog.component';\n\nexport interface IDialogConfig extends MatDialogConfig {\n title?: string;\n message: string;\n}\n\nexport interface IAlertConfig extends IDialogConfig {\n closeButton?: string;\n}\n\nexport interface IConfirmConfig extends IDialogConfig {\n acceptButton?: string;\n cancelButton?: string;\n}\n\nexport interface IPromptConfig extends IConfirmConfig {\n value?: string;\n}\n\n@Injectable()\nexport class TdDialogService {\n\n constructor(private _dialogService: MatDialog) {}\n\n /**\n * params:\n * - component: ComponentType<T>\n * - config: MatDialogConfig\n * Wrapper function over the open() method in MatDialog.\n * Opens a modal dialog containing the given component.\n */\n public open<T>(component: ComponentType<T>, config?: MatDialogConfig): MatDialogRef<T> {\n return this._dialogService.open(component, config);\n }\n\n /**\n * Wrapper function over the closeAll() method in MatDialog.\n * Closes all of the currently-open dialogs.\n */\n public closeAll(): void {\n this._dialogService.closeAll();\n }\n\n /**\n * params:\n * - config: IAlertConfig {\n * message: string;\n * title?: string;\n * viewContainerRef?: ViewContainerRef;\n * closeButton?: string;\n * }\n *\n * Opens an alert dialog with the provided config.\n * Returns an MatDialogRef<TdAlertDialogComponent> object.\n */\n public openAlert(config: IAlertConfig): MatDialogRef<TdAlertDialogComponent> {\n let dialogConfig: MatDialogConfig = this._createConfig(config);\n let dialogRef: MatDialogRef<TdAlertDialogComponent> =\n this._dialogService.open(TdAlertDialogComponent, dialogConfig);\n let alertDialogComponent: TdAlertDialogComponent = dialogRef.componentInstance;\n alertDialogComponent.title = config.title;\n alertDialogComponent.message = config.message;\n if (config.closeButton) {\n alertDialogComponent.closeButton = config.closeButton;\n }\n return dialogRef;\n }\n\n /**\n * params:\n * - config: IConfirmConfig {\n * message: string;\n * title?: string;\n * viewContainerRef?: ViewContainerRef;\n * acceptButton?: string;\n * cancelButton?: string;\n * }\n *\n * Opens a confirm dialog with the provided config.\n * Returns an MatDialogRef<TdConfirmDialogComponent> object.\n */\n public openConfirm(config: IConfirmConfig): MatDialogRef<TdConfirmDialogComponent> {\n let dialogConfig: MatDialogConfig = this._createConfig(config);\n let dialogRef: MatDialogRef<TdConfirmDialogComponent> =\n this._dialogService.open(TdConfirmDialogComponent, dialogConfig);\n let confirmDialogComponent: TdConfirmDialogComponent = dialogRef.componentInstance;\n confirmDialogComponent.title = config.title;\n confirmDialogComponent.message = config.message;\n if (config.acceptButton) {\n confirmDialogComponent.acceptButton = config.acceptButton;\n }\n if (config.cancelButton) {\n confirmDialogComponent.cancelButton = config.cancelButton;\n }\n return dialogRef;\n }\n\n /**\n * params:\n * - config: IPromptConfig {\n * message: string;\n * title?: string;\n * value?: string;\n * viewContainerRef?: ViewContainerRef;\n * acceptButton?: string;\n * cancelButton?: string;\n * }\n *\n * Opens a prompt dialog with the provided config.\n * Returns an MatDialogRef<TdPromptDialogComponent> object.\n */\n public openPrompt(config: IPromptConfig): MatDialogRef<TdPromptDialogComponent> {\n let dialogConfig: MatDialogConfig = this._createConfig(config);\n let dialogRef: MatDialogRef<TdPromptDialogComponent> =\n this._dialogService.open(TdPromptDialogComponent, dialogConfig);\n let promptDialogComponent: TdPromptDialogComponent = dialogRef.componentInstance;\n promptDialogComponent.title = config.title;\n promptDialogComponent.message = config.message;\n promptDialogComponent.value = config.value;\n if (config.acceptButton) {\n promptDialogComponent.acceptButton = config.acceptButton;\n }\n if (config.cancelButton) {\n promptDialogComponent.cancelButton = config.cancelButton;\n }\n return dialogRef;\n }\n\n private _createConfig(config: IDialogConfig): MatDialogConfig {\n let dialogConfig: MatDialogConfig = new MatDialogConfig();\n dialogConfig.width = '400px';\n Object.assign(dialogConfig, config);\n return dialogConfig;\n }\n\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TdDialogComponent, TdDialogTitleDirective,\n TdDialogActionsDirective, TdDialogContentDirective } from './dialog.component';\nimport { TdAlertDialogComponent } from './alert-dialog/alert-dialog.component';\nimport { TdConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\nimport { TdPromptDialogComponent } from './prompt-dialog/prompt-dialog.component';\nimport { TdDialogService } from './services/dialog.service';\n\nconst TD_DIALOGS: Type<any>[] = [\n TdAlertDialogComponent,\n TdConfirmDialogComponent,\n TdPromptDialogComponent,\n TdDialogComponent,\n TdDialogTitleDirective,\n TdDialogActionsDirective,\n TdDialogContentDirective,\n];\n\nconst TD_DIALOGS_ENTRY_COMPONENTS: Type<any>[] = [\n TdAlertDialogComponent,\n TdConfirmDialogComponent,\n TdPromptDialogComponent,\n];\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n MatDialogModule,\n MatInputModule,\n MatButtonModule,\n ],\n declarations: [\n TD_DIALOGS,\n ],\n exports: [\n TD_DIALOGS,\n ],\n providers: [\n TdDialogService,\n ],\n entryComponents: [\n TD_DIALOGS_ENTRY_COMPONENTS,\n ],\n})\nexport class CovalentDialogsModule {\n\n}\n","import { Component, Directive, Input, Output, TemplateRef, ViewContainerRef, ContentChild,\n ElementRef, Renderer2 } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport {\n tdCollapseAnimation,\n ICanDisable,\n mixinDisabled,\n ICanDisableRipple,\n mixinDisableRipple,\n tdRotateAnimation,\n} from '@covalent/core/common';\n\n@Directive({\n selector: '[td-expansion-panel-header]ng-template',\n})\nexport class TdExpansionPanelHeaderDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Directive({\n selector: '[td-expansion-panel-label]ng-template',\n})\nexport class TdExpansionPanelLabelDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Directive({\n selector: '[td-expansion-panel-sublabel]ng-template',\n})\nexport class TdExpansionPanelSublabelDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Component({\n selector: 'td-expansion-summary',\n template: '<ng-content></ng-content>',\n})\nexport class TdExpansionPanelSummaryComponent {}\n\nexport class TdExpansionPanelBase {}\n\n/* tslint:disable-next-line */\nexport const _TdExpansionPanelMixinBase = mixinDisableRipple(mixinDisabled(TdExpansionPanelBase));\n\n@Component({\n selector: 'td-expansion-panel',\n styleUrls: ['./expansion-panel.component.scss' ],\n templateUrl: './expansion-panel.component.html',\n inputs: ['disabled', 'disableRipple'],\n animations: [\n tdCollapseAnimation,\n tdRotateAnimation,\n ],\n})\nexport class TdExpansionPanelComponent extends _TdExpansionPanelMixinBase implements ICanDisable, ICanDisableRipple {\n\n private _expand: boolean = false;\n\n @ContentChild(TdExpansionPanelHeaderDirective) expansionPanelHeader: TdExpansionPanelHeaderDirective;\n @ContentChild(TdExpansionPanelLabelDirective) expansionPanelLabel: TdExpansionPanelLabelDirective;\n @ContentChild(TdExpansionPanelSublabelDirective) expansionPanelSublabel: TdExpansionPanelSublabelDirective;\n\n /**\n * label?: string\n * Sets label of [TdExpansionPanelComponent] header.\n * Defaults to 'Click to expand'\n */\n @Input() label: string;\n\n /**\n * sublabel?: string\n * Sets sublabel of [TdExpansionPanelComponent] header.\n */\n @Input() sublabel: string;\n\n /**\n * expand?: boolean\n * Toggles [TdExpansionPanelComponent] between expand/collapse.\n */\n @Input('expand')\n set expand(expand: boolean) {\n this._setExpand(coerceBooleanProperty(expand));\n }\n get expand(): boolean {\n return this._expand;\n }\n\n /**\n * expanded?: function\n * Event emitted when [TdExpansionPanelComponent] is expanded.\n */\n @Output() expanded: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * collapsed?: function\n * Event emitted when [TdExpansionPanelComponent] is collapsed.\n */\n @Output() collapsed: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(private _renderer: Renderer2,\n private _elementRef: ElementRef) {\n super();\n this._renderer.addClass(this._elementRef.nativeElement, 'td-expansion-panel');\n }\n\n /**\n * Method executed when [TdExpansionPanelComponent] is clicked.\n */\n clickEvent(): void {\n this._setExpand(!this._expand);\n }\n\n /**\n * Toggle expand state of [TdExpansionPanelComponent]\n * retuns 'true' if successful, else 'false'.\n */\n toggle(): boolean {\n return this._setExpand(!this._expand);\n }\n\n /**\n * Opens [TdExpansionPanelComponent]\n * retuns 'true' if successful, else 'false'.\n */\n open(): boolean {\n return this._setExpand(true);\n }\n\n /**\n * Closes [TdExpansionPanelComponent]\n * retuns 'true' if successful, else 'false'.\n */\n close(): boolean {\n return this._setExpand(false);\n }\n\n /** Method executed when the disabled value changes */\n onDisabledChange(v: boolean): void {\n if (v && this._expand) {\n this._expand = false;\n this._onCollapsed();\n }\n }\n\n /**\n * Method to change expand state internally and emit the [onExpanded] event if 'true' or [onCollapsed]\n * event if 'false'. (Blocked if [disabled] is 'true')\n */\n private _setExpand(newExpand: boolean): boolean {\n if (this.disabled) {\n return false;\n }\n if (this._expand !== newExpand) {\n this._expand = newExpand;\n if (newExpand) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-expanded');\n this._onExpanded();\n } else {\n this._renderer.removeClass(this._elementRef.nativeElement, 'td-expanded');\n this._onCollapsed();\n }\n return true;\n }\n return false;\n }\n\n private _onExpanded(): void {\n this.expanded.emit(undefined);\n }\n\n private _onCollapsed(): void {\n this.collapsed.emit(undefined);\n }\n}\n","import {\n Component,\n Renderer2,\n ElementRef,\n QueryList,\n ContentChildren,\n AfterContentInit,\n Input,\n OnDestroy,\n} from '@angular/core';\nimport { TdExpansionPanelComponent } from './expansion-panel.component';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'td-expansion-panel-group',\n styleUrls: ['./expansion-panel-group.component.scss'],\n templateUrl: './expansion-panel-group.component.html',\n})\nexport class TdExpansionPanelGroupComponent\n implements AfterContentInit, OnDestroy {\n private _multi: boolean = false;\n\n private _lastOpenedPanels: TdExpansionPanelComponent[] = [];\n\n private _destroyed: Subject<boolean> = new Subject<boolean>();\n private _stopWatchingPanels: Subject<boolean> = new Subject<boolean>();\n\n /**\n * multi?: boolean\n * Sets whether multiple panels can be opened at a given time.\n * Set to false for accordion mode.\n * Defaults to false.\n */\n @Input('multi')\n set multi(multi: boolean) {\n this._multi = coerceBooleanProperty(multi);\n if (this._multi === false && this._lastOpenedPanels.length > 0) {\n this._closeAllExcept(\n this._lastOpenedPanels[this._lastOpenedPanels.length - 1],\n );\n }\n }\n\n @ContentChildren(TdExpansionPanelComponent) expansionPanels: QueryList<\n TdExpansionPanelComponent\n >;\n\n constructor(private _renderer: Renderer2, private _elementRef: ElementRef) {\n this._renderer.addClass(\n this._elementRef.nativeElement,\n 'td-expansion-panel-group',\n );\n }\n\n ngOnDestroy(): void {\n this._destroyed.next(true);\n this._destroyed.unsubscribe();\n this._stopWatchingPanels.next(true);\n this._stopWatchingPanels.unsubscribe();\n }\n\n public ngAfterContentInit(): void {\n if (!this._multi) {\n const openedPanels: TdExpansionPanelComponent[] = this.expansionPanels.filter(\n (expansionPanel: TdExpansionPanelComponent) => expansionPanel.expand,\n );\n const numOpenedPanels: number = openedPanels.length;\n if (numOpenedPanels > 1) {\n this._closeAllExcept(openedPanels[numOpenedPanels - 1]);\n }\n }\n\n this._attachListeners(this.expansionPanels);\n\n this.expansionPanels.changes\n .pipe(takeUntil(this._destroyed))\n .subscribe((expansionPanels: QueryList<TdExpansionPanelComponent>) => {\n this._stopWatchingPanels.next(true);\n this._stopWatchingPanels.unsubscribe();\n this._stopWatchingPanels = new Subject<boolean>();\n this._attachListeners(expansionPanels);\n });\n }\n\n /**\n * Opens all expansion panels, only if multi set set to true.\n */\n public openAll(): void {\n if (this._multi) {\n this.expansionPanels.forEach(\n (expansionPanel: TdExpansionPanelComponent) => {\n expansionPanel.open();\n },\n );\n }\n }\n\n /**\n * Closes all expansion panels\n */\n public closeAll(): void {\n this.expansionPanels.forEach(\n (expansionPanel: TdExpansionPanelComponent) => {\n expansionPanel.close();\n },\n );\n }\n\n private _attachListeners(\n expansionPanels: QueryList<TdExpansionPanelComponent>,\n ): void {\n this._lastOpenedPanels = [];\n expansionPanels.forEach((expansionPanel: TdExpansionPanelComponent) => {\n expansionPanel.expanded\n .pipe(takeUntil(this._stopWatchingPanels))\n .subscribe(() => {\n const indexOfPanel: number = this._lastOpenedPanels.indexOf(\n expansionPanel,\n );\n if (indexOfPanel !== -1) {\n this._lastOpenedPanels.splice(indexOfPanel, 1);\n }\n this._lastOpenedPanels.push(expansionPanel);\n\n if (!this._multi) {\n this._closeAllExcept(expansionPanel);\n }\n });\n\n expansionPanel.collapsed\n .pipe(takeUntil(this._stopWatchingPanels))\n .subscribe(() => {\n const indexOfPanel: number = this._lastOpenedPanels.indexOf(\n expansionPanel,\n );\n if (indexOfPanel !== -1) {\n this._lastOpenedPanels.splice(indexOfPanel, 1);\n }\n });\n });\n }\n\n private _closeAllExcept(expansionPanel: TdExpansionPanelComponent): void {\n this.expansionPanels.forEach((panel: TdExpansionPanelComponent) => {\n if (panel !== expansionPanel) {\n panel.close();\n }\n });\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { TdExpansionPanelComponent, TdExpansionPanelHeaderDirective, TdExpansionPanelLabelDirective,\n TdExpansionPanelSublabelDirective, TdExpansionPanelSummaryComponent } from './expansion-panel.component';\nimport { TdExpansionPanelGroupComponent } from './expansion-panel-group.component';\n\nconst TD_EXPANSION_PANEL: Type<any>[] = [\n TdExpansionPanelGroupComponent,\n TdExpansionPanelComponent,\n TdExpansionPanelHeaderDirective,\n TdExpansionPanelLabelDirective,\n TdExpansionPanelSublabelDirective,\n TdExpansionPanelSummaryComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n MatRippleModule,\n MatIconModule,\n PortalModule,\n ],\n declarations: [\n TD_EXPANSION_PANEL,\n ],\n exports: [\n TD_EXPANSION_PANEL,\n ],\n})\nexport class CovalentExpansionPanelModule {\n\n}\n","import { Directive, Input, Output, EventEmitter } from '@angular/core';\nimport { HostListener, HostBinding, Host, Optional } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgModel } from '@angular/forms';\n\n@Directive({\n selector: '[tdFileSelect]',\n})\nexport class TdFileSelectDirective {\n\n private _multiple: boolean = false;\n\n /**\n * multiple?: boolean\n * Sets whether multiple files can be selected at once in host element, or just a single file.\n * Can also be 'multiple' native attribute.\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n\n /**\n * fileSelect?: function\n * Event emitted when a file or files are selected in host [HTMLInputElement].\n * Emits a [FileList | File] object.\n * Alternative to not use [(ngModel)].\n */\n @Output('fileSelect') onFileSelect: EventEmitter<FileList | File> = new EventEmitter<FileList | File>();\n\n /**\n * Binds native 'multiple' attribute if [multiple] property is 'true'.\n */\n @HostBinding('attr.multiple')\n get multipleBinding(): string {\n return this._multiple ? '' : undefined;\n }\n\n constructor(@Optional() @Host() private model: NgModel) {\n }\n\n /**\n * Listens to 'change' host event to get [HTMLInputElement] files.\n * Emits the 'onFileSelect' event with a [FileList] or [File] depending if 'multiple' attr exists in host.\n * Uses [(ngModel)] if declared, instead of emitting 'onFileSelect' event.\n */\n @HostListener('change', ['$event'])\n onChange(event: Event): void {\n if (event.target instanceof HTMLInputElement) {\n let fileInputEl: HTMLInputElement = (<HTMLInputElement>event.target);\n let files: FileList = fileInputEl.files;\n if (files.length) {\n let value: FileList | File = this._multiple ? (files.length > 1 ? files : files[0]) : files[0];\n this.model ? this.model.update.emit(value) : this.onFileSelect.emit(value);\n }\n }\n }\n}\n","import { Directive, Input, Output, EventEmitter } from '@angular/core';\nimport { HostListener, HostBinding, ElementRef, Renderer2 } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport { ICanDisable, mixinDisabled } from '@covalent/core/common';\n\nexport class TdFileDropBase {}\n\n/* tslint:disable-next-line */\nexport const _TdFileDropMixinBase = mixinDisabled(TdFileDropBase);\n\n@Directive({\n selector: '[tdFileDrop]',\n inputs: ['disabled'],\n})\nexport class TdFileDropDirective extends _TdFileDropMixinBase implements ICanDisable {\n\n private _multiple: boolean = false;\n\n /**\n * multiple?: boolean\n * Sets whether multiple files can be dropped at once in host element, or just a single file.\n * Can also be 'multiple' native attribute.\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n\n /**\n * fileDrop?: function\n * Event emitted when a file or files are dropped in host element after being validated.\n * Emits a [FileList | File] object.\n */\n @Output('fileDrop') onFileDrop: EventEmitter<FileList | File> = new EventEmitter<FileList | File>();\n\n /**\n * Binds native 'multiple' attribute if [multiple] property is 'true'.\n */\n @HostBinding('attr.multiple')\n get multipleBinding(): string {\n return this._multiple ? '' : undefined;\n }\n\n /**\n * Binds native 'disabled' attribute if [disabled] property is 'true'.\n */\n @HostBinding('attr.disabled')\n get disabledBinding(): string {\n return this.disabled ? '' : undefined;\n }\n\n constructor(private _renderer: Renderer2, private _element: ElementRef) {\n super();\n }\n\n /**\n * Listens to 'drop' host event to get validated transfer items.\n * Emits the 'onFileDrop' event with a [FileList] or [File] depending if 'multiple' attr exists in host.\n * Stops event propagation and default action from browser for 'drop' event.\n */\n @HostListener('drop', ['$event'])\n onDrop(event: Event): void {\n if (!this.disabled) {\n let transfer: DataTransfer = (<DragEvent>event).dataTransfer;\n let files: FileList = transfer.files;\n if (files.length) {\n let value: FileList | File = this._multiple ? (files.length > 1 ? files : files[0]) : files[0];\n this.onFileDrop.emit(value);\n }\n }\n this._renderer.removeClass(this._element.nativeElement, 'drop-zone');\n this._stopEvent(event);\n }\n\n /**\n * Listens to 'dragover' host event to validate transfer items.\n * Checks if 'multiple' attr exists in host to allow multiple file drops.\n * Stops event propagation and default action from browser for 'dragover' event.\n */\n @HostListener('dragover', ['$event'])\n onDragOver(event: Event): void {\n let transfer: DataTransfer = (<DragEvent>event).dataTransfer;\n transfer.dropEffect = this._typeCheck(transfer.types);\n if (this.disabled || (!this._multiple &&\n ((transfer.items && transfer.items.length > 1) || (<any>transfer).mozItemCount > 1))) {\n transfer.dropEffect = 'none';\n } else {\n transfer.dropEffect = 'copy';\n }\n this._stopEvent(event);\n }\n\n /**\n * Listens to 'dragenter' host event to add animation class 'drop-zone' which can be overriden in host.\n * Stops event propagation and default action from browser for 'dragenter' event.\n */\n @HostListener('dragenter', ['$event'])\n onDragEnter(event: Event): void {\n if (!this.disabled) {\n this._renderer.addClass(this._element.nativeElement, 'drop-zone');\n }\n this._stopEvent(event);\n }\n\n /**\n * Listens to 'dragleave' host event to remove animation class 'drop-zone'.\n * Stops event propagation and default action from browser for 'dragleave' event.\n */\n @HostListener('dragleave', ['$event'])\n onDragLeave(event: Event): void {\n this._renderer.removeClass(this._element.nativeElement, 'drop-zone');\n this._stopEvent(event);\n }\n\n /**\n * Validates if the transfer item types are 'Files'.\n */\n private _typeCheck(types: ReadonlyArray<string> | DOMStringList): string {\n let dropEffect: string = 'none';\n if (types) {\n if (((<any>types).contains && (<any>types).contains('Files'))\n || ((<any>types).indexOf && (<any>types).indexOf('Files') !== -1)) {\n dropEffect = 'copy';\n }\n }\n return dropEffect;\n }\n\n private _stopEvent(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import { Component, Directive, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewChild,\n ElementRef, Renderer2, TemplateRef, ViewContainerRef, ChangeDetectorRef, forwardRef } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nimport { ICanDisable, mixinDisabled, IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\n@Directive({\n selector: '[td-file-input-label]ng-template',\n})\nexport class TdFileInputLabelDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\nexport class TdFileInputBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdFileInputMixinBase = mixinControlValueAccessor(mixinDisabled(TdFileInputBase));\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdFileInputComponent),\n multi: true,\n }],\n selector: 'td-file-input',\n inputs: ['disabled', 'value'],\n styleUrls: ['./file-input.component.scss'],\n templateUrl: './file-input.component.html',\n})\nexport class TdFileInputComponent extends _TdFileInputMixinBase implements IControlValueAccessor, ICanDisable {\n\n private _multiple: boolean = false;\n\n /** The native `<input type=\"file\"> element */\n @ViewChild('fileInput') _inputElement: ElementRef;\n get inputElement(): HTMLInputElement {\n return this._inputElement.nativeElement;\n }\n\n /**\n * color?: string\n * Sets button color. Uses same color palette accepted as [MatButton].\n */\n @Input('color') color: string;\n\n /**\n * multiple?: boolean\n * Sets if multiple files can be dropped/selected at once in [TdFileInputComponent].\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * accept?: string\n * Sets files accepted when opening the file browser dialog.\n * Same as 'accept' attribute in <input/> element.\n */\n @Input('accept') accept: string;\n\n /**\n * select?: function\n * Event emitted a file is selected\n * Emits a [File | FileList] object.\n */\n @Output('select') onSelect: EventEmitter<File | FileList> = new EventEmitter<File | FileList>();\n\n constructor(private _renderer: Renderer2, _changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n }\n\n /**\n * Method executed when a file is selected.\n */\n handleSelect(files: File | FileList): void {\n this.writeValue(files);\n this.onSelect.emit(files);\n }\n\n /**\n * Used to clear the selected files from the [TdFileInputComponent].\n */\n clear(): void {\n this.writeValue(undefined);\n this._renderer.setProperty(this.inputElement, 'value', '');\n }\n\n /** Method executed when the disabled value changes */\n onDisabledChange(v: boolean): void {\n if (v) {\n this.clear();\n }\n }\n /**\n * Sets disable to the component. Implemented as part of ControlValueAccessor.\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewChild, ContentChild, ChangeDetectorRef,\n forwardRef } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ICanDisable, mixinDisabled, IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\nimport { TdFileInputComponent, TdFileInputLabelDirective } from '../file-input/file-input.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nexport class TdFileUploadBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdFileUploadMixinBase = mixinControlValueAccessor(mixinDisabled(TdFileUploadBase));\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdFileUploadComponent),\n multi: true,\n }],\n selector: 'td-file-upload',\n inputs: ['disabled', 'value'],\n styleUrls: ['./file-upload.component.scss'],\n templateUrl: './file-upload.component.html',\n})\nexport class TdFileUploadComponent extends _TdFileUploadMixinBase implements IControlValueAccessor, ICanDisable {\n\n private _multiple: boolean = false;\n private _required: boolean = false;\n\n @ViewChild(TdFileInputComponent) fileInput: TdFileInputComponent;\n\n @ContentChild(TdFileInputLabelDirective) inputLabel: TdFileInputLabelDirective;\n\n /**\n * defaultColor?: string\n * Sets browse button color. Uses same color palette accepted as [MatButton] and defaults to 'primary'.\n */\n @Input('defaultColor') defaultColor: string = 'primary';\n\n /**\n * activeColor?: string\n * Sets upload button color. Uses same color palette accepted as [MatButton] and defaults to 'accent'.\n */\n @Input('activeColor') activeColor: string = 'accent';\n\n /**\n * cancelColor?: string\n * Sets cancel button color. Uses same color palette accepted as [MatButton] and defaults to 'warn'.\n */\n @Input('cancelColor') cancelColor: string = 'warn';\n\n /**\n * multiple?: boolean\n * Sets if multiple files can be dropped/selected at once in [TdFileUploadComponent].\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * required?: boolean\n * Forces at least one file upload.\n * Defaults to 'false'\n */\n @Input('required')\n set required(required: boolean) {\n this._required = coerceBooleanProperty(required);\n }\n get required(): boolean {\n return this._required;\n }\n\n /**\n * accept?: string\n * Sets files accepted when opening the file browser dialog.\n * Same as 'accept' attribute in <input/> element.\n */\n @Input('accept') accept: string;\n\n /**\n * select?: function\n * Event emitted when a file is selected.\n * Emits a [File | FileList] object.\n */\n @Output('select') onSelect: EventEmitter<File | FileList> = new EventEmitter<File | FileList>();\n\n /**\n * upload?: function\n * Event emitted when upload button is clicked.\n * Emits a [File | FileList] object.\n */\n @Output('upload') onUpload: EventEmitter<File | FileList> = new EventEmitter<File | FileList>();\n\n /**\n * cancel?: function\n * Event emitted when cancel button is clicked.\n */\n @Output('cancel') onCancel: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(_changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n }\n\n /**\n * Method executed when upload button is clicked.\n */\n uploadPressed(): void {\n if (this.value) {\n this.onUpload.emit(this.value);\n }\n }\n\n /**\n * Method executed when a file is selected.\n */\n handleSelect(value: File | FileList): void {\n this.value = value;\n this.onSelect.emit(value);\n }\n\n /**\n * Methods executed when cancel button is clicked.\n * Clears files.\n */\n cancel(): void {\n this.value = undefined;\n this.onCancel.emit(undefined);\n // check if the file input is rendered before clearing it\n if (this.fileInput) {\n this.fileInput.clear();\n }\n }\n\n /** Method executed when the disabled value changes */\n onDisabledChange(v: boolean): void {\n if (v) {\n this.cancel();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscriber } from 'rxjs';\n\nexport interface IUploadOptions {\n url: string;\n method: 'post' | 'put';\n file?: File;\n headers?: {[key: string]: string};\n formData?: FormData;\n}\n\n@Injectable()\nexport class TdFileService {\n\n private _progressSubject: Subject<number> = new Subject<number>();\n private _progressObservable: Observable<number>;\n\n /**\n * Gets progress observable to keep track of the files being uploaded.\n * Needs to be supported by backend.\n */\n get progress(): Observable<number> {\n return this._progressObservable;\n }\n\n constructor() {\n this._progressObservable = this._progressSubject.asObservable();\n }\n\n /**\n * params:\n * - options: IUploadOptions {\n * url: string,\n * method: 'post' | 'put',\n * file?: File,\n * headers?: {[key: string]: string},\n * formData?: FormData\n * }\n *\n * Uses underlying [XMLHttpRequest] to upload a file to a url.\n * Will be depricated when Angular fixes [Http] to allow [FormData] as body.\n */\n upload(options: IUploadOptions): Observable<any> {\n return new Observable<any>((subscriber: Subscriber<any>) => {\n let xhr: XMLHttpRequest = new XMLHttpRequest();\n let formData: FormData = new FormData();\n\n if (options.file !== undefined) {\n formData.append('file', options.file);\n } else if (options.formData !== undefined) {\n formData = options.formData;\n } else {\n return subscriber.error('For [IUploadOptions] you have to set either the [file] or the [formData] property.');\n }\n\n xhr.upload.onprogress = (event: ProgressEvent) => {\n let progress: number = 0;\n if (event.lengthComputable) {\n progress = Math.round(event.loaded / event.total * 100);\n }\n this._progressSubject.next(progress);\n };\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300) {\n subscriber.next(xhr.response);\n subscriber.complete();\n } else {\n subscriber.error(xhr.response);\n }\n }\n };\n\n xhr.open(options.method, options.url, true);\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n if (options.headers) {\n for (let key in options.headers) {\n xhr.setRequestHeader(key, options.headers[key]);\n }\n }\n\n xhr.send(formData);\n });\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TdFileSelectDirective } from './directives/file-select.directive';\nimport { TdFileDropDirective } from './directives/file-drop.directive';\nimport { TdFileUploadComponent } from './file-upload/file-upload.component';\nimport { TdFileInputComponent, TdFileInputLabelDirective } from './file-input/file-input.component';\nimport { TdFileService } from './services/file.service';\n\nconst TD_FILE: Type<any>[] = [\n TdFileSelectDirective,\n TdFileDropDirective,\n TdFileUploadComponent,\n TdFileInputComponent,\n TdFileInputLabelDirective,\n];\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n MatIconModule,\n MatButtonModule,\n PortalModule,\n ],\n declarations: [\n TD_FILE,\n ],\n exports: [\n TD_FILE,\n ],\n providers: [\n TdFileService,\n ],\n})\nexport class CovalentFileModule {\n\n}\n","import { Component, Input, ChangeDetectionStrategy, ChangeDetectorRef, Optional } from '@angular/core';\nimport { Dir } from '@angular/cdk/bidi';\nimport { tdCollapseAnimation } from '@covalent/core/common';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'td-json-formatter',\n styleUrls: ['./json-formatter.component.scss' ],\n templateUrl: './json-formatter.component.html',\n animations: [\n tdCollapseAnimation,\n ],\n})\nexport class TdJsonFormatterComponent {\n\n /**\n * Max length for property names. Any names bigger than this get trunctated.\n */\n private static KEY_MAX_LENGTH: number = 30;\n\n /**\n * Max length for preview string. Any names bigger than this get trunctated.\n */\n private static PREVIEW_STRING_MAX_LENGTH: number = 80;\n\n /**\n * Max tooltip preview elements.\n */\n private static PREVIEW_LIMIT: number = 5;\n\n private _key: string;\n private _data: any;\n private _children: string[];\n private _open: boolean = false;\n private _levelsOpen: number = 0;\n\n /**\n * levelsOpen?: number\n * Levels opened by default when JS object is formatted and rendered.\n */\n @Input('levelsOpen')\n set levelsOpen(levelsOpen: number) {\n if (!Number.isInteger(levelsOpen)) {\n throw new Error('[levelsOpen] needs to be an integer.');\n }\n this._levelsOpen = levelsOpen;\n this._open = levelsOpen > 0;\n }\n get levelsOpen(): number {\n return this._levelsOpen;\n }\n\n get open(): boolean {\n return this._open;\n }\n\n /**\n * key?: string\n * Tag to be displayed next to formatted object.\n */\n @Input('key')\n set key(key: string) {\n this._key = key;\n }\n get key(): string {\n let elipsis: string = this._key && this._key.length > TdJsonFormatterComponent.KEY_MAX_LENGTH ? '…' : '';\n return this._key ? this._key.substring(0, TdJsonFormatterComponent.KEY_MAX_LENGTH) + elipsis : this._key;\n }\n\n /**\n * data: any\n * JS object to be formatted.\n */\n @Input('data')\n set data(data: any) {\n this._data = data;\n this.parseChildren();\n }\n get data(): any {\n return this._data;\n }\n\n get children(): string[] {\n return this._children;\n }\n\n get isRTL(): boolean {\n if (this._dir) {\n return this._dir.dir === 'rtl';\n }\n return false;\n }\n\n constructor(private _changeDetectorRef: ChangeDetectorRef,\n @Optional() private _dir: Dir) {\n }\n\n /**\n * Refreshes json-formatter and rerenders [data]\n */\n refresh(): void {\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Toggles collapse/expanded state of component.\n */\n toggle(): void {\n this._open = !this._open;\n }\n\n isObject(): boolean {\n return this.getType(this._data) === 'object';\n }\n\n isArray(): boolean {\n return Array.isArray(this._data);\n }\n\n hasChildren(): boolean {\n return this._children && this._children.length > 0;\n }\n\n /**\n * Gets parsed value depending on value type.\n */\n getValue(value: any): string {\n let type: string = this.getType(value);\n if (type === 'undefined' || (type === 'null')) {\n return type;\n } else if (type === 'date') {\n value = new Date(value).toString();\n } else if (type === 'string') {\n value = '\"' + value + '\"';\n } else if (type === 'function') {\n // Remove content of the function\n return value.toString()\n .replace(/[\\r\\n]/g, '')\n .replace(/\\{.*\\}/, '') + '{…}';\n } else if (Array.isArray(value)) {\n return this.getObjectName() + ' [' + value.length + ']';\n }\n return value;\n }\n\n /**\n * Gets type of object.\n * returns 'null' if object is null and 'date' if value is object and can be parsed to a date.\n */\n getType(object: any): string {\n if (typeof object === 'object') {\n if (!object) {\n return 'null';\n }\n if (Array.isArray(object)) {\n return 'object';\n }\n let date: Date = new Date(object);\n if (Object.prototype.toString.call(date) === '[object Date]') {\n if (!Number.isNaN(date.getTime())) {\n return 'date';\n }\n }\n }\n return typeof object;\n }\n\n /**\n * Generates string representation depending if its an object or function.\n * see: http://stackoverflow.com/a/332429\n */\n getObjectName(): string {\n let object: any = this._data;\n if (this.isObject() && !object.constructor) {\n return 'Object';\n }\n let funcNameRegex: RegExp = /function (.{1,})\\(/;\n let results: RegExpExecArray = (funcNameRegex).exec((object).constructor.toString());\n if (results && results.length > 1) {\n return results[1];\n } else {\n return '';\n }\n }\n\n /**\n * Creates preview of nodes children to render in tooltip depending if its an array or an object.\n */\n getPreview(): string {\n let previewData: string[];\n let startChar: string = '{ ';\n let endChar: string = ' }';\n if (this.isArray()) {\n let previewArray: any[] = this._data.slice(0, TdJsonFormatterComponent.PREVIEW_LIMIT);\n previewData = previewArray.map((obj: any) => {\n return this.getValue(obj);\n });\n startChar = '[';\n endChar = ']';\n } else {\n let previewKeys: string[] = this._children.slice(0, TdJsonFormatterComponent.PREVIEW_LIMIT);\n previewData = previewKeys.map((key: string) => {\n return key + ': ' + this.getValue(this._data[key]);\n });\n }\n let previewString: string = previewData.join(', ');\n let ellipsis: string = previewData.length >= TdJsonFormatterComponent.PREVIEW_LIMIT ||\n previewString.length > TdJsonFormatterComponent.PREVIEW_STRING_MAX_LENGTH ? '…' : '';\n return startChar + previewString.substring(0, TdJsonFormatterComponent.PREVIEW_STRING_MAX_LENGTH) +\n ellipsis + endChar;\n }\n\n private parseChildren(): void {\n if (this.isObject()) {\n this._children = [];\n for (let key in this._data) {\n this._children.push(key);\n }\n }\n }\n\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { TdJsonFormatterComponent } from './json-formatter.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatTooltipModule,\n MatIconModule,\n ],\n declarations: [\n TdJsonFormatterComponent,\n ],\n exports: [\n TdJsonFormatterComponent,\n ],\n})\nexport class CovalentJsonFormatterModule {\n\n}\n","import { Component, Input, ViewChild } from '@angular/core';\n\nimport { MatSidenav, MatDrawerToggleResult } from '@angular/material/sidenav';\n\nimport { ILayoutTogglable } from './layout-toggle.class';\n\n@Component({\n selector: 'td-layout',\n styleUrls: ['./layout.component.scss' ],\n templateUrl: './layout.component.html',\n})\nexport class TdLayoutComponent implements ILayoutTogglable {\n\n @ViewChild(MatSidenav) sidenav: MatSidenav;\n\n /**\n * mode?: 'side', 'push' or 'over'\n *\n * The mode or styling of the sidenav.\n * Defaults to \"over\".\n * See \"MatSidenav\" documentation for more info.\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('mode') mode: 'side' | 'push' | 'over' = 'over';\n\n /**\n * opened?: boolean\n *\n * Whether or not the sidenav is opened. Use this binding to open/close the sidenav.\n * Defaults to \"false\".\n *\n * See \"MatSidenav\" documentation for more info.\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('opened') opened: boolean = false;\n\n /**\n * sidenavWidth?: string\n *\n * Sets the \"width\" of the sidenav in either \"px\" or \"%\"\n * Defaults to \"320px\".\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('sidenavWidth') sidenavWidth: string = '320px';\n\n /**\n * containerAutosize?: boolean\n *\n * Sets \"autosize\" of the sidenav-container.\n * Defaults to \"false\".\n *\n * See documentation for more info and potential performance risks.\n * \n * https://github.com/angular/material2/blob/master/src/lib/sidenav/sidenav.md#resizing-an-open-sidenav\n */\n @Input('containerAutosize') containerAutosize: boolean = false;\n\n /**\n * Checks if `ESC` should close the sidenav\n * Should only close it for `push` and `over` modes\n */\n get disableClose(): boolean {\n return this.mode === 'side';\n }\n\n /**\n * Proxy toggle method to access sidenav from outside (from td-layout template).\n */\n public toggle(): Promise<MatDrawerToggleResult> {\n return this.sidenav.toggle(!this.sidenav.opened);\n }\n\n /**\n * Proxy open method to access sidenav from outside (from td-layout template).\n */\n public open(): Promise<MatDrawerToggleResult> {\n return this.sidenav.open();\n }\n\n /**\n * Proxy close method to access sidenav from outside (from td-layout template).\n */\n public close(): Promise<MatDrawerToggleResult> {\n return this.sidenav.close();\n }\n\n}\n","import { Input, HostBinding, HostListener, Renderer2, ElementRef, AfterViewInit, OnDestroy } from '@angular/core';\n\nimport { MatSidenav, MatDrawerToggleResult } from '@angular/material/sidenav';\n\nimport { ICanDisable, mixinDisabled } from '@covalent/core/common';\n\nimport { Subscription } from 'rxjs';\n\nexport interface ILayoutTogglable {\n opened: boolean;\n sidenav: MatSidenav;\n toggle(): Promise<MatDrawerToggleResult>;\n open(): Promise<MatDrawerToggleResult>;\n close(): Promise<MatDrawerToggleResult>;\n}\n\nexport class LayoutToggleBase { }\n\n/* tslint:disable-next-line */\nexport const _TdLayoutToggleMixinBase = mixinDisabled(LayoutToggleBase);\n\nexport abstract class LayoutToggle extends _TdLayoutToggleMixinBase implements AfterViewInit, OnDestroy, ICanDisable {\n\n private _toggleSubs: Subscription;\n\n private _initialized: boolean = false;\n private _hideWhenOpened: boolean = false;\n\n /**\n * hideWhenOpened?: boolean\n * When this is set to true, the host will be hidden when\n * the sidenav is opened.\n */\n @Input('hideWhenOpened')\n set hideWhenOpened(hideWhenOpened: boolean) {\n this._hideWhenOpened = hideWhenOpened;\n if (this._initialized) {\n this._toggleVisibility();\n }\n }\n\n constructor(protected _layout: ILayoutTogglable,\n private _renderer: Renderer2,\n private _elementRef: ElementRef) {\n super();\n // if layout has not been provided\n // show warn message\n if (!this._layout) {\n this._noLayoutMessage();\n }\n this._renderer.addClass(this._elementRef.nativeElement, 'td-layout-menu-button');\n }\n\n ngAfterViewInit(): void {\n this._initialized = true;\n if (this._layout && this._layout.sidenav) {\n this._toggleSubs = this._layout.sidenav._animationStarted.subscribe(() => {\n this._toggleVisibility();\n });\n }\n // execute toggleVisibility since the onOpenStart and onCloseStart\n // methods might not be executed always when the element is rendered\n this._toggleVisibility();\n }\n\n ngOnDestroy(): void {\n if (this._toggleSubs) {\n this._toggleSubs.unsubscribe();\n this._toggleSubs = undefined;\n }\n }\n\n /**\n * Listens to host click event to trigger the layout toggle\n */\n @HostListener('click', ['$event'])\n clickListener(event: Event): void {\n event.preventDefault();\n if (!this.disabled) {\n // if layout has been provided, try triggering the click on it\n // else show warn message\n if (this._layout && this._layout.open) {\n this.onClick();\n } else {\n this._noLayoutMessage();\n }\n }\n }\n\n abstract onClick(): void;\n\n private _toggleVisibility(): void {\n if (this._layout) {\n if (this._layout.sidenav.opened && this._hideWhenOpened) {\n this._renderer.setStyle(this._elementRef.nativeElement, 'display', 'none');\n } else {\n this._renderer.setStyle(this._elementRef.nativeElement, 'display', '');\n }\n }\n }\n\n private _noLayoutMessage(): void {\n /* tslint:disable-next-line */\n console.warn('Covalent: Parent layout not found for layout toggle directive');\n }\n\n}\n","import { Optional, Directive, Input, Renderer2, ElementRef, Inject, forwardRef } from '@angular/core';\nimport { TdLayoutComponent } from './layout.component';\nimport { LayoutToggle } from './layout-toggle.class';\n\n@Directive({\n selector: '[tdLayoutToggle]',\n})\nexport class TdLayoutToggleDirective extends LayoutToggle {\n\n @Input('tdLayoutToggle') \n set tdLayoutToggle(tdLayoutToggle: boolean) {\n this.disabled = !(<any>tdLayoutToggle === '' || tdLayoutToggle);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutComponent)) layout: TdLayoutComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.toggle();\n }\n}\n\n@Directive({\n selector: '[tdLayoutClose]',\n})\nexport class TdLayoutCloseDirective extends LayoutToggle {\n \n @Input('tdLayoutClose') \n set tdLayoutClose(tdLayoutClose: boolean) {\n this.disabled = !(<any>tdLayoutClose === '' || tdLayoutClose);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutComponent)) layout: TdLayoutComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.close();\n }\n}\n\n@Directive({\n selector: '[tdLayoutOpen]',\n})\nexport class TdLayoutOpenDirective extends LayoutToggle {\n\n @Input('tdLayoutOpen') \n set tdLayoutClose(tdLayoutOpen: boolean) {\n this.disabled = !(<any>tdLayoutOpen === '' || tdLayoutOpen);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutComponent)) layout: TdLayoutComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.open();\n }\n}\n","import { Component, Input, forwardRef, Optional, Inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TdLayoutComponent } from '../layout.component';\n\n@Component({\n selector: 'td-layout-nav',\n styleUrls: ['./layout-nav.component.scss' ],\n templateUrl: './layout-nav.component.html',\n})\nexport class TdLayoutNavComponent {\n\n /**\n * toolbarTitle?: string\n *\n * Title set in toolbar.\n */\n @Input('toolbarTitle') toolbarTitle: string;\n\n /**\n * icon?: string\n *\n * icon name to be displayed before the title\n */\n @Input('icon') icon: string;\n\n /**\n * logo?: string\n *\n * logo icon name to be displayed before the title.\n * If [icon] is set, then this will not be shown.\n */\n @Input('logo') logo: string;\n\n /**\n * color?: string\n *\n * toolbar color option: primary | accent | warn.\n * If [color] is not set, primary is used.\n */\n @Input('color') color: string = 'primary';\n\n /**\n * navigationRoute?: string\n *\n * option to set the combined route for the icon, logo, and toolbarTitle.\n */\n @Input('navigationRoute') navigationRoute: string;\n\n /**\n * Checks if router was injected.\n */\n get routerEnabled(): boolean {\n return !!this._router && !!this.navigationRoute;\n }\n\n constructor(@Optional() private _router: Router) {}\n\n handleNavigationClick(): void {\n if (this.routerEnabled) {\n this._router.navigateByUrl(this.navigationRoute);\n }\n }\n}\n","import { Component, Input, ViewChild, Optional } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { MatSidenav, MatDrawerToggleResult } from '@angular/material/sidenav';\n\nimport { ILayoutTogglable } from '../layout-toggle.class';\n\n@Component({\n selector: 'td-layout-nav-list',\n styleUrls: ['./layout-nav-list.component.scss' ],\n templateUrl: './layout-nav-list.component.html',\n})\nexport class TdLayoutNavListComponent implements ILayoutTogglable {\n\n @ViewChild(MatSidenav) sidenav: MatSidenav;\n\n /**\n * toolbarTitle?: string\n *\n * Title set in toolbar.\n */\n @Input('toolbarTitle') toolbarTitle: string;\n\n /**\n * icon?: string\n * icon name to be displayed before the title\n */\n @Input('icon') icon: string;\n\n /**\n * logo?: string\n *\n * logo icon name to be displayed before the title.\n * If [icon] is set, then this will not be shown.\n */\n @Input('logo') logo: string;\n\n /**\n * color?: string\n *\n * toolbar color option: primary | accent | warn.\n * If [color] is not set, primary is used.\n */\n @Input('color') color: string = 'primary';\n\n /**\n * mode?: 'side', 'push' or 'over'\n *\n * The mode or styling of the sidenav.\n * Defaults to \"side\".\n * See \"MatSidenav\" documentation for more info.\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('mode') mode: 'side' | 'push' | 'over' = 'side';\n\n /**\n * opened?: boolean\n * Whether or not the sidenav is opened. Use this binding to open/close the sidenav.\n * Defaults to \"true\".\n *\n * See \"MatSidenav\" documentation for more info.\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('opened') opened: boolean = true;\n\n /**\n * sidenavWidth?: string\n *\n * Sets the \"width\" of the sidenav in either \"px\" or \"%\"\n * Defaults to \"350px\".\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('sidenavWidth') sidenavWidth: string = '350px';\n\n /**\n * containerAutosize?: boolean\n *\n * Sets \"autosize\" of the sidenav-container.\n * Defaults to \"false\".\n *\n * See documentation for more info and potential performance risks.\n * \n * https://github.com/angular/material2/blob/master/src/lib/sidenav/sidenav.md#resizing-an-open-sidenav\n */\n @Input('containerAutosize') containerAutosize: boolean = false;\n \n /**\n * navigationRoute?: string\n *\n * option to set the combined route for the icon, logo, and toolbarTitle.\n */\n @Input('navigationRoute') navigationRoute: string;\n\n /**\n * Checks if `ESC` should close the sidenav\n * Should only close it for `push` and `over` modes\n */\n get disableClose(): boolean {\n return this.mode === 'side';\n }\n\n /**\n * Checks if router was injected.\n */\n get routerEnabled(): boolean {\n return !!this._router && !!this.navigationRoute;\n }\n\n constructor(@Optional() private _router: Router) {}\n\n handleNavigationClick(): void {\n if (this.routerEnabled) {\n this._router.navigateByUrl(this.navigationRoute);\n }\n }\n\n /**\n * Proxy toggle method to access sidenav from outside (from td-layout template).\n */\n public toggle(): Promise<MatDrawerToggleResult> {\n return this.sidenav.toggle(!this.sidenav.opened);\n }\n\n /**\n * Proxy open method to access sidenav from outside (from td-layout template).\n */\n public open(): Promise<MatDrawerToggleResult> {\n return this.sidenav.open();\n }\n\n /**\n * Proxy close method to access sidenav from outside (from td-layout template).\n */\n public close(): Promise<MatDrawerToggleResult> {\n return this.sidenav.close();\n }\n\n}\n","import { Optional, Directive, Input, Renderer2, ElementRef, Inject, forwardRef } from '@angular/core';\nimport { TdLayoutNavListComponent } from './layout-nav-list.component';\nimport { LayoutToggle } from '../layout-toggle.class';\n\n@Directive({\n selector: '[tdLayoutNavListToggle]',\n})\nexport class TdLayoutNavListToggleDirective extends LayoutToggle {\n\n @Input('tdLayoutNavListToggle') \n set tdLayoutNavListToggle(tdLayoutNavListToggle: boolean) {\n this.disabled = !(<any>tdLayoutNavListToggle === '' || tdLayoutNavListToggle);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutNavListComponent)) layout: TdLayoutNavListComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.toggle();\n }\n}\n\n@Directive({\n selector: '[tdLayoutNavListClose]',\n})\nexport class TdLayoutNavListCloseDirective extends LayoutToggle {\n \n @Input('tdLayoutNavListClose') \n set tdLayoutNavListClose(tdLayoutNavListClose: boolean) {\n this.disabled = !(<any>tdLayoutNavListClose === '' || tdLayoutNavListClose);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutNavListComponent)) layout: TdLayoutNavListComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.close();\n }\n}\n\n@Directive({\n selector: '[tdLayoutNavListOpen]',\n})\nexport class TdLayoutNavListOpenDirective extends LayoutToggle {\n\n @Input('tdLayoutNavListOpen') \n set tdLayoutNavListOpen(tdLayoutNavListOpen: boolean) {\n this.disabled = !(<any>tdLayoutNavListOpen === '' || tdLayoutNavListOpen);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutNavListComponent)) layout: TdLayoutNavListComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.open();\n }\n}\n","import { Component } from '@angular/core';\nimport { Input } from '@angular/core';\n\n@Component({\n selector: 'td-layout-card-over',\n styleUrls: ['./layout-card-over.component.scss' ],\n templateUrl: './layout-card-over.component.html',\n})\nexport class TdLayoutCardOverComponent {\n\n /**\n * cardTitle?: string\n *\n * Title set in card.\n */\n @Input('cardTitle') cardTitle: string;\n\n /**\n * cardSubtitle?: string\n *\n * Subtitle set in card.\n */\n @Input('cardSubtitle') cardSubtitle: string;\n\n /**\n * cardWidth?: string\n *\n * Card flex width in %.\n * Defaults to 70%.\n */\n @Input('cardWidth') cardWidth: number = 70;\n\n /**\n * color?: string\n *\n * toolbar color option: primary | accent | warn.\n * If [color] is not set, primary is used.\n */\n @Input('color') color: string = 'primary';\n\n}\n","import { Component, Directive, Input, ViewChild } from '@angular/core';\n\nimport { MatSidenav, MatDrawerToggleResult } from '@angular/material/sidenav';\n\nimport { ILayoutTogglable } from '../layout-toggle.class';\n\n@Component({\n selector: 'td-layout-manage-list',\n styleUrls: ['./layout-manage-list.component.scss' ],\n templateUrl: './layout-manage-list.component.html',\n})\nexport class TdLayoutManageListComponent implements ILayoutTogglable {\n\n @ViewChild(MatSidenav) sidenav: MatSidenav;\n\n /**\n * mode?: 'side', 'push' or 'over'\n *\n * The mode or styling of the sidenav.\n * Defaults to \"side\".\n * See \"MatSidenav\" documentation for more info.\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('mode') mode: 'side' | 'push' | 'over' = 'side';\n\n /**\n * opened?: boolean\n *\n * Whether or not the sidenav is opened. Use this binding to open/close the sidenav.\n * Defaults to \"true\".\n *\n * See \"MatSidenav\" documentation for more info.\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('opened') opened: boolean = true;\n\n /**\n * sidenavWidth?: string\n *\n * Sets the \"width\" of the sidenav in either \"px\" or \"%\"\n * Defaults to \"257px\".\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('sidenavWidth') sidenavWidth: string = '257px';\n\n /**\n * containerAutosize?: boolean\n *\n * Sets \"autosize\" of the sidenav-container.\n * Defaults to \"false\".\n *\n * See documentation for more info and potential performance risks.\n * \n * https://github.com/angular/material2/blob/master/src/lib/sidenav/sidenav.md#resizing-an-open-sidenav\n */\n @Input('containerAutosize') containerAutosize: boolean = false;\n\n /**\n * Checks if `ESC` should close the sidenav\n * Should only close it for `push` and `over` modes\n */\n get disableClose(): boolean {\n return this.mode === 'side';\n }\n\n /**\n * Proxy toggle method to access sidenav from outside (from td-layout template).\n */\n public toggle(): Promise<MatDrawerToggleResult> {\n return this.sidenav.toggle(!this.sidenav.opened);\n }\n\n /**\n * Proxy open method to access sidenav from outside (from td-layout template).\n */\n public open(): Promise<MatDrawerToggleResult> {\n return this.sidenav.open();\n }\n\n /**\n * Proxy close method to access sidenav from outside (from td-layout template).\n */\n public close(): Promise<MatDrawerToggleResult> {\n return this.sidenav.close();\n }\n\n}\n","import { Optional, Directive, Input, Renderer2, ElementRef, Inject, forwardRef } from '@angular/core';\nimport { TdLayoutManageListComponent } from './layout-manage-list.component';\nimport { LayoutToggle } from '../layout-toggle.class';\n\n@Directive({\n selector: '[tdLayoutManageListToggle]',\n})\nexport class TdLayoutManageListToggleDirective extends LayoutToggle {\n\n @Input('tdLayoutManageListToggle') \n set tdLayoutManageListToggle(tdLayoutManageListToggle: boolean) {\n this.disabled = !(<any>tdLayoutManageListToggle === '' || tdLayoutManageListToggle);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutManageListComponent)) layout: TdLayoutManageListComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.toggle();\n }\n}\n\n@Directive({\n selector: '[tdLayoutManageListClose]',\n})\nexport class TdLayoutManageListCloseDirective extends LayoutToggle {\n \n @Input('tdLayoutManageListClose') \n set tdLayoutManageListClose(tdLayoutManageListClose: boolean) {\n this.disabled = !(<any>tdLayoutManageListClose === '' || tdLayoutManageListClose);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutManageListComponent)) layout: TdLayoutManageListComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.close();\n }\n}\n\n@Directive({\n selector: '[tdLayoutManageListOpen]',\n})\nexport class TdLayoutManageListOpenDirective extends LayoutToggle {\n\n @Input('tdLayoutManageListOpen') \n set tdLayoutManageListOpen(tdLayoutManageListOpen: boolean) {\n this.disabled = !(<any>tdLayoutManageListOpen === '' || tdLayoutManageListOpen);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutManageListComponent)) layout: TdLayoutManageListComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.open();\n }\n}\n","import { Component, Input, Renderer2, ElementRef } from '@angular/core';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'td-layout-footer,td-layout-footer-inner',\n styleUrls: ['./layout-footer.component.scss' ],\n templateUrl: './layout-footer.component.html',\n})\nexport class TdLayoutFooterComponent {\n\n private _color: 'primary' | 'accent' | 'warn';\n\n /**\n * color?: string\n *\n * Optional color option: primary | accent | warn.\n */\n @Input('color')\n set color(color: 'primary' | 'accent' | 'warn') {\n if (color) {\n this._renderer.removeClass(this._elementRef.nativeElement, 'mat-' + this._color);\n this._color = color;\n this._renderer.addClass(this._elementRef.nativeElement, 'mat-' + this._color);\n }\n }\n get color(): 'primary' | 'accent' | 'warn' {\n return this._color;\n }\n\n constructor(private _renderer: Renderer2,\n private _elementRef: ElementRef) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-layout-footer');\n }\n\n}\n","import { Component, Directive, Input, ContentChildren, OnInit, OnDestroy, forwardRef, Inject,\n QueryList, SecurityContext, Optional } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { SafeResourceUrl, SafeStyle, DomSanitizer } from '@angular/platform-browser';\nimport { MatDrawerToggleResult } from '@angular/material/sidenav';\n\nimport { Subscription } from 'rxjs';\n\nimport { TdLayoutComponent } from '../layout.component';\n\nimport { tdCollapseAnimation } from '@covalent/core/common';\n\n@Directive({\n selector: '[td-navigation-drawer-menu]',\n})\nexport class TdNavigationDrawerMenuDirective {\n\n}\n\n@Directive({\n selector: '[td-navigation-drawer-toolbar]',\n})\nexport class TdNavigationDrawerToolbarDirective {\n\n}\n\n@Component({\n selector: 'td-navigation-drawer',\n styleUrls: ['./navigation-drawer.component.scss' ],\n templateUrl: './navigation-drawer.component.html',\n animations: [ tdCollapseAnimation ],\n})\nexport class TdNavigationDrawerComponent implements OnInit, OnDestroy {\n\n private _closeSubscription: Subscription;\n private _menuToggled: boolean = false;\n private _backgroundImage: SafeStyle;\n\n get menuToggled(): boolean {\n return this._menuToggled;\n }\n\n @ContentChildren(TdNavigationDrawerMenuDirective) _drawerMenu: QueryList<TdNavigationDrawerMenuDirective>;\n\n @ContentChildren(TdNavigationDrawerToolbarDirective) _toolbar: QueryList<TdNavigationDrawerToolbarDirective>;\n\n /**\n * Checks if there is a [TdNavigationDrawerMenuDirective] has content.\n */\n get isMenuAvailable(): boolean {\n return this._drawerMenu ? this._drawerMenu.length > 0 : false;\n }\n\n /**\n * Checks if there is a [TdNavigationDrawerToolbarDirective] has content.\n */\n get isCustomToolbar(): boolean {\n return this._toolbar ? this._toolbar.length > 0 : false;\n }\n\n /**\n * Checks if there is a background image for the toolbar.\n */\n get isBackgroundAvailable(): boolean {\n return !!this._backgroundImage;\n }\n\n /**\n * sidenavTitle?: string\n * Title set in sideNav.\n */\n @Input('sidenavTitle') sidenavTitle: string;\n\n /**\n * icon?: string\n *\n * icon name to be displayed before the title\n */\n @Input('icon') icon: string;\n\n /**\n * logo?: string\n *\n * logo icon name to be displayed before the title.\n * If [icon] is set, then this will not be shown.\n */\n @Input('logo') logo: string;\n\n /**\n * avatar?: string\n *\n * avatar url to be displayed before the title\n * If [icon] or [logo] are set, then this will not be shown.\n */\n @Input('avatar') avatar: string;\n\n /**\n * color?: string\n *\n * toolbar color option: primary | accent | warn.\n * If [color] is not set, default is used.\n */\n @Input('color') color: string;\n\n /**\n * navigationRoute?: string\n *\n * option to set the combined route for the icon, logo, and sidenavTitle.\n */\n @Input('navigationRoute') navigationRoute: string;\n\n /**\n * backgroundUrl?: SafeResourceUrl\n *\n * image to be displayed as the background of the toolbar.\n * URL used will be sanitized, but it should be always from a trusted source to avoid XSS.\n */\n @Input('backgroundUrl')\n // TODO Angular complains with warnings if this is type [SafeResourceUrl].. so we will make it <any> until its fixed.\n // https://github.com/webpack/webpack/issues/2977\n set backgroundUrl(backgroundUrl: any) {\n if (backgroundUrl) {\n let sanitizedUrl: string = this._sanitize.sanitize(SecurityContext.RESOURCE_URL, backgroundUrl);\n this._backgroundImage = this._sanitize.sanitize(SecurityContext.STYLE, 'url(' + sanitizedUrl + ')');\n }\n }\n get backgroundImage(): SafeStyle {\n return this._backgroundImage;\n }\n\n /**\n * name?: string\n *\n * string to be displayed as part of the navigation drawer sublabel.\n * if [email] is not set, then [name] will be the toggle menu text.\n */\n @Input('name') name: string;\n\n /**\n * email?: string\n *\n * string to be displayed as part of the navigation drawer sublabel in the [toggle] menu text.\n * if [email] and [name] are not set, then the toggle menu is not rendered.\n */\n @Input('email') email: string;\n\n /**\n * Checks if router was injected.\n */\n get routerEnabled(): boolean {\n return !!this._router && !!this.navigationRoute;\n }\n\n constructor(@Inject(forwardRef(() => TdLayoutComponent)) private _layout: TdLayoutComponent,\n @Optional() private _router: Router,\n private _sanitize: DomSanitizer) {}\n\n ngOnInit(): void {\n this._closeSubscription = this._layout.sidenav.openedChange.subscribe((opened: boolean) => {\n if (!opened) {\n this._menuToggled = false;\n }\n });\n }\n\n ngOnDestroy(): void {\n if (this._closeSubscription) {\n this._closeSubscription.unsubscribe();\n this._closeSubscription = undefined;\n }\n }\n\n toggleMenu(): void {\n if (this.isMenuAvailable) {\n this._menuToggled = !this._menuToggled;\n }\n }\n\n handleNavigationClick(): void {\n if (this.routerEnabled) {\n this._router.navigateByUrl(this.navigationRoute);\n this.close();\n }\n }\n\n /**\n * Proxy toggle method to access sidenav from outside (from td-layout template).\n */\n public toggle(): Promise<MatDrawerToggleResult> {\n return this._layout.toggle();\n }\n\n /**\n * Proxy open method to access sidenav from outside (from td-layout template).\n */\n public open(): Promise<MatDrawerToggleResult> {\n return this._layout.open();\n }\n\n /**\n * Proxy close method to access sidenav from outside (from td-layout template).\n */\n public close(): Promise<MatDrawerToggleResult> {\n return this._layout.close();\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { ScrollDispatchModule } from '@angular/cdk/scrolling';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDividerModule } from '@angular/material/divider';\n\nimport { TdLayoutComponent } from './layout.component';\nimport { TdLayoutToggleDirective, TdLayoutCloseDirective, TdLayoutOpenDirective } from './layout.directives';\nimport { TdLayoutNavComponent } from './layout-nav/layout-nav.component';\nimport { TdLayoutNavListComponent } from './layout-nav-list/layout-nav-list.component';\nimport {\n TdLayoutNavListToggleDirective, TdLayoutNavListCloseDirective, TdLayoutNavListOpenDirective,\n} from './layout-nav-list/layout-nav-list.directives';\nimport { TdLayoutCardOverComponent } from './layout-card-over/layout-card-over.component';\nimport { TdLayoutManageListComponent } from './layout-manage-list/layout-manage-list.component';\nimport {\n TdLayoutManageListToggleDirective, TdLayoutManageListCloseDirective, TdLayoutManageListOpenDirective,\n} from './layout-manage-list/layout-manage-list.directives';\nimport { TdLayoutFooterComponent } from './layout-footer/layout-footer.component';\n\nimport {\n TdNavigationDrawerComponent, TdNavigationDrawerMenuDirective, TdNavigationDrawerToolbarDirective,\n} from './navigation-drawer/navigation-drawer.component';\n\nconst TD_LAYOUTS: Type<any>[] = [\n TdLayoutComponent,\n TdLayoutToggleDirective,\n TdLayoutCloseDirective,\n TdLayoutOpenDirective,\n\n TdLayoutNavComponent,\n\n TdLayoutNavListComponent,\n TdLayoutNavListToggleDirective,\n TdLayoutNavListCloseDirective,\n TdLayoutNavListOpenDirective,\n\n TdLayoutCardOverComponent,\n\n TdLayoutManageListComponent,\n TdLayoutManageListToggleDirective,\n TdLayoutManageListCloseDirective,\n TdLayoutManageListOpenDirective,\n\n TdLayoutFooterComponent,\n\n TdNavigationDrawerComponent,\n TdNavigationDrawerMenuDirective,\n TdNavigationDrawerToolbarDirective,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n ScrollDispatchModule,\n MatSidenavModule,\n MatToolbarModule,\n MatButtonModule,\n MatIconModule,\n MatCardModule,\n MatDividerModule,\n ],\n declarations: [\n TD_LAYOUTS,\n ],\n exports: [\n TD_LAYOUTS,\n ],\n})\nexport class CovalentLayoutModule {\n\n}\n","import { Component, ViewChild, TemplateRef, ChangeDetectorRef, ChangeDetectionStrategy, ElementRef, DoCheck } from '@angular/core';\nimport { AnimationEvent } from '@angular/animations';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Observable, Subject } from 'rxjs';\n\nexport enum LoadingType {\n Circular = 'circular',\n Linear = 'linear',\n}\n\nexport enum LoadingMode {\n Determinate = 'determinate',\n Indeterminate = 'indeterminate',\n}\n\nexport enum LoadingStrategy {\n Overlay = 'overlay',\n Replace = 'replace',\n}\n\nexport enum LoadingStyle {\n FullScreen = 'fullscreen',\n Overlay = 'overlay',\n None = 'none',\n}\n\nimport { tdFadeInOutAnimation } from '@covalent/core/common';\n\nexport const TD_CIRCLE_DIAMETER: number = 100;\n\n@Component({\n selector: 'td-loading',\n styleUrls: ['./loading.component.scss' ],\n templateUrl: './loading.component.html',\n animations: [\n tdFadeInOutAnimation,\n ],\n})\nexport class TdLoadingComponent implements DoCheck {\n\n private _animationIn: Subject<any> = new Subject<any>();\n private _animationOut: Subject<any> = new Subject<any>();\n private _mode: LoadingMode = LoadingMode.Indeterminate;\n private _defaultMode: LoadingMode = LoadingMode.Indeterminate;\n private _value: number = 0;\n private _circleDiameter: number = TD_CIRCLE_DIAMETER;\n\n /**\n * Flag for animation\n */\n animation: boolean = false;\n\n /**\n * Content injected into loading component.\n */\n content: TemplatePortal<any>;\n\n /**\n * Sets mode of [TdLoadingComponent] to LoadingMode.Determinate or LoadingMode.Indeterminate\n */\n set mode(mode: LoadingMode) {\n this._defaultMode = mode;\n }\n get mode(): LoadingMode {\n return this._mode;\n }\n\n /**\n * Sets value of [TdLoadingComponent] if mode is 'LoadingMode.Determinate'\n */\n set value(value: number) {\n this._value = value;\n // Check for changes for `OnPush` change detection\n this._changeDetectorRef.markForCheck();\n }\n get value(): number {\n return this._value;\n }\n\n style: LoadingStyle = LoadingStyle.None;\n\n /**\n * height: number\n * Sets height of [TdLoadingComponent].\n */\n height: number;\n\n /**\n * type: LoadingType\n * Sets type of [TdLoadingComponent] rendered.\n */\n type: LoadingType = LoadingType.Circular;\n\n /**\n * color: primary' | 'accent' | 'warn'\n * Sets theme color of [TdLoadingComponent] rendered.\n */\n color: 'primary' | 'accent' | 'warn' = 'primary';\n\n constructor(private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef) {}\n\n ngDoCheck(): void {\n // When overlay is used and the host width has a value greater than 1px\n // set the circle diameter when possible incase the loading component was rendered in a hidden state\n if (this.isOverlay() && this._hostHeight() > 1) {\n if (this.animation) {\n this._setCircleDiameter();\n this._changeDetectorRef.markForCheck();\n }\n }\n }\n\n getHeight(): string {\n // Ignore height if style is `overlay` or `fullscreen`.\n // Add height if child elements have a height and style is `none`, else return default height.\n if (this.isOverlay() || this.isFullScreen()) {\n return undefined;\n } else {\n return this.height ? `${this.height}px` : '150px';\n }\n }\n\n getCircleDiameter(): number {\n return this._circleDiameter;\n }\n\n getCircleStrokeWidth(): number {\n // we calculate the stroke width by setting it as 10% of its diameter\n let strokeWidth: number = this.getCircleDiameter() / 10;\n return Math.abs(strokeWidth);\n }\n\n isCircular(): boolean {\n return this.type === LoadingType.Circular;\n }\n\n isLinear(): boolean {\n return this.type === LoadingType.Linear;\n }\n\n isFullScreen(): boolean {\n return this.style === LoadingStyle.FullScreen;\n }\n\n isOverlay(): boolean {\n return this.style === LoadingStyle.Overlay;\n }\n\n animationComplete(event: AnimationEvent): void {\n // Check to see if its \"in\" or \"out\" animation to execute the proper callback\n if (!event.fromState) {\n this.inAnimationCompleted();\n } else {\n this.outAnimationCompleted();\n }\n }\n\n inAnimationCompleted(): void {\n this._animationIn.next(undefined);\n }\n\n outAnimationCompleted(): void {\n /* little hack to reset the loader value and animation before removing it from DOM\n * else, the loader will appear with prev value when its registered again\n * and will do an animation going prev value to 0.\n */\n this.value = 0;\n // Check for changes for `OnPush` change detection\n this._changeDetectorRef.markForCheck();\n this._animationOut.next(undefined);\n }\n\n /**\n * Starts in animation and returns an observable for completition event.\n */\n startInAnimation(): Observable<any> {\n /* need to switch back to the selected mode, so we have saved it in another variable\n * and then recover it. (issue with protractor)\n */\n this._mode = this._defaultMode;\n // Set values before the animations starts\n this._setCircleDiameter();\n // Check for changes for `OnPush` change detection\n this.animation = true;\n this._changeDetectorRef.markForCheck();\n return this._animationIn.asObservable();\n }\n\n /**\n * Starts out animation and returns an observable for completition event.\n */\n startOutAnimation(): Observable<any> {\n this.animation = false;\n /* need to switch back and forth from determinate/indeterminate so the setInterval()\n * inside mat-progress-spinner stops and protractor doesnt timeout waiting to sync.\n */\n this._mode = LoadingMode.Determinate;\n // Check for changes for `OnPush` change detection\n this._changeDetectorRef.markForCheck();\n return this._animationOut.asObservable();\n }\n\n /**\n * Calculate the proper diameter for the circle and set it\n */\n private _setCircleDiameter(): void {\n // we set a default diameter of 100 since this is the default in material\n let diameter: number = TD_CIRCLE_DIAMETER;\n // if height is provided, then we take that as diameter\n if (this.height) {\n diameter = this.height;\n // else if its not provided, then we take the host height\n } else if (this.height === undefined) {\n diameter = this._hostHeight();\n }\n // if the diameter is over TD_CIRCLE_DIAMETER, we set TD_CIRCLE_DIAMETER\n if (!!diameter && diameter <= TD_CIRCLE_DIAMETER) {\n this._circleDiameter = Math.floor(diameter);\n } else {\n this._circleDiameter = TD_CIRCLE_DIAMETER;\n }\n }\n\n /**\n * Returns the host height of the loading component\n */\n private _hostHeight(): number {\n if (<HTMLElement>this._elementRef.nativeElement) {\n return (<HTMLElement>this._elementRef.nativeElement).getBoundingClientRect().height;\n }\n return 0;\n }\n}\n","import { Injectable, ComponentFactoryResolver, ChangeDetectorRef, Provider, SkipSelf, Optional, EmbeddedViewRef } from '@angular/core';\nimport { Injector, ComponentRef, ViewContainerRef, TemplateRef } from '@angular/core';\nimport { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\n\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { TdLoadingContext } from '../directives/loading.directive';\nimport { TdLoadingComponent, LoadingStyle } from '../loading.component';\nimport { ITdLoadingConfig } from './loading.service';\n\nexport interface IInternalLoadingOptions extends ITdLoadingConfig {\n height?: number;\n style?: LoadingStyle;\n}\n\nexport interface ILoadingRef {\n observable: Observable<any>;\n componentRef: ComponentRef<any>;\n subject?: Subject<any>;\n times?: number;\n}\n\n/**\n * NOTE: @internal usage only.\n */\n@Injectable()\nexport class TdLoadingFactory {\n\n constructor(private _componentFactoryResolver: ComponentFactoryResolver,\n private _overlay: Overlay,\n private _injector: Injector) {\n }\n\n /**\n * Uses material `Overlay` services to create a DOM element and attach the loading component\n * into it. Leveraging the state and configuration from it.\n *\n * Saves a reference in context to be called when registering/resolving the loading element.\n */\n public createFullScreenComponent(options: ITdLoadingConfig): ILoadingRef {\n (<IInternalLoadingOptions>options).height = undefined;\n (<IInternalLoadingOptions>options).style = LoadingStyle.FullScreen;\n let loadingRef: ILoadingRef = this._initializeContext();\n let loading: boolean = false;\n let overlayRef: OverlayRef;\n loadingRef.observable.pipe(\n distinctUntilChanged(),\n ).subscribe((registered: number) => {\n if (registered > 0 && !loading) {\n loading = true;\n overlayRef = this._createOverlay();\n loadingRef.componentRef = overlayRef.attach(new ComponentPortal(TdLoadingComponent));\n this._mapOptions(options, loadingRef.componentRef.instance);\n loadingRef.componentRef.instance.startInAnimation();\n loadingRef.componentRef.changeDetectorRef.detectChanges();\n } else if (registered <= 0 && loading) {\n loading = false;\n let subs: Subscription = loadingRef.componentRef.instance.startOutAnimation().subscribe(() => {\n subs.unsubscribe();\n loadingRef.componentRef.destroy();\n overlayRef.detach();\n overlayRef.dispose();\n });\n }\n });\n return loadingRef;\n }\n\n /**\n * Creates a loading component dynamically and attaches it into the given viewContainerRef.\n * Leverages TemplatePortals from material to inject the template inside of it so it fits\n * perfectly when overlaying it.\n *\n * Saves a reference in context to be called when registering/resolving the loading element.\n */\n public createOverlayComponent(options: ITdLoadingConfig, viewContainerRef: ViewContainerRef,\n templateRef: TemplateRef<Object>): ILoadingRef {\n (<IInternalLoadingOptions>options).height = undefined;\n (<IInternalLoadingOptions>options).style = LoadingStyle.Overlay;\n let loadingRef: ILoadingRef = this._createComponent(options);\n let loading: boolean = false;\n loadingRef.componentRef.instance.content = new TemplatePortal(templateRef, viewContainerRef);\n viewContainerRef.clear();\n viewContainerRef.insert(loadingRef.componentRef.hostView, 0);\n loadingRef.observable.pipe(\n distinctUntilChanged(),\n ).subscribe((registered: number) => {\n if (registered > 0 && !loading) {\n loading = true;\n loadingRef.componentRef.instance.startInAnimation();\n } else if (registered <= 0 && loading) {\n loading = false;\n loadingRef.componentRef.instance.startOutAnimation();\n }\n });\n return loadingRef;\n }\n\n /**\n * Creates a loading component dynamically and attaches it into the given viewContainerRef.\n * Replaces the template with the loading component depending if it was registered or resolved.\n *\n * Saves a reference in context to be called when registering/resolving the loading element.\n */\n public createReplaceComponent(options: ITdLoadingConfig, viewContainerRef: ViewContainerRef,\n templateRef: TemplateRef<Object>, context: TdLoadingContext): ILoadingRef {\n let nativeElement: HTMLElement = <HTMLElement>templateRef.elementRef.nativeElement;\n (<IInternalLoadingOptions>options).height = nativeElement.nextElementSibling ?\n nativeElement.nextElementSibling.scrollHeight : undefined;\n (<IInternalLoadingOptions>options).style = LoadingStyle.None;\n let loadingRef: ILoadingRef = this._createComponent(options);\n let loading: boolean = false;\n // passing context so when the template is attached, we can keep the reference of the variables\n let contentRef: EmbeddedViewRef<Object> = viewContainerRef.createEmbeddedView(templateRef, context);\n loadingRef.observable.pipe(\n distinctUntilChanged(),\n ).subscribe((registered: number) => {\n if (registered > 0 && !loading) {\n loading = true;\n // detach the content and attach the loader if loader is there\n let index: number = viewContainerRef.indexOf(loadingRef.componentRef.hostView);\n if (index < 0) {\n viewContainerRef.detach(viewContainerRef.indexOf(contentRef));\n viewContainerRef.insert(loadingRef.componentRef.hostView, 0);\n }\n loadingRef.componentRef.instance.startInAnimation();\n } else if (registered <= 0 && loading) {\n loading = false;\n let subs: Subscription = loadingRef.componentRef.instance.startOutAnimation().subscribe(() => {\n subs.unsubscribe();\n // detach loader and attach the content if content is there\n let index: number = viewContainerRef.indexOf(contentRef);\n if (index < 0) {\n viewContainerRef.detach(viewContainerRef.indexOf(loadingRef.componentRef.hostView));\n viewContainerRef.insert(contentRef, 0);\n }\n /**\n * Need to call \"markForCheck\" and \"detectChanges\" on attached template, so its detected by parent component when attached\n * with \"OnPush\" change detection\n */\n contentRef.detectChanges();\n contentRef.markForCheck();\n });\n }\n });\n return loadingRef;\n }\n\n /**\n * Creates a fullscreen overlay for the loading usage.\n */\n private _createOverlay(): OverlayRef {\n let state: OverlayConfig = new OverlayConfig();\n state.hasBackdrop = false;\n state.positionStrategy = this._overlay.position().global().centerHorizontally().centerVertically();\n return this._overlay.create(state);\n }\n\n /**\n * Creates a generic component dynamically waiting to be attached to a viewContainerRef.\n */\n private _createComponent(options: IInternalLoadingOptions): ILoadingRef {\n let compRef: ILoadingRef = this._initializeContext();\n compRef.componentRef = this._componentFactoryResolver\n .resolveComponentFactory(TdLoadingComponent).create(this._injector);\n this._mapOptions(options, compRef.componentRef.instance);\n return compRef;\n }\n\n /**\n * Initialize context for loading component.\n */\n private _initializeContext(): ILoadingRef {\n let subject: Subject<any> = new Subject<any>();\n return {\n observable: subject.asObservable(),\n subject: subject,\n componentRef: undefined,\n times: 0,\n };\n }\n\n /**\n * Maps configuration to the loading component instance.\n */\n private _mapOptions(options: IInternalLoadingOptions, instance: TdLoadingComponent): void {\n instance.style = options.style;\n if (options.type !== undefined) {\n instance.type = options.type;\n }\n if (options.height !== undefined) {\n instance.height = options.height;\n }\n if (options.mode !== undefined) {\n instance.mode = options.mode;\n }\n if (options.color !== undefined) {\n instance.color = options.color;\n }\n }\n}\n\nexport function LOADING_FACTORY_PROVIDER_FACTORY(\n parent: TdLoadingFactory, componentFactoryResolver: ComponentFactoryResolver, overlay: Overlay, injector: Injector): TdLoadingFactory {\n return parent || new TdLoadingFactory(componentFactoryResolver, overlay, injector);\n}\n\nexport const LOADING_FACTORY_PROVIDER: Provider = {\n // If there is already a service available, use that. Otherwise, provide a new one.\n provide: TdLoadingFactory,\n deps: [[new Optional(), new SkipSelf(), TdLoadingFactory], ComponentFactoryResolver, Overlay, Injector],\n useFactory: LOADING_FACTORY_PROVIDER_FACTORY,\n};\n","import { Injectable, Provider, SkipSelf, Optional } from '@angular/core';\nimport { ViewContainerRef, TemplateRef } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\n\nimport { TdLoadingContext } from '../directives/loading.directive';\nimport { TdLoadingComponent, LoadingMode, LoadingStrategy, LoadingType } from '../loading.component';\nimport { TdLoadingFactory, ILoadingRef } from './loading.factory';\n\nexport interface ITdLoadingConfig {\n name: string;\n type?: LoadingType;\n mode?: LoadingMode;\n color?: 'primary' | 'accent' | 'warn';\n}\n\nexport class TdLoadingConfig implements ITdLoadingConfig {\n name: string;\n type?: LoadingType;\n mode?: LoadingMode;\n color?: 'primary' | 'accent' | 'warn';\n\n constructor(config: ITdLoadingConfig) {\n this.name = config.name;\n if (!this.name) {\n throw Error('Name is required for [TdLoading] configuration.');\n }\n this.mode = config.mode ? config.mode : LoadingMode.Indeterminate;\n this.type = config.type ? config.type : LoadingType.Circular;\n this.color = config.color ? config.color : 'primary';\n }\n}\n\nexport interface ITdLoadingDirectiveConfig extends ITdLoadingConfig {\n strategy?: LoadingStrategy;\n}\n\nexport class TdLoadingDirectiveConfig extends TdLoadingConfig implements ITdLoadingDirectiveConfig {\n name: string;\n type: LoadingType;\n mode: LoadingMode;\n strategy: LoadingStrategy;\n\n constructor(config: ITdLoadingDirectiveConfig) {\n super(config);\n this.strategy = config.strategy ? config.strategy : LoadingStrategy.Replace;\n }\n}\n\n@Injectable()\nexport class TdLoadingService {\n\n private _context: {[key: string]: ILoadingRef} = {};\n private _timeouts: {[key: string]: any} = {};\n\n constructor(private _loadingFactory: TdLoadingFactory) {\n this.create({\n name: 'td-loading-main',\n });\n }\n\n /**\n * params:\n * - config: ILoadingDirectiveConfig\n * - viewContainerRef: ViewContainerRef\n * - templateRef: TemplateRef<Object>\n *\n * Creates an replace loading mask and attaches it to the viewContainerRef.\n * Replaces the templateRef with the mask when a request is registered on it.\n *\n * NOTE: @internal usage only.\n */\n createComponent(config: ITdLoadingDirectiveConfig, viewContainerRef: ViewContainerRef,\n templateRef: TemplateRef<Object>, context: TdLoadingContext): ILoadingRef {\n let directiveConfig: TdLoadingDirectiveConfig = new TdLoadingDirectiveConfig(config);\n if (this._context[directiveConfig.name]) {\n throw Error(`Name duplication: [TdLoading] directive has a name conflict with ${directiveConfig.name}.`);\n }\n if (directiveConfig.strategy === LoadingStrategy.Overlay) {\n this._context[directiveConfig.name] = this._loadingFactory.createOverlayComponent(directiveConfig, viewContainerRef, templateRef);\n } else {\n this._context[directiveConfig.name] = this._loadingFactory.createReplaceComponent(directiveConfig, viewContainerRef, templateRef, context);\n }\n return this._context[directiveConfig.name];\n }\n\n /**\n * params:\n * - config: ITdLoadingConfig\n *\n * Creates a fullscreen loading mask and attaches it to the DOM with the given configuration.\n * Only displayed when the mask has a request registered on it.\n */\n public create(config: ITdLoadingConfig): void {\n let fullscreenConfig: TdLoadingConfig = new TdLoadingConfig(config);\n this.removeComponent(fullscreenConfig.name);\n this._context[fullscreenConfig.name] = this._loadingFactory.createFullScreenComponent(fullscreenConfig);\n }\n\n /**\n * params:\n * - name: string\n *\n * Removes `loading` component from service context.\n */\n public removeComponent(name: string): void {\n if (this._context[name]) {\n this._context[name].subject.unsubscribe();\n if (this._context[name].componentRef) {\n this._context[name].componentRef.destroy();\n }\n this._context[name] = undefined;\n delete this._context[name];\n }\n }\n\n /**\n * params:\n * - name: string\n * - registers?: number\n * returns: true if successful\n *\n * Resolves a request for the loading mask referenced by the name parameter.\n * Can optionally pass registers argument to set a number of register calls.\n *\n * If no paramemeters are used, then default main mask will be used.\n *\n * e.g. loadingService.register()\n */\n public register(name: string = 'td-loading-main', registers: number = 1): boolean {\n // try registering into the service if the loading component has been instanciated or if it exists.\n if (this._context[name]) {\n registers = registers < 1 ? 1 : registers;\n this._context[name].times += registers;\n this._context[name].subject.next(this._context[name].times);\n return true;\n } else {\n // if it doesnt exist, set a timeout so its registered after change detection happens\n // this in case \"register\" occured on the `ngOnInit` lifehook cycle.\n if (!this._timeouts[name]) {\n this._timeouts[name] = setTimeout(() => {\n this.register(name, registers);\n });\n } else {\n // if it timeout occured and still doesnt exist, it means the tiemout wasnt needed so we clear it.\n this._clearTimeout(name);\n }\n }\n return false;\n }\n\n /**\n * params:\n * - name: string\n * - resolves?: number\n * returns: true if successful\n *\n * Resolves a request for the loading mask referenced by the name parameter.\n * Can optionally pass resolves argument to set a number of resolve calls.\n *\n * If no paramemeters are used, then default main mask will be used.\n *\n * e.g. loadingService.resolve()\n */\n public resolve(name: string = 'td-loading-main', resolves: number = 1): boolean {\n // clear timeout if the loading component is \"resolved\" before its \"registered\"\n this._clearTimeout(name);\n if (this._context[name]) {\n resolves = resolves < 1 ? 1 : resolves;\n if (this._context[name].times > 0) {\n let times: number = this._context[name].times;\n times -= resolves;\n this._context[name].times = times < 0 ? 0 : times;\n }\n this._context[name].subject.next(this._context[name].times);\n return true;\n }\n return false;\n }\n\n /**\n * params:\n * - name: string\n * returns: true if successful\n *\n * Resolves all request for the loading mask referenced by the name parameter.\n *\n * If no paramemeters are used, then default main mask will be used.\n *\n * e.g. loadingService.resolveAll()\n */\n public resolveAll(name: string = 'td-loading-main'): boolean {\n // clear timeout if the loading component is \"resolved\" before its \"registered\"\n this._clearTimeout(name);\n if (this._context[name]) {\n this._context[name].times = 0;\n this._context[name].subject.next(this._context[name].times);\n return true;\n }\n return false;\n }\n\n /**\n * params:\n * - name: string\n * - value: number\n * returns: true if successful\n *\n * Set value on a loading mask referenced by the name parameter.\n * Usage only available if its mode is 'determinate' and if loading is showing.\n */\n public setValue(name: string, value: number): boolean {\n if (this._context[name]) {\n let instance: TdLoadingComponent = this._context[name].componentRef.instance;\n if (instance.mode === LoadingMode.Determinate && instance.animation) {\n instance.value = value;\n return true;\n }\n }\n return false;\n }\n\n /**\n * Clears timeout linked to the name.\n * @param name Name of the loading component to be cleared\n */\n private _clearTimeout(name: string): void {\n clearTimeout(this._timeouts[name]);\n delete this._timeouts[name];\n }\n}\n\nexport function LOADING_PROVIDER_FACTORY(\n parent: TdLoadingService, loadingFactory: TdLoadingFactory): TdLoadingService {\n return parent || new TdLoadingService(loadingFactory);\n}\n\nexport const LOADING_PROVIDER: Provider = {\n // If there is already a service available, use that. Otherwise, provide a new one.\n provide: TdLoadingService,\n deps: [[new Optional(), new SkipSelf(), TdLoadingService], TdLoadingFactory],\n useFactory: LOADING_PROVIDER_FACTORY,\n};\n","import { Directive, Input, OnInit, OnDestroy } from '@angular/core';\nimport { ViewContainerRef, TemplateRef } from '@angular/core';\n\nimport { LoadingType, LoadingMode, LoadingStrategy, TdLoadingComponent } from '../loading.component';\nimport { TdLoadingService } from '../services/loading.service';\nimport { ILoadingRef } from '../services/loading.factory';\n\n/**\n * Context class for variable reference\n */\nexport class TdLoadingContext {\n public $implicit: any = undefined;\n public tdLoading: any = undefined;\n}\n\n// Constant for generation of the id for the next component\nlet TD_LOADING_NEXT_ID: number = 0;\n\n@Directive({\n selector: '[tdLoading]',\n})\nexport class TdLoadingDirective implements OnInit, OnDestroy {\n\n private _context: TdLoadingContext = new TdLoadingContext();\n private _type: LoadingType;\n private _mode: LoadingMode;\n private _strategy: LoadingStrategy;\n private _name: string;\n private _loadingRef: ILoadingRef;\n\n /**\n * tdLoading: string\n * Name reference of the loading mask, used to register/resolve requests to the mask.\n */\n @Input('tdLoading')\n set name(name: string) {\n if (!this._name) {\n if (name) {\n this._name = name;\n }\n }\n }\n\n /**\n * tdLoadingUntil?: any\n * If its null, undefined or false it will be used to register requests to the mask.\n * Else if its any value that can be resolved as true, it will resolve the mask.\n * [name] is optional when using [until], but can still be used to register/resolve it manually.\n */\n @Input('tdLoadingUntil')\n set until(until: any) {\n if (!this._name) {\n this._name = 'td-loading-until-' + TD_LOADING_NEXT_ID++;\n }\n this._context.$implicit = this._context.tdLoading = until;\n if (!until) {\n this._loadingService.register(this._name);\n } else {\n this._loadingService.resolveAll(this._name);\n }\n }\n\n /**\n * tdLoadingType?: LoadingType or ['linear' | 'circular']\n * Sets the type of loading mask depending on value.\n * Defaults to [LoadingType.Circular | 'circular'].\n */\n @Input('tdLoadingType')\n set type(type: LoadingType) {\n switch (type) {\n case LoadingType.Linear:\n this._type = LoadingType.Linear;\n break;\n default:\n this._type = LoadingType.Circular;\n break;\n }\n }\n\n /**\n * tdLoadingMode?: LoadingMode or ['determinate' | 'indeterminate']\n * Sets the mode of loading mask depending on value.\n * Defaults to [LoadingMode.Indeterminate | 'indeterminate'].\n */\n @Input('tdLoadingMode')\n set mode(mode: LoadingMode) {\n switch (mode) {\n case LoadingMode.Determinate:\n this._mode = LoadingMode.Determinate;\n break;\n default:\n this._mode = LoadingMode.Indeterminate;\n break;\n }\n }\n\n /**\n * tdLoadingStrategy?: LoadingStrategy or ['replace' | 'overlay']\n * Sets the strategy of loading mask depending on value.\n * Defaults to [LoadingMode.Replace | 'replace'].\n */\n @Input('tdLoadingStrategy')\n set strategy(stategy: LoadingStrategy) {\n switch (stategy) {\n case LoadingStrategy.Overlay:\n this._strategy = LoadingStrategy.Overlay;\n break;\n default:\n this._strategy = LoadingStrategy.Replace;\n break;\n }\n }\n\n /**\n * tdLoadingColor?: \"primary\" | \"accent\" | \"warn\"\n * Sets the theme color of the loading component. Defaults to \"primary\"\n */\n @Input('tdLoadingColor') color: 'primary' | 'accent' | 'warn' = 'primary';\n\n constructor(private _viewContainerRef: ViewContainerRef,\n private _templateRef: TemplateRef<TdLoadingContext>,\n private _loadingService: TdLoadingService) {}\n\n /**\n * Registers component in the DOM, so it will be available when calling resolve/register.\n */\n ngOnInit(): void {\n this._registerComponent();\n }\n\n /**\n * Remove component when directive is destroyed.\n */\n ngOnDestroy(): void {\n this._loadingService.removeComponent(this._name);\n this._loadingRef = undefined;\n }\n\n /**\n * Creates [TdLoadingComponent] and attaches it to this directive's [ViewContainerRef].\n * Passes this directive's [TemplateRef] to modify DOM depending on loading `strategy`.\n */\n private _registerComponent(): void {\n if (!this._name) {\n throw new Error('Name is needed to register loading directive');\n }\n // Check if `TdLoadingComponent` has been created before trying to add one again.\n // There is a weird edge case when using `[routerLinkActive]` that calls the `ngOnInit` twice in a row\n if (!this._loadingRef) {\n this._loadingRef = this._loadingService.createComponent({\n name: this._name,\n type: this._type,\n mode: this._mode,\n color: this.color,\n strategy: this._strategy,\n }, this._viewContainerRef, this._templateRef, this._context);\n }\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { TdLoadingService, LOADING_PROVIDER } from './services/loading.service';\nimport { TdLoadingFactory, LOADING_FACTORY_PROVIDER } from './services/loading.factory';\nimport { TdLoadingDirective } from './directives/loading.directive';\nimport { TdLoadingComponent } from './loading.component';\n\nconst TD_LOADING: Type<any>[] = [\n TdLoadingComponent,\n TdLoadingDirective,\n];\n\nconst TD_LOADING_ENTRY_COMPONENTS: Type<any>[] = [\n TdLoadingComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n OverlayModule,\n PortalModule,\n ],\n declarations: [\n TD_LOADING,\n ],\n exports: [\n TD_LOADING,\n ],\n providers: [\n LOADING_FACTORY_PROVIDER,\n LOADING_PROVIDER,\n ],\n entryComponents: [\n TD_LOADING_ENTRY_COMPONENTS,\n ],\n})\nexport class CovalentLoadingModule {\n\n}\n","import { Injectable, NgZone, SkipSelf, Optional, Provider } from '@angular/core';\nimport { Observable, BehaviorSubject, Subscription, fromEvent } from 'rxjs';\n\n@Injectable()\nexport class TdMediaService {\n\n private _resizing: boolean = false;\n private _globalSubscription: Subscription;\n private _queryMap: Map<string, string> = new Map<string, string>();\n private _querySources: { [key: string]: BehaviorSubject<boolean>} = {};\n private _queryObservables: {[key: string]: Observable<boolean>} = {};\n\n constructor(private _ngZone: NgZone) {\n this._queryMap.set('xs', '(max-width: 599px)');\n this._queryMap.set('gt-xs', '(min-width: 600px)');\n this._queryMap.set('sm', '(min-width: 600px) and (max-width: 959px)');\n this._queryMap.set('gt-sm', '(min-width: 960px)');\n this._queryMap.set('md', '(min-width: 960px) and (max-width: 1279px)');\n this._queryMap.set('gt-md', '(min-width: 1280px)');\n this._queryMap.set('lg', '(min-width: 1280px) and (max-width: 1919px)');\n this._queryMap.set('gt-lg', '(min-width: 1920px)');\n this._queryMap.set('xl', '(min-width: 1920px)');\n this._queryMap.set('landscape', '(orientation: landscape)');\n this._queryMap.set('portrait', '(orientation: portrait)');\n this._queryMap.set('print', 'print');\n\n this._resizing = false;\n // we make sure that the resize checking happend outside of Angular since it happens often\n this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n return fromEvent(window, 'resize').subscribe(() => {\n // way to prevent the resize event from triggering the match media if there is already one event running already.\n if (!this._resizing) {\n this._resizing = true;\n setTimeout(() => {\n this._onResize();\n this._resizing = false;\n }, 100);\n }\n });\n });\n }\n\n /**\n * Deregisters a query so its stops being notified or used.\n */\n deregisterQuery(query: string): void {\n if (this._queryMap.get(query.toLowerCase())) {\n query = this._queryMap.get(query.toLowerCase());\n }\n this._querySources[query].unsubscribe();\n delete this._querySources[query];\n delete this._queryObservables[query];\n }\n\n /**\n * Used to evaluate whether a given media query is true or false given the current device's screen / window size.\n */\n public query(query: string): boolean {\n if (this._queryMap.get(query.toLowerCase())) {\n query = this._queryMap.get(query.toLowerCase());\n }\n return this._ngZone.run(() => {\n return matchMedia(query).matches;\n });\n }\n\n /**\n * Registers a media query and returns an [Observable] that will re-evaluate and\n * return if the given media query matches on window resize.\n * Note: don't forget to unsubscribe from [Observable] when finished watching.\n */\n public registerQuery(query: string): Observable<boolean> {\n if (this._queryMap.get(query.toLowerCase())) {\n query = this._queryMap.get(query.toLowerCase());\n }\n if (!this._querySources[query]) {\n this._querySources[query] = new BehaviorSubject<boolean>(matchMedia(query).matches);\n this._queryObservables[query] = this._querySources[query].asObservable();\n }\n return this._queryObservables[query];\n }\n\n /**\n * Trigger a match media event on all subscribed observables.\n */\n public broadcast(): void {\n this._onResize();\n }\n\n private _onResize(): void {\n for (let query in this._querySources) {\n this._ngZone.run(() => {\n this._matchMediaTrigger(query);\n });\n }\n }\n\n private _matchMediaTrigger(query: string): void {\n this._querySources[query].next(matchMedia(query).matches);\n }\n}\n\nexport function MEDIA_PROVIDER_FACTORY(\n parent: TdMediaService, ngZone: NgZone): TdMediaService {\n return parent || new TdMediaService(ngZone);\n}\n\nexport const MEDIA_PROVIDER: Provider = {\n // If there is already a service available, use that. Otherwise, provide a new one.\n provide: TdMediaService,\n deps: [[new Optional(), new SkipSelf(), TdMediaService], NgZone],\n useFactory: MEDIA_PROVIDER_FACTORY,\n};\n","import { Directive, ElementRef, Input, OnInit, OnDestroy } from '@angular/core';\nimport { Renderer2 } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { TdMediaService } from '../services/media.service';\n\n@Directive({\n selector: '[tdMediaToggle]',\n})\nexport class TdMediaToggleDirective implements OnInit, OnDestroy {\n\n private _subscription: Subscription;\n\n private _query: string;\n private _matches: boolean = false;\n private _attributes: {[key: string]: string} = {};\n private _styles: {[key: string]: string} = {};\n private _classes: string[] = [];\n\n /**\n * tdMediaToggle: string\n * Media query used to evaluate screen/window size.\n * Toggles attributes, classes and styles if media query is matched.\n */\n @Input('tdMediaToggle')\n set query(query: string) {\n if (!query) {\n throw new Error('Query needed for [tdMediaToggle] directive.');\n }\n this._query = query;\n }\n\n /**\n * mediaAttributes: {[key: string]: string}\n * Attributes to be toggled when media query matches.\n */\n @Input('mediaAttributes')\n set attributes(attributes: any) {\n this._attributes = attributes;\n }\n\n /**\n * mediaClasses: string[]\n * CSS Classes to be toggled when media query matches.\n */\n @Input('mediaClasses')\n set classes(classes: string[]) {\n this._classes = classes;\n }\n\n /**\n * mediaStyles: {[key: string]: string}\n * CSS Styles to be toggled when media query matches.\n */\n @Input('mediaStyles')\n set styles(styles: any) {\n this._styles = styles;\n }\n\n constructor(private _renderer: Renderer2, private _elementRef: ElementRef, private _mediaService: TdMediaService) { }\n\n ngOnInit(): void {\n this._mediaChange(this._mediaService.query(this._query));\n this._subscription = this._mediaService.registerQuery(this._query).subscribe((matches: boolean) => {\n this._mediaChange(matches);\n });\n }\n\n ngOnDestroy(): void {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n }\n\n private _mediaChange(matches: boolean): void {\n this._matches = matches;\n this._changeAttributes();\n this._changeClasses();\n this._changeStyles();\n }\n\n private _changeAttributes(): void {\n for (let attr in this._attributes) {\n if (this._matches) {\n this._renderer.setAttribute(this._elementRef.nativeElement, attr, this._attributes[attr]);\n } else {\n this._renderer.removeAttribute(this._elementRef.nativeElement, attr);\n }\n }\n }\n\n private _changeClasses(): void {\n this._classes.forEach((className: string) => {\n if (this._matches) {\n this._renderer.addClass(this._elementRef.nativeElement, className);\n } else {\n this._renderer.removeClass(this._elementRef.nativeElement, className);\n }\n });\n }\n\n private _changeStyles(): void {\n for (let style in this._styles) {\n if (this._matches) {\n this._renderer.setStyle(this._elementRef.nativeElement, style, this._styles[style]);\n } else {\n this._renderer.removeStyle(this._elementRef.nativeElement, style);\n }\n }\n }\n\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\n\nimport { MEDIA_PROVIDER } from './services/media.service';\nimport { TdMediaToggleDirective } from './directives/media-toggle.directive';\n\nconst TD_MEDIA: Type<any>[] = [\n TdMediaToggleDirective,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n ],\n declarations: [\n TD_MEDIA,\n ],\n exports: [\n TD_MEDIA,\n ],\n providers: [\n MEDIA_PROVIDER,\n ],\n})\nexport class CovalentMediaModule {\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'td-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.scss'],\n})\nexport class TdMenuComponent {\n\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\n\nimport { TdMenuComponent } from './menu.component';\n\nconst TD_MENU: Type<any>[] = [\n TdMenuComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n MatMenuModule,\n MatDividerModule,\n ],\n declarations: [\n TD_MENU,\n ],\n exports: [\n TD_MENU,\n ],\n})\nexport class CovalentMenuModule {\n\n}\n","import { Component, ViewChild, OnInit, Input, Output, EventEmitter, Optional,\n ChangeDetectionStrategy, ChangeDetectorRef, forwardRef } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Dir } from '@angular/cdk/bidi';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { debounceTime, skip } from 'rxjs/operators';\n\nimport { IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\nexport class TdSearchInputBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) { }\n}\n\n/* tslint:disable-next-line */\nexport const _TdSearchInputMixinBase = mixinControlValueAccessor(TdSearchInputBase);\n\n@Component({\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdSearchInputComponent),\n multi: true,\n }],\n selector: 'td-search-input',\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['value'],\n animations: [\n trigger('searchState', [\n state('hide-left', style({\n transform: 'translateX(-150%)',\n display: 'none',\n })),\n state('hide-right', style({\n transform: 'translateX(150%)',\n display: 'none',\n })),\n state('show', style({\n transform: 'translateX(0%)',\n display: 'block',\n })),\n transition('* => show', animate('200ms ease-in')),\n transition('show => *', animate('200ms ease-out')),\n ]),\n ],\n})\nexport class TdSearchInputComponent extends _TdSearchInputMixinBase implements IControlValueAccessor, OnInit {\n\n @ViewChild(MatInput) _input: MatInput;\n\n /**\n * appearance?: MatFormFieldAppearance\n * Appearance style for the underlying input component.\n */\n @Input('appearance') appearance: MatFormFieldAppearance;\n\n /**\n * showUnderline?: boolean\n * Sets if the input underline should be visible. Defaults to 'false'.\n */\n @Input('showUnderline') showUnderline: boolean = false;\n\n /**\n * debounce?: number\n * Debounce timeout between keypresses. Defaults to 400.\n */\n @Input('debounce') debounce: number = 400;\n\n /**\n * placeholder?: string\n * Placeholder for the underlying input component.\n */\n @Input('placeholder') placeholder: string;\n\n /**\n * clearIcon?: string\n * The icon used to clear the search input.\n * Defaults to 'cancel' icon.\n */\n @Input('clearIcon') clearIcon: string = 'cancel';\n\n /**\n * searchDebounce: function($event)\n * Event emitted after the [debounce] timeout.\n */\n @Output('searchDebounce') onSearchDebounce: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * search: function($event)\n * Event emitted after the key enter has been pressed.\n */\n @Output('search') onSearch: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * clear: function()\n * Event emitted after the clear icon has been clicked.\n */\n @Output('clear') onClear: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * blur: function()\n * Event emitted after the blur event has been called in underlying input.\n */\n @Output('blur') onBlur: EventEmitter<void> = new EventEmitter<void>();\n\n get isRTL(): boolean {\n if (this._dir) {\n return this._dir.dir === 'rtl';\n }\n return false;\n }\n\n constructor(@Optional() private _dir: Dir,\n _changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n }\n\n ngOnInit(): void {\n this._input.ngControl.valueChanges.pipe(\n debounceTime(this.debounce),\n skip(1), // skip first change when value is set to undefined\n ).subscribe((value: string) => {\n this._searchTermChanged(value);\n });\n }\n\n /**\n * Method to focus to underlying input.\n */\n focus(): void {\n this._input.focus();\n }\n\n handleBlur(): void {\n this.onBlur.emit(undefined);\n }\n\n stopPropagation(event: Event): void {\n event.stopPropagation();\n }\n\n handleSearch(event: Event): void {\n this.stopPropagation(event);\n this.onSearch.emit(this.value);\n }\n\n /**\n * Method to clear the underlying input.\n */\n clearSearch(): void {\n this.value = '';\n this._changeDetectorRef.markForCheck();\n this.onClear.emit(undefined);\n }\n\n private _searchTermChanged(value: string): void {\n this.onSearchDebounce.emit(value);\n }\n\n}\n","import { Component, ViewChild, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { trigger, state, style, transition, animate, AUTO_STYLE } from '@angular/animations';\n\nimport { TdSearchInputComponent } from '../search-input/search-input.component';\nimport { IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\nexport class TdSearchBoxBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) { }\n}\n\n/* tslint:disable-next-line */\nexport const _TdSearchBoxMixinBase = mixinControlValueAccessor(TdSearchBoxBase);\n\n@Component({\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdSearchBoxComponent),\n multi: true,\n }],\n selector: 'td-search-box',\n templateUrl: './search-box.component.html',\n styleUrls: ['./search-box.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['value'],\n animations: [\n trigger('inputState', [\n state('0', style({\n width: '0%',\n margin: '0px',\n })),\n state('1', style({\n width: '100%',\n margin: AUTO_STYLE,\n })),\n transition('0 => 1', animate('200ms ease-in')),\n transition('1 => 0', animate('200ms ease-out')),\n ]),\n ],\n})\nexport class TdSearchBoxComponent extends _TdSearchBoxMixinBase implements IControlValueAccessor {\n\n private _searchVisible: boolean = false;\n @ViewChild(TdSearchInputComponent) _searchInput: TdSearchInputComponent;\n\n get searchVisible(): boolean {\n return this._searchVisible;\n }\n\n /**\n * backIcon?: string\n * The icon used to close the search toggle, only shown when [alwaysVisible] is false.\n * Defaults to 'search' icon.\n */\n @Input('backIcon') backIcon: string = 'search';\n\n /**\n * searchIcon?: string\n * The icon used to open/focus the search toggle.\n * Defaults to 'search' icon.\n */\n @Input('searchIcon') searchIcon: string = 'search';\n\n /**\n * clearIcon?: string\n * The icon used to clear the search input.\n * Defaults to 'cancel' icon.\n */\n @Input('clearIcon') clearIcon: string = 'cancel';\n\n /**\n * showUnderline?: boolean\n * Sets if the input underline should be visible. Defaults to 'false'.\n */\n @Input('showUnderline') showUnderline: boolean = false;\n\n /**\n * debounce?: number\n * Debounce timeout between keypresses. Defaults to 400.\n */\n @Input('debounce') debounce: number = 400;\n\n /**\n * alwaysVisible?: boolean\n * Sets if the input should always be visible. Defaults to 'false'.\n */\n @Input('alwaysVisible') alwaysVisible: boolean = false;\n\n /**\n * placeholder?: string\n * Placeholder for the underlying input component.\n */\n @Input('placeholder') placeholder: string;\n\n /**\n * searchDebounce: function($event)\n * Event emitted after the [debounce] timeout.\n */\n @Output('searchDebounce') onSearchDebounce: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * search: function($event)\n * Event emitted after the key enter has been pressed.\n */\n @Output('search') onSearch: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * clear: function()\n * Event emitted after the clear icon has been clicked.\n */\n @Output('clear') onClear: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * blur: function()\n * Event emitted after the blur event has been called in underlying input.\n */\n @Output('blur') onBlur: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(_changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n }\n\n /**\n * Method executed when the search icon is clicked.\n */\n searchClicked(): void {\n if (!this.alwaysVisible && this._searchVisible) {\n this.value = '';\n this.handleClear();\n } else if (this.alwaysVisible || !this._searchVisible) {\n this._searchInput.focus();\n }\n this.toggleVisibility();\n }\n\n toggleVisibility(): void {\n this._searchVisible = !this._searchVisible;\n this._changeDetectorRef.markForCheck();\n }\n\n handleSearchDebounce(value: string): void {\n this.onSearchDebounce.emit(value);\n }\n\n handleSearch(value: string): void {\n this.onSearch.emit(value);\n }\n\n handleClear(): void {\n this.onClear.emit(undefined);\n }\n\n handleBlur(): void {\n this.onBlur.emit(undefined);\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TdSearchInputComponent } from './search-input/search-input.component';\nimport { TdSearchBoxComponent } from './search-box/search-box.component';\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n ],\n declarations: [\n TdSearchInputComponent,\n TdSearchBoxComponent,\n ],\n exports: [\n TdSearchInputComponent,\n TdSearchBoxComponent,\n ],\n})\nexport class CovalentSearchModule {\n\n}\n","import {\n Component,\n ElementRef,\n HostBinding,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n} from '@angular/core';\n\n@Component({\n selector: 'td-breadcrumb, a[td-breadcrumb]',\n styleUrls: ['./breadcrumb.component.scss'],\n templateUrl: './breadcrumb.component.html',\n /* tslint:disable-next-line */\n host: {\n class: 'mat-button td-breadcrumb',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdBreadcrumbComponent implements AfterViewInit {\n\n private _displayCrumb: boolean = true;\n private _width: number = 0;\n // Sets the icon url shown between breadcrumbs. Defaults to 'chevron_right'\n separatorIcon: string = 'chevron_right';\n // Should show the right chevron or not before the label\n _displayIcon: boolean = true;\n\n get displayCrumb(): boolean {\n return this._displayCrumb;\n }\n\n /**\n * Whether to display the crumb or not\n */\n set displayCrumb(shouldDisplay: boolean) {\n this._displayCrumb = shouldDisplay;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Width of the DOM element of the crumb\n */\n get width(): number {\n return this._width;\n }\n\n /**\n * Gets the display style of the crumb\n */\n @HostBinding('style.display')\n get displayBinding(): string {\n // Set the display to none on the component, just in case the end user is hiding\n // and showing them instead of the component doing itself for reasons like responsive\n return this._displayCrumb ? undefined : 'none';\n }\n\n constructor(private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef) {\n }\n\n ngAfterViewInit(): void {\n // set the width from the actual rendered DOM element\n setTimeout(() => {\n this._width = (<HTMLElement>this._elementRef.nativeElement).getBoundingClientRect().width;\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * Stop click propagation when clicking on icon\n */\n _handleIconClick(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n}\n","import {\n Component,\n ContentChildren,\n QueryList,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n AfterContentInit,\n DoCheck,\n ChangeDetectorRef,\n ElementRef,\n Input,\n} from '@angular/core';\n\nimport {\n Subscription,\n Subject,\n fromEvent,\n merge,\n} from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n} from 'rxjs/operators';\n\nimport { TdBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\n\n@Component({\n selector: 'td-breadcrumbs',\n styleUrls: ['./breadcrumbs.component.scss'],\n templateUrl: './breadcrumbs.component.html',\n /* tslint:disable-next-line */\n host: {\n class: 'td-breadcrumbs',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdBreadcrumbsComponent implements OnInit, DoCheck, AfterContentInit, OnDestroy {\n\n private _resizeSubscription: Subscription = Subscription.EMPTY;\n private _widthSubject: Subject<number> = new Subject<number>();\n private _resizing: boolean = false;\n\n // all the sub components, which are the individual breadcrumbs\n @ContentChildren(TdBreadcrumbComponent) _breadcrumbs: QueryList<TdBreadcrumbComponent>;\n // the list of hidden breadcrumbs not shown right now (responsive)\n hiddenBreadcrumbs: TdBreadcrumbComponent[] = [];\n\n /**\n * Sets the icon url shown between breadcrumbs. Defaults to 'chevron_right'.\n */\n @Input('separatorIcon') separatorIcon: string = 'chevron_right';\n\n constructor(private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef) {\n }\n\n ngOnInit(): void {\n this._resizeSubscription = merge(\n fromEvent(window, 'resize').pipe(\n debounceTime(10),\n ),\n this._widthSubject.asObservable().pipe(\n distinctUntilChanged(),\n ),\n ).subscribe(() => {\n if (!this._resizing) {\n this._resizing = true;\n setTimeout(() => {\n this._calculateVisibility();\n this._resizing = false;\n this._changeDetectorRef.markForCheck();\n }, 100);\n }\n });\n }\n\n ngDoCheck(): void {\n if (this._elementRef && this._elementRef.nativeElement) {\n this._widthSubject.next(this.nativeElementWidth);\n }\n }\n\n ngAfterContentInit(): void {\n this.setCrumbIcons();\n this._changeDetectorRef.markForCheck();\n }\n\n ngOnDestroy(): void {\n this._resizeSubscription.unsubscribe();\n }\n\n /*\n * Current width of the element container\n */\n get nativeElementWidth(): number {\n let element: HTMLElement = (<HTMLElement>this._elementRef.nativeElement);\n // Need to take into account border, margin and padding that might be around all the crumbs\n let style: CSSStyleDeclaration = window.getComputedStyle(element);\n let borderLeft: number = parseInt(style.borderLeft, 10);\n let borderRight: number = parseInt(style.borderRight, 10);\n let marginLeft: number = parseInt(style.marginLeft, 10);\n let marginRight: number = parseInt(style.marginRight, 10);\n let paddingLeft: number = parseInt(style.paddingLeft, 10);\n let paddingRight: number = parseInt(style.paddingRight, 10);\n\n return element.getBoundingClientRect().width - borderLeft - borderRight - marginLeft - marginRight - paddingLeft - paddingRight;\n }\n\n /**\n * The total count of individual breadcrumbs\n */\n get count(): number {\n return this._breadcrumbs ? this._breadcrumbs.length : 0;\n }\n\n /**\n * Set the crumb icon separators\n */\n private setCrumbIcons(): void {\n let breadcrumbArray: TdBreadcrumbComponent[] = this._breadcrumbs.toArray();\n if (breadcrumbArray.length > 0) {\n // don't show the icon on the last breadcrumb\n breadcrumbArray[breadcrumbArray.length - 1]._displayIcon = false;\n }\n breadcrumbArray.forEach((breadcrumb: TdBreadcrumbComponent) => {\n breadcrumb.separatorIcon = this.separatorIcon;\n });\n }\n\n private _calculateVisibility(): void {\n let crumbsArray: TdBreadcrumbComponent[] = this._breadcrumbs.toArray();\n let crumbWidthSum: number = 0;\n let hiddenCrumbs: TdBreadcrumbComponent[] = [];\n // loop through crumbs in reverse order to calculate which ones should be removed\n for (let i: number = crumbsArray.length - 1; i >= 0; i--) {\n let breadcrumb: TdBreadcrumbComponent = crumbsArray[i];\n // if crumb exceeds width, then we skip it from the sum and add it into the hiddencrumbs array\n // and hide it\n if ((crumbWidthSum + breadcrumb.width) > this.nativeElementWidth) {\n breadcrumb.displayCrumb = false;\n hiddenCrumbs.push(breadcrumb);\n } else {\n // else we show it\n breadcrumb.displayCrumb = true;\n }\n crumbWidthSum += breadcrumb.width;\n }\n this.hiddenBreadcrumbs = hiddenCrumbs;\n this._changeDetectorRef.markForCheck();\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { TdBreadcrumbsComponent } from './breadcrumbs.component';\nimport { TdBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n ],\n declarations: [\n TdBreadcrumbsComponent,\n TdBreadcrumbComponent,\n ],\n exports: [\n TdBreadcrumbsComponent,\n TdBreadcrumbComponent,\n ],\n})\nexport class CovalentBreadcrumbsModule {\n\n}\n","import { Component, Directive, Input, Output, TemplateRef, ViewChild,\n ViewContainerRef, ContentChild, OnInit } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { TemplatePortalDirective, TemplatePortal } from '@angular/cdk/portal';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport { ICanDisable, mixinDisabled, ICanDisableRipple, mixinDisableRipple } from '@covalent/core/common';\n\nexport enum StepState {\n None = 'none',\n Required = 'required',\n Complete = 'complete',\n}\n\n@Directive({\n selector: '[td-step-label]ng-template',\n})\nexport class TdStepLabelDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Directive({\n selector: '[td-step-actions]ng-template',\n})\nexport class TdStepActionsDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Directive({\n selector: '[td-step-summary]ng-template',\n})\nexport class TdStepSummaryDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\nexport class TdStepBase {}\n\n/* tslint:disable-next-line */\nexport const _TdStepMixinBase = mixinDisableRipple(mixinDisabled(TdStepBase));\n\n@Component({\n selector: 'td-step',\n inputs: ['disabled', 'disableRipple'],\n templateUrl: './step.component.html',\n})\nexport class TdStepComponent extends _TdStepMixinBase implements OnInit, ICanDisable, ICanDisableRipple {\n\n private _active: boolean = false;\n private _state: StepState = StepState.None;\n\n private _contentPortal: TemplatePortal<any>;\n get stepContent(): TemplatePortal<any> {\n return this._contentPortal;\n }\n\n @ViewChild(TemplateRef) _content: TemplateRef<any>;\n @ContentChild(TdStepLabelDirective) stepLabel: TdStepLabelDirective;\n @ContentChild(TdStepActionsDirective) stepActions: TdStepActionsDirective;\n @ContentChild(TdStepSummaryDirective) stepSummary: TdStepSummaryDirective;\n\n /**\n * label?: string\n * Sets label of [TdStepComponent] header.\n * Defaults to 'Step #'\n */\n @Input('label') label: string;\n\n /**\n * sublabel?: string\n * Sets sublabel of [TdStepComponent] header.\n */\n @Input('sublabel') sublabel: string;\n\n /**\n * active?: boolean\n * Toggles [TdStepComponent] between active/deactive.\n */\n @Input('active')\n set active(active: boolean) {\n this._setActive(coerceBooleanProperty(active));\n }\n get active(): boolean {\n return this._active;\n }\n\n /**\n * state?: StepState or ['none' | 'required' | 'complete']\n * Sets state of [TdStepComponent] depending on value.\n * Defaults to [StepState.None | 'none'].\n */\n @Input('state')\n set state(state: StepState) {\n switch (state) {\n case StepState.Complete:\n this._state = StepState.Complete;\n break;\n case StepState.Required:\n this._state = StepState.Required;\n break;\n default:\n this._state = StepState.None;\n break;\n }\n }\n get state(): StepState {\n return this._state;\n }\n\n /**\n * activated?: function\n * Event emitted when [TdStepComponent] is activated.\n */\n @Output('activated') onActivated: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * deactivated?: function\n * Event emitted when [TdStepComponent] is deactivated.\n */\n @Output('deactivated') onDeactivated: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(private _viewContainerRef: ViewContainerRef) {\n super();\n }\n\n ngOnInit(): void {\n this._contentPortal = new TemplatePortal(this._content, this._viewContainerRef);\n }\n\n /**\n * Toggle active state of [TdStepComponent]\n * retuns 'true' if successful, else 'false'.\n */\n toggle(): boolean {\n return this._setActive(!this._active);\n }\n\n /**\n * Opens [TdStepComponent]\n * retuns 'true' if successful, else 'false'.\n */\n open(): boolean {\n return this._setActive(true);\n }\n\n /**\n * Closes [TdStepComponent]\n * retuns 'true' if successful, else 'false'.\n */\n close(): boolean {\n return this._setActive(false);\n }\n\n /**\n * Returns 'true' if [state] equals to [StepState.Complete | 'complete'], else 'false'.\n */\n isComplete(): boolean {\n return this._state === StepState.Complete;\n }\n\n /** Method executed when the disabled value changes */\n onDisabledChange(v: boolean): void {\n if (v && this._active) {\n this._active = false;\n this._onDeactivated();\n }\n }\n\n /**\n * Method to change active state internally and emit the [onActivated] event if 'true' or [onDeactivated]\n * event if 'false'. (Blocked if [disabled] is 'true')\n * returns true if successfully changed state\n */\n private _setActive(newActive: boolean): boolean {\n if (this.disabled) {\n return false;\n }\n if (this._active !== newActive) {\n this._active = newActive;\n if (newActive) {\n this._onActivated();\n } else {\n this._onDeactivated();\n }\n return true;\n }\n return false;\n }\n\n private _onActivated(): void {\n this.onActivated.emit(undefined);\n }\n\n private _onDeactivated(): void {\n this.onDeactivated.emit(undefined);\n }\n}\n","import { Component, Input, Output } from '@angular/core';\nimport { OnDestroy, AfterContentInit } from '@angular/core';\nimport { EventEmitter, ContentChildren, QueryList } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { TdStepComponent } from './step.component';\n\nexport interface IStepChangeEvent {\n newStep: TdStepComponent;\n prevStep: TdStepComponent;\n}\n\nexport enum StepMode {\n Vertical = 'vertical',\n Horizontal = 'horizontal',\n}\n\n@Component({\n selector: 'td-steps',\n styleUrls: ['./steps.component.scss' ],\n templateUrl: './steps.component.html',\n /* tslint:disable-next-line */\n host: {\n class: 'td-steps',\n },\n})\nexport class TdStepsComponent implements OnDestroy, AfterContentInit {\n\n private _subcriptions: Subscription[];\n private _mode: StepMode = StepMode.Vertical;\n private _steps: QueryList<TdStepComponent>;\n\n @ContentChildren(TdStepComponent)\n set stepsContent(steps: QueryList<TdStepComponent>) {\n if (steps) {\n this._steps = steps;\n this._registerSteps();\n }\n }\n\n get steps(): TdStepComponent[] {\n return this._steps.toArray();\n }\n prevStep: TdStepComponent;\n\n /**\n * mode?: StepMode or [\"vertical\" | \"horizontal\"]\n * Defines if the mode of the [TdStepsComponent]. Defaults to [StepMode.Vertical | \"vertical\"]\n */\n @Input('mode')\n set mode(mode: StepMode) {\n switch (mode) {\n case StepMode.Horizontal:\n this._mode = StepMode.Horizontal;\n break;\n default:\n this._mode = StepMode.Vertical;\n }\n }\n get mode(): StepMode {\n return this._mode;\n }\n\n /**\n * stepChange?: function\n * Method to be executed when [onStepChange] event is emitted.\n * Emits an [IStepChangeEvent] implemented object.\n */\n @Output('stepChange') onStepChange: EventEmitter<IStepChangeEvent> = new EventEmitter<IStepChangeEvent>();\n\n /**\n * Executed after content is initialized, loops through any [TdStepComponent] children elements,\n * assigns them a number and subscribes as an observer to their [onActivated] event.\n */\n ngAfterContentInit(): void {\n this._registerSteps();\n }\n\n /**\n * Unsubscribes from [TdStepComponent] children elements when component is destroyed.\n */\n ngOnDestroy(): void {\n this._deregisterSteps();\n }\n\n /**\n * Returns 'true' if [mode] equals to [StepMode.Horizontal | 'horizontal'], else 'false'.\n */\n isHorizontal(): boolean {\n return this._mode === StepMode.Horizontal;\n }\n\n /**\n * Returns 'true' if [mode] equals to [StepMode.Vertical | 'vertical'], else 'false'.\n */\n isVertical(): boolean {\n return this._mode === StepMode.Vertical;\n }\n\n areStepsActive(): boolean {\n return this._steps.filter((step: TdStepComponent) => {\n return step.active;\n }).length > 0;\n }\n\n /**\n * Wraps previous and new [TdStepComponent] numbers in an object that implements [IStepChangeEvent]\n * and emits [onStepChange] event.\n */\n private _onStepSelection(step: TdStepComponent): void {\n if (this.prevStep !== step) {\n let prevStep: TdStepComponent = this.prevStep;\n this.prevStep = step;\n let event: IStepChangeEvent = {\n newStep: step,\n prevStep: prevStep,\n };\n this._deactivateAllBut(step);\n this.onStepChange.emit(event);\n }\n }\n\n /**\n * Loops through [TdStepComponent] children elements and deactivates them ignoring the one passed as an argument.\n */\n private _deactivateAllBut(activeStep: TdStepComponent): void {\n this._steps.filter((step: TdStepComponent) => step !== activeStep)\n .forEach((step: TdStepComponent) => {\n step.active = false;\n });\n }\n\n private _registerSteps(): void {\n this._subcriptions = [];\n this._steps.toArray().forEach((step: TdStepComponent) => {\n let subscription: Subscription = step.onActivated.asObservable().subscribe(() => {\n this._onStepSelection(step);\n });\n this._subcriptions.push(subscription);\n });\n }\n\n private _deregisterSteps(): void {\n if (this._subcriptions) {\n this._subcriptions.forEach((subs: Subscription) => {\n subs.unsubscribe();\n });\n this._subcriptions = undefined;\n }\n }\n}\n","import { Component, Input } from '@angular/core';\n\nimport { ICanDisable, mixinDisabled, ICanDisableRipple, mixinDisableRipple } from '@covalent/core/common';\n\nimport { StepState } from '../step.component';\n\nexport class TdStepHeaderBase {}\n\n/* tslint:disable-next-line */\nexport const _TdStepHeaderMixinBase = mixinDisableRipple(mixinDisabled(TdStepHeaderBase));\n\n@Component({\n selector: 'td-step-header',\n inputs: ['disabled', 'disableRipple'],\n styleUrls: ['./step-header.component.scss' ],\n templateUrl: './step-header.component.html',\n})\nexport class TdStepHeaderComponent extends _TdStepHeaderMixinBase implements ICanDisable, ICanDisableRipple {\n\n /**\n * Number assigned to [TdStepHeaderComponent].\n */\n @Input('number') number: number;\n\n /**\n * active?: boolean\n * Sets for active/inactive states on header.\n */\n @Input('active') active: boolean;\n\n /**\n * state?: StepState or ['none' | 'required' | 'complete']\n * Sets styles for state of header.\n * Defaults to [StepState.None | 'none'].\n */\n @Input('state') state: StepState = StepState.None;\n\n /**\n * tabIndex?: number\n * tabIndex of the step header for a11y\n */\n @Input('tabIndex') tabIndex: number;\n\n /**\n * Returns 'true' if [state] equals to [StepState.Complete | 'complete'], else 'false'.\n */\n isComplete(): boolean {\n return this.state === StepState.Complete;\n }\n\n /**\n * Returns 'true' if [state] equals to [StepState.Required | 'required'], else 'false'.\n */\n isRequired(): boolean {\n return this.state === StepState.Required;\n }\n}\n","import { Component, Input, ViewChild, ElementRef } from '@angular/core';\n\nimport { StepState } from '../step.component';\n\nimport { tdCollapseAnimation } from '@covalent/core/common';\n\n@Component({\n selector: 'td-step-body',\n styleUrls: ['./step-body.component.scss' ],\n templateUrl: './step-body.component.html',\n animations: [\n tdCollapseAnimation,\n ],\n})\nexport class TdStepBodyComponent {\n\n @ViewChild('contentRef', { read: ElementRef }) contentRef: ElementRef;\n\n get hasContent(): boolean {\n return this.contentRef &&\n (this.contentRef.nativeElement.children.length > 0 || !!this.contentRef.nativeElement.textContent.trim());\n }\n\n @ViewChild('actionsRef', { read: ElementRef }) actionsRef: ElementRef;\n\n get hasActions(): boolean {\n return this.actionsRef &&\n (this.actionsRef.nativeElement.children.length > 0 || !!this.actionsRef.nativeElement.textContent.trim());\n }\n\n @ViewChild('summaryRef', { read: ElementRef }) summaryRef: ElementRef;\n\n get hasSummary(): boolean {\n return this.summaryRef &&\n (this.summaryRef.nativeElement.children.length > 0 || !!this.summaryRef.nativeElement.textContent.trim());\n }\n\n /**\n * active?: boolean\n * Sets for active/inactive states on body.\n */\n @Input('active') active: boolean;\n\n /**\n * state?: StepState or ['none' | 'required' | 'complete']\n * Sets styles for state of body.\n * Defaults to [StepState.None | 'none'].\n */\n @Input('state') state: StepState = StepState.None;\n\n /**\n * Returns 'true' if [state] equals to [StepState.Complete | 'complete'], else 'false'.\n */\n isComplete(): boolean {\n return this.state === StepState.Complete;\n }\n}\n","import { Component, ChangeDetectionStrategy, ChangeDetectorRef, Input, ElementRef } from '@angular/core';\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport { ICanDisable, ICanDisableRipple } from '@covalent/core/common';\nimport { _TdStepMixinBase, StepState } from '../../step.component';\n\n@Component({\n selector: '[td-step-link],[tdStepLink]',\n styleUrls: ['./nav-step-link.component.scss'],\n templateUrl: './nav-step-link.component.html',\n inputs: ['disabled', 'disableRipple'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n /* tslint:disable-next-line */\n host: {\n '[class.td-step-link]': 'true',\n '[attr.tabindex]': 'disabled ? -1 : (tabIndex || 0)',\n '[attr.disabled]': 'disabled || null',\n '[class.mat-disabled]': 'disabled || null',\n '(click)': '_handleClick($event)',\n },\n})\nexport class TdNavStepLinkComponent extends _TdStepMixinBase implements ICanDisable, ICanDisableRipple {\n\n private _active: boolean = false;\n private _state: StepState = StepState.None;\n\n // Number to display in step header\n number: number;\n\n /**\n * state?: StepState or ['none' | 'required' | 'complete']\n * Sets state of component depending on value.\n * Defaults to [StepState.None | 'none'].\n */\n @Input('state')\n set state(state: StepState) {\n switch (state) {\n case StepState.Complete:\n this._state = StepState.Complete;\n break;\n case StepState.Required:\n this._state = StepState.Required;\n break;\n default:\n this._state = StepState.None;\n break;\n }\n }\n get state(): StepState {\n return this._state;\n }\n\n /**\n * label?: string\n * Label to display in step header\n * Defaults to empty\n */\n @Input('label') label: string;\n\n /**\n * sublabel?: string\n * Sublabel to display in step header\n * Defaults to empty\n */\n @Input('sublabel') sublabel: string;\n\n /**\n * active?: boolean\n * Toggles component between active/deactive.\n */\n @Input('active')\n set active(active: boolean) {\n this._active = coerceBooleanProperty(active);\n this._changeDetectorRef.markForCheck();\n }\n get active(): boolean {\n return this._active;\n }\n\n /**\n * tabIndex?: number\n * tabIndex for component\n */\n @Input('tabIndex') tabIndex: number;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef,\n public elementRef: ElementRef) {\n super();\n }\n\n _handleClick(click: Event): void {\n if (this.disabled) {\n click.preventDefault();\n click.stopImmediatePropagation();\n }\n }\n\n}\n","import { Component, Optional, ContentChildren, ViewChild, QueryList, OnDestroy, ChangeDetectionStrategy, \n AfterContentInit, AfterContentChecked, ChangeDetectorRef, ElementRef, Renderer2 } from '@angular/core';\n\nimport { Subject, merge, of } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { RIGHT_ARROW, LEFT_ARROW } from '@angular/cdk/keycodes';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\n\nimport { TdNavStepLinkComponent } from '../nav-step-link/nav-step-link.component';\n\n/**\n * The directions that scrolling can go in when the header's tabs exceed the header width. 'After'\n * will scroll the header towards the end of the tabs list and 'before' will scroll towards the\n * beginning of the list.\n */\nexport type ScrollDirection = 'after' | 'before';\n\n@Component({\n selector: 'nav[td-steps][horizontal]',\n styleUrls: ['./nav-steps-horizontal.component.scss'],\n templateUrl: './nav-steps-horizontal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n /* tslint:disable-next-line */\n host: {\n class: 'td-steps td-steps-horizontal',\n '[class.td-step-header-pagination-controls-enabled]': '_showPaginationControls',\n '[class.td-step-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n },\n})\nexport class TdNavStepsHorizontalComponent implements AfterContentChecked, AfterContentInit, OnDestroy {\n\n private _separators: HTMLElement[] = [];\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed: Subject<void> = new Subject<void>();\n\n private _widthSubject: Subject<number> = new Subject<number>();\n\n private _scrollDistance: number = 0;\n private _scrollDistanceChanged: boolean = false;\n\n /** Whether the controls for pagination should be displayed */\n _showPaginationControls: boolean = false;\n\n /** Whether the step list can be scrolled more towards the end. */\n _disableScrollAfter: boolean = true;\n\n /** Whether the step list can be scrolled more towards the beginning. */\n _disableScrollBefore: boolean = true;\n\n // all the sub components, which are the individual steps\n @ContentChildren(TdNavStepLinkComponent) _steps: QueryList<TdNavStepLinkComponent>;\n\n @ViewChild('stepListContainer') _stepListContainer: ElementRef;\n @ViewChild('stepList') _stepList: ElementRef;\n\n /*\n * Current width of the element container\n */\n get nativeElementWidth(): number {\n let element: HTMLElement = (<HTMLElement>this._elementRef.nativeElement);\n\n // Need to take into account border, margin and padding that might be around all the crumbs\n let style: CSSStyleDeclaration = window.getComputedStyle(element);\n let borderLeft: number = parseInt(style.borderLeft, 10);\n let borderRight: number = parseInt(style.borderRight, 10);\n let marginLeft: number = parseInt(style.marginLeft, 10);\n let marginRight: number = parseInt(style.marginRight, 10);\n let paddingLeft: number = parseInt(style.paddingLeft, 10);\n let paddingRight: number = parseInt(style.paddingRight, 10);\n\n return element.getBoundingClientRect().width - borderLeft - borderRight - marginLeft - marginRight - paddingLeft - paddingRight;\n }\n\n constructor(private _elementRef: ElementRef,\n private _viewportRuler: ViewportRuler,\n @Optional() private _dir: Directionality,\n private _renderer: Renderer2,\n private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngAfterContentInit(): void {\n merge(\n this._widthSubject.asObservable().pipe(\n distinctUntilChanged(),\n ),\n this._viewportRuler.change(150),\n this._dir ? this._dir.change : of(undefined),\n this._steps.changes,\n ).pipe(\n takeUntil(this._destroyed),\n ).subscribe(() => {\n this._configureSteps();\n this.updatePagination();\n this._changeDetectorRef.markForCheck();\n });\n this._configureSteps();\n this._changeDetectorRef.markForCheck();\n }\n\n ngAfterContentChecked(): void {\n if (this._elementRef && this._elementRef.nativeElement) {\n this._widthSubject.next(this.nativeElementWidth);\n }\n if (this._scrollDistanceChanged) {\n this._updateStepScrollPosition();\n this._scrollDistanceChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /**\n * Listen to right and left key events to move the the viewport.\n */\n _handleKeydown(event: KeyboardEvent): void {\n switch (event.keyCode) {\n case LEFT_ARROW:\n this._scrollHeader('before');\n event.preventDefault();\n break;\n case RIGHT_ARROW:\n this._scrollHeader('after');\n event.preventDefault();\n break;\n default:\n // do something\n }\n }\n\n /**\n * Updates the view whether pagination should be enabled or not.\n */\n updatePagination(): void {\n this._checkPaginationEnabled();\n this._checkScrollingControls();\n this._updateStepScrollPosition();\n }\n\n /** The layout direction of the containing app. */\n _getLayoutDirection(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /** Performs the CSS transformation on the step list that will cause the list to scroll. */\n _updateStepScrollPosition(): void {\n const translateX: number = this._getLayoutDirection() === 'ltr' ? -this.scrollDistance : this.scrollDistance;\n // Move step list the amount of pixels scrolled\n this._stepList.nativeElement.style.transform = `translateX(${Math.round(translateX)}px)`;\n\n // Setting the `transform` on IE will change the scroll offset of the parent, causing the\n // position to be thrown off in some cases. We have to reset it ourselves to ensure that\n // it doesn't get thrown off.\n if (this._getLayoutDirection() === 'ltr') {\n this._stepListContainer.nativeElement.scrollLeft = 0;\n } else {\n this._stepListContainer.nativeElement.scrollLeft = this._getMaxScrollDistance();\n }\n }\n\n /** Sets the distance in pixels that the step header should be transformed in the X-axis. */\n get scrollDistance(): number { return this._scrollDistance; }\n set scrollDistance(v: number) {\n this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), v));\n\n // Mark that the scroll distance has changed so that after the view is checked, the CSS\n // transformation can move the header.\n this._scrollDistanceChanged = true;\n this._checkScrollingControls();\n }\n\n /**\n * Moves the step list in the 'before' or 'after' direction (towards the beginning of the list or\n * the end of the list, respectively).\n */\n _scrollHeader(scrollDir: ScrollDirection): void {\n // Move the scroll distance one-half the length of the step list's viewport.\n this.scrollDistance += (scrollDir === 'before' ? -1 : 1) * this._stepListContainer.nativeElement.offsetWidth / 2;\n }\n\n /**\n * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n * step list is wider than the size of the header container, then the pagination controls should\n * be shown.\n */\n _checkPaginationEnabled(): void {\n const isEnabled: boolean =\n this._stepList.nativeElement.scrollWidth > this._elementRef.nativeElement.offsetWidth;\n\n if (!isEnabled) {\n this.scrollDistance = 0;\n }\n\n if (isEnabled !== this._showPaginationControls) {\n this._changeDetectorRef.markForCheck();\n }\n\n this._showPaginationControls = isEnabled;\n }\n\n /**\n * Evaluate whether the before and after controls should be enabled or disabled.\n * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n * before button. If the header is at the end of the list (scroll distance is equal to the\n * maximum distance we can scroll), then disable the after button.\n */\n _checkScrollingControls(): void {\n // Check if the pagination arrows should be activated.\n this._disableScrollBefore = this.scrollDistance === 0;\n this._disableScrollAfter = this.scrollDistance === this._getMaxScrollDistance();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n * is equal to the difference in width between the step list container and step header container.\n */\n _getMaxScrollDistance(): number {\n return (this._stepList.nativeElement.scrollWidth - this._stepListContainer.nativeElement.offsetWidth) || 0;\n }\n\n /**\n * Set the step line separators and display numbers\n */\n private _configureSteps(): void {\n this._separators.forEach((separator: HTMLElement) => {\n this._renderer.removeChild(this._stepList.nativeElement, separator);\n });\n let stepsArray: TdNavStepLinkComponent[] = this._steps.toArray();\n // set the index number of the step so can display that number in circle\n stepsArray.forEach((step: TdNavStepLinkComponent, index: number) => {\n if (index > 0 && index < stepsArray.length) {\n let separator: any = this._renderer.createElement('div');\n this._renderer.addClass(separator, 'td-horizontal-line');\n this._separators.push(separator);\n this._renderer.insertBefore(this._stepList.nativeElement, separator, step.elementRef.nativeElement);\n }\n step.number = index + 1;\n });\n \n }\n\n}\n","import { Component, ContentChildren, ViewChild, QueryList, OnDestroy, ChangeDetectionStrategy, \n AfterContentInit, Renderer2, ChangeDetectorRef, ElementRef } from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { TdNavStepLinkComponent } from '../nav-step-link/nav-step-link.component';\n\n/**\n * The directions that scrolling can go in when the header's tabs exceed the header width. 'After'\n * will scroll the header towards the end of the tabs list and 'before' will scroll towards the\n * beginning of the list.\n */\nexport type ScrollDirection = 'after' | 'before';\n\n@Component({\n selector: 'nav[td-steps][vertical]',\n styleUrls: ['./nav-steps-vertical.component.scss'],\n templateUrl: './nav-steps-vertical.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n /* tslint:disable-next-line */\n host: {\n class: 'td-steps td-steps-vertical',\n },\n})\nexport class TdNavStepsVerticalComponent implements AfterContentInit, OnDestroy {\n\n private _separators: HTMLElement[] = [];\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed: Subject<void> = new Subject<void>();\n\n // all the sub components, which are the individual steps\n @ContentChildren(TdNavStepLinkComponent) _steps: QueryList<TdNavStepLinkComponent>;\n\n @ViewChild('stepList') _stepList: ElementRef;\n\n constructor(private _renderer: Renderer2,\n private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngAfterContentInit(): void {\n this._steps.changes.pipe(\n takeUntil(this._destroyed),\n ).subscribe(() => {\n this._configureSteps();\n this._changeDetectorRef.markForCheck();\n });\n this._configureSteps();\n this._changeDetectorRef.markForCheck();\n }\n\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /**\n * Set the step line separators and display numbers\n */\n private _configureSteps(): void {\n this._separators.forEach((separator: HTMLElement) => {\n this._renderer.removeChild(this._stepList.nativeElement, separator);\n });\n let stepsArray: TdNavStepLinkComponent[] = this._steps.toArray();\n // set the index number of the step so can display that number in circle\n stepsArray.forEach((step: TdNavStepLinkComponent, index: number) => {\n if (index > 0 && index < stepsArray.length) {\n let separator: any = this._renderer.createElement('div');\n this._renderer.addClass(separator, 'td-vertical-line-wrapper');\n let separatorChild: any = this._renderer.createElement('div');\n this._renderer.addClass(separatorChild, 'td-vertical-line');\n this._renderer.appendChild(separator, separatorChild);\n this._separators.push(separator);\n this._renderer.insertBefore(this._stepList.nativeElement, separator, step.elementRef.nativeElement);\n }\n step.number = index + 1;\n });\n \n }\n\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { ScrollDispatchModule } from '@angular/cdk/scrolling';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRippleModule } from '@angular/material/core';\n\nimport { CovalentCommonModule } from '@covalent/core/common';\n\n// Steps\nimport { TdStepsComponent } from './steps.component';\nimport { TdStepHeaderComponent } from './step-header/step-header.component';\nimport { TdStepBodyComponent } from './step-body/step-body.component';\nimport { TdStepComponent, TdStepLabelDirective, TdStepActionsDirective,\n TdStepSummaryDirective } from './step.component';\n\n// Nav Steps\nimport { TdNavStepsHorizontalComponent } from './nav/nav-steps-horizontal/nav-steps-horizontal.component';\nimport { TdNavStepsVerticalComponent } from './nav/nav-steps-vertical/nav-steps-vertical.component';\nimport { TdNavStepLinkComponent } from './nav/nav-step-link/nav-step-link.component';\n\nconst TD_STEPS: Type<any>[] = [\n TdStepsComponent,\n TdStepComponent,\n TdStepHeaderComponent,\n TdStepBodyComponent,\n TdStepLabelDirective,\n TdStepActionsDirective,\n TdStepSummaryDirective,\n TdNavStepsHorizontalComponent,\n TdNavStepsVerticalComponent,\n TdNavStepLinkComponent,\n\n];\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatRippleModule,\n PortalModule,\n ScrollDispatchModule,\n CovalentCommonModule,\n ],\n declarations: [\n TD_STEPS,\n ],\n exports: [\n TD_STEPS,\n ],\n})\nexport class CovalentStepsModule {\n\n}\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChild,\n TemplateRef,\n OnInit,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { mixinDisabled, ICanDisable } from '@covalent/core/common';\n\nexport class TdTabOptionBase {\n constructor(public _viewContainerRef: ViewContainerRef,\n public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdTabOptionMixinBase = mixinDisabled(TdTabOptionBase);\n\n@Component({\n selector: 'td-tab-option',\n templateUrl: './tab-option.component.html',\n styleUrls: ['./tab-option.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n /* tslint:disable-next-line */\n inputs: ['disabled'],\n})\nexport class TdTabOptionComponent extends _TdTabOptionMixinBase implements ICanDisable, OnInit {\n\n private _contentPortal: TemplatePortal<any>;\n get content(): TemplatePortal<any> {\n return this._contentPortal;\n }\n\n @ViewChild(TemplateRef) _content: TemplateRef<any>;\n\n /**\n * Value to which the option will be binded to.\n */\n @Input('value') value: any;\n\n constructor(_viewContainerRef: ViewContainerRef,\n _changeDetectorRef: ChangeDetectorRef) {\n super(_viewContainerRef, _changeDetectorRef);\n }\n\n ngOnInit(): void {\n this._contentPortal = new TemplatePortal(this._content, this._viewContainerRef);\n }\n\n}\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ContentChildren,\n QueryList,\n OnInit,\n AfterContentInit,\n forwardRef,\n Output,\n EventEmitter,\n OnDestroy,\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\n\nimport { ThemePalette } from '@angular/material/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport { ICanDisable,\n mixinDisabled,\n IControlValueAccessor,\n mixinControlValueAccessor,\n ICanDisableRipple,\n mixinDisableRipple,\n} from '@covalent/core/common';\n\nimport { Subscription } from 'rxjs';\n\nimport { TdTabOptionComponent } from './tab-option.component';\n\nexport class TdTabSelectBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdTabSelectMixinBase = mixinControlValueAccessor(mixinDisabled(mixinDisableRipple(TdTabSelectBase)));\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdTabSelectComponent),\n multi: true,\n }],\n selector: 'td-tab-select',\n templateUrl: './tab-select.component.html',\n styleUrls: ['./tab-select.component.scss'],\n /* tslint:disable-next-line */\n inputs: ['value', 'disabled', 'disableRipple'],\n})\nexport class TdTabSelectComponent extends _TdTabSelectMixinBase\n implements IControlValueAccessor, ICanDisable, ICanDisableRipple, OnInit, AfterContentInit, OnDestroy {\n\n private _subs: Subscription[] = [];\n\n private _values: any[] = [];\n private _selectedIndex: number = 0;\n private _stretchTabs: boolean = false;\n\n get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n /**\n * Gets all tab option children\n */\n @ContentChildren(TdTabOptionComponent) readonly _tabOptions: QueryList<TdTabOptionComponent>;\n\n get tabOptions(): TdTabOptionComponent[] {\n return this._tabOptions ? this._tabOptions.toArray() : undefined;\n }\n\n /**\n * Makes the tabs stretch to fit the parent container.\n */\n @Input('stretchTabs')\n set stretchTabs(stretchTabs: boolean) {\n this._stretchTabs = coerceBooleanProperty(stretchTabs);\n }\n get stretchTabs(): boolean {\n return this._stretchTabs;\n }\n\n /**\n * Color of the tab group.\n */\n @Input('color') color: ThemePalette;\n\n /**\n * Background color of the tab group.\n */\n @Input('backgroundColor') backgroundColor: ThemePalette;\n\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n */\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(_changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n }\n\n ngOnInit(): void {\n // subscribe to check if value changes and update the selectedIndex internally.\n this._subs.push(\n this.valueChanges.subscribe((value: any) => {\n this._setValue(value);\n }),\n );\n }\n\n ngAfterContentInit(): void {\n // subscribe to listen to any tab changes.\n this._refreshValues();\n this._subs.push(\n this._tabOptions.changes.subscribe(() => {\n this._refreshValues();\n }),\n );\n // initialize value\n Promise.resolve().then(() => {\n this._setValue(this.value);\n });\n }\n\n ngOnDestroy(): void {\n if (this._subs && this._subs.length) {\n this._subs.forEach((sub: Subscription) => {\n sub.unsubscribe();\n });\n }\n }\n\n /**\n * Method executed when user selects a different tab\n * This updates the new selectedIndex and infers what value should be mapped to.\n */\n selectedIndexChange(selectedIndex: number): void {\n this._selectedIndex = selectedIndex;\n let value: any = this._values[selectedIndex];\n this.value = value;\n this.valueChange.emit(value);\n this.onChange(value);\n }\n\n /**\n * Refresh the values array whenever the number of tabs gets updated\n */\n private _refreshValues(): void {\n this._values = this.tabOptions.map((tabOption: TdTabOptionComponent) => {\n return tabOption.value;\n });\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Try to set value depending if its part of our options\n * else set the value of the first tab.\n */\n private _setValue(value: any): void {\n let index: number = this._values.indexOf(value);\n if (index > -1) {\n this._selectedIndex = index;\n } else {\n this.value = this._values.length ? this._values[0] : undefined;\n this._selectedIndex = 0;\n }\n this._changeDetectorRef.markForCheck();\n }\n\n}\n","import { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { TdTabSelectComponent } from './tab-select.component';\nimport { TdTabOptionComponent } from './tab-option.component';\n\n@NgModule({\n declarations: [\n TdTabSelectComponent,\n TdTabOptionComponent,\n ], // directives, components, and pipes owned by this NgModule\n imports: [\n /** Angular Modules */\n CommonModule,\n FormsModule,\n /** Material Modules */\n PortalModule,\n MatTabsModule,\n ], // modules needed to run this module\n exports: [\n TdTabSelectComponent,\n TdTabOptionComponent,\n ],\n})\nexport class CovalentTabSelectModule {}\n"],"names":["EventEmitter","coerceNumberProperty","Component","ChangeDetectionStrategy","Dir","Optional","ChangeDetectorRef","Input","Output","NgModule","CommonModule","MatIconModule","MatButtonModule","tslib_1.__extends","Directive","TemplateRef","ViewContainerRef","TemplatePortalDirective","Subject","debounceTime","ElementRef","DomSanitizer","Renderer2","ViewChildren","ContentChild","HostListener","ViewChild","HostBinding","NgModel","Host","tslib_1.__values","Inject","DOCUMENT","Pipe","DecimalPipe","LOCALE_ID","filter","RoutesRecognized","pairwise","Injectable","Router","FormsModule","trigger","state","style","transition","group","query","animateChild","animate","AUTO_STYLE","keyframes","coerceBooleanProperty","Validators","tdCollapseAnimation","mixinControlValueAccessor","mixinDisabled","Subscription","FormControl","timer","TAB","ESCAPE","UP_ARROW","LEFT_ARROW","DELETE","BACKSPACE","RIGHT_ARROW","DOWN_ARROW","chips","merge","fromEvent","NG_VALUE_ACCESSOR","forwardRef","MatInput","MatAutocompleteTrigger","MatChip","MatOption","ReactiveFormsModule","MatInputModule","MatChipsModule","MatAutocompleteModule","TD_VIRTUAL_OFFSET","ENTER","SPACE","ContentChildren","SkipSelf","MatCheckboxModule","MatTooltipModule","MatPseudoCheckboxModule","MatDialogRef","MatDialogConfig","MatDialog","MatDialogModule","mixinDisableRipple","tdRotateAnimation","takeUntil","MatRippleModule","PortalModule","Observable","MatSidenav","SecurityContext","ScrollDispatchModule","MatSidenavModule","MatToolbarModule","MatCardModule","MatDividerModule","tdFadeInOutAnimation","distinctUntilChanged","ComponentPortal","TemplatePortal","OverlayConfig","ComponentFactoryResolver","Overlay","Injector","overlay","MatProgressBarModule","MatProgressSpinnerModule","OverlayModule","BehaviorSubject","NgZone","MatMenuModule","skip","of","ViewportRuler","Directionality","CovalentCommonModule","MatTabsModule"],"mappings":"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"}