@covalent/core 2.0.2 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/breadcrumbs/covalent-core-breadcrumbs.metadata.json +1 -1
- package/bundles/covalent-core-breadcrumbs.umd.js +1 -1
- package/bundles/covalent-core-breadcrumbs.umd.min.js +1 -1
- package/bundles/covalent-core-breadcrumbs.umd.min.js.map +1 -1
- package/bundles/covalent-core-chips.umd.js +1 -1
- package/bundles/covalent-core-chips.umd.min.js +1 -1
- package/bundles/covalent-core-chips.umd.min.js.map +1 -1
- package/bundles/covalent-core-common.umd.js +251 -84
- package/bundles/covalent-core-common.umd.js.map +1 -1
- package/bundles/covalent-core-common.umd.min.js +1 -1
- package/bundles/covalent-core-common.umd.min.js.map +1 -1
- package/bundles/covalent-core-data-table.umd.js +4 -4
- package/bundles/covalent-core-data-table.umd.js.map +1 -1
- package/bundles/covalent-core-data-table.umd.min.js +1 -1
- package/bundles/covalent-core-data-table.umd.min.js.map +1 -1
- package/bundles/covalent-core-dialogs.umd.js +2 -2
- package/bundles/covalent-core-dialogs.umd.min.js +1 -1
- package/bundles/covalent-core-dialogs.umd.min.js.map +1 -1
- package/bundles/covalent-core-expansion-panel.umd.js +1 -1
- package/bundles/covalent-core-expansion-panel.umd.min.js +1 -1
- package/bundles/covalent-core-expansion-panel.umd.min.js.map +1 -1
- package/bundles/covalent-core-json-formatter.umd.js +1 -1
- package/bundles/covalent-core-json-formatter.umd.min.js +1 -1
- package/bundles/covalent-core-json-formatter.umd.min.js.map +1 -1
- package/bundles/covalent-core-layout.umd.js +8 -7
- package/bundles/covalent-core-layout.umd.js.map +1 -1
- package/bundles/covalent-core-layout.umd.min.js +1 -1
- package/bundles/covalent-core-layout.umd.min.js.map +1 -1
- package/bundles/covalent-core-loading.umd.js +1 -1
- package/bundles/covalent-core-loading.umd.min.js +1 -1
- package/bundles/covalent-core-loading.umd.min.js.map +1 -1
- package/bundles/covalent-core-menu.umd.js +1 -1
- package/bundles/covalent-core-menu.umd.min.js +1 -1
- package/bundles/covalent-core-menu.umd.min.js.map +1 -1
- package/bundles/covalent-core-message.umd.js +1 -1
- package/bundles/covalent-core-message.umd.min.js +1 -1
- package/bundles/covalent-core-message.umd.min.js.map +1 -1
- package/bundles/covalent-core-paging.umd.js +1 -1
- package/bundles/covalent-core-paging.umd.min.js +1 -1
- package/bundles/covalent-core-paging.umd.min.js.map +1 -1
- package/bundles/covalent-core-search.umd.js +5 -4
- package/bundles/covalent-core-search.umd.js.map +1 -1
- package/bundles/covalent-core-search.umd.min.js +1 -1
- package/bundles/covalent-core-search.umd.min.js.map +1 -1
- package/bundles/covalent-core-sidesheet.umd.js +137 -0
- package/bundles/covalent-core-sidesheet.umd.js.map +1 -0
- package/bundles/covalent-core-sidesheet.umd.min.js +2 -0
- package/bundles/covalent-core-sidesheet.umd.min.js.map +1 -0
- package/bundles/covalent-core-steps.umd.js +5 -5
- package/bundles/covalent-core-steps.umd.min.js +1 -1
- package/bundles/covalent-core-steps.umd.min.js.map +1 -1
- package/bundles/covalent-core-tab-select.umd.js +3 -2
- package/bundles/covalent-core-tab-select.umd.js.map +1 -1
- package/bundles/covalent-core-tab-select.umd.min.js +1 -1
- package/bundles/covalent-core-tab-select.umd.min.js.map +1 -1
- package/bundles/covalent-core.umd.js +220 -62
- package/bundles/covalent-core.umd.js.map +1 -1
- package/bundles/covalent-core.umd.min.js +1 -1
- package/bundles/covalent-core.umd.min.js.map +1 -1
- package/chips/covalent-core-chips.metadata.json +1 -1
- package/common/covalent-core-common.d.ts +4 -3
- package/common/covalent-core-common.metadata.json +1 -1
- package/common/directives/fullscreen/fullscreen.directive.d.ts +22 -0
- package/covalent-core.d.ts +8 -7
- package/covalent-core.metadata.json +1 -1
- package/data-table/README.md +2 -2
- package/data-table/covalent-core-data-table.metadata.json +1 -1
- package/dialogs/covalent-core-dialogs.metadata.json +1 -1
- package/esm2015/breadcrumbs/breadcrumb/breadcrumb.component.js +1 -1
- package/esm2015/chips/chips.component.js +1 -1
- package/esm2015/common/common.module.js +8 -26
- package/esm2015/common/covalent-core-common.js +5 -4
- package/esm2015/common/directives/fullscreen/fullscreen.directive.js +136 -0
- package/esm2015/covalent-core.js +9 -8
- package/esm2015/data-table/data-table-cell/data-table-cell.component.js +1 -1
- package/esm2015/data-table/data-table-column/data-table-column.component.js +1 -1
- package/esm2015/data-table/data-table.component.js +3 -3
- package/esm2015/dialogs/dialog.component.js +1 -1
- package/esm2015/dialogs/prompt-dialog/prompt-dialog.component.js +1 -1
- package/esm2015/expansion-panel/expansion-panel.component.js +1 -1
- package/esm2015/json-formatter/json-formatter.component.js +1 -1
- package/esm2015/layout/layout-card-over/layout-card-over.component.js +1 -1
- package/esm2015/layout/layout-manage-list/layout-manage-list.component.js +1 -1
- package/esm2015/layout/layout-nav/layout-nav.component.js +1 -1
- package/esm2015/layout/layout-nav-list/layout-nav-list.component.js +1 -1
- package/esm2015/layout/layout.component.js +1 -1
- package/esm2015/layout/navigation-drawer/navigation-drawer.component.js +12 -3
- package/esm2015/loading/loading.component.js +1 -1
- package/esm2015/menu/menu.component.js +1 -1
- package/esm2015/message/message.component.js +1 -1
- package/esm2015/paging/paging-bar.component.js +1 -1
- package/esm2015/search/search-box/search-box.component.js +3 -3
- package/esm2015/search/search-input/search-input.component.js +10 -3
- package/esm2015/sidesheet/covalent-core-sidesheet.js +9 -0
- package/esm2015/sidesheet/index.js +6 -0
- package/esm2015/sidesheet/public-api.js +7 -0
- package/esm2015/sidesheet/sidesheet.component.js +70 -0
- package/esm2015/sidesheet/sidesheet.module.js +33 -0
- package/esm2015/steps/nav/nav-step-link/nav-step-link.component.js +1 -1
- package/esm2015/steps/nav/nav-steps-horizontal/nav-steps-horizontal.component.js +1 -1
- package/esm2015/steps/step-body/step-body.component.js +1 -1
- package/esm2015/steps/step-header/step-header.component.js +1 -1
- package/esm2015/steps/steps.component.js +1 -1
- package/esm2015/tab-select/tab-select.component.js +4 -3
- package/esm5/breadcrumbs/breadcrumb/breadcrumb.component.js +1 -1
- package/esm5/chips/chips.component.js +1 -1
- package/esm5/common/common.module.js +8 -26
- package/esm5/common/covalent-core-common.js +5 -4
- package/esm5/common/directives/fullscreen/fullscreen.directive.js +184 -0
- package/esm5/covalent-core.js +9 -8
- package/esm5/data-table/data-table-cell/data-table-cell.component.js +1 -1
- package/esm5/data-table/data-table-column/data-table-column.component.js +1 -1
- package/esm5/data-table/data-table.component.js +3 -3
- package/esm5/dialogs/dialog.component.js +1 -1
- package/esm5/dialogs/prompt-dialog/prompt-dialog.component.js +1 -1
- package/esm5/expansion-panel/expansion-panel.component.js +1 -1
- package/esm5/json-formatter/json-formatter.component.js +1 -1
- package/esm5/layout/layout-card-over/layout-card-over.component.js +1 -1
- package/esm5/layout/layout-manage-list/layout-manage-list.component.js +1 -1
- package/esm5/layout/layout-nav/layout-nav.component.js +1 -1
- package/esm5/layout/layout-nav-list/layout-nav-list.component.js +1 -1
- package/esm5/layout/layout.component.js +1 -1
- package/esm5/layout/navigation-drawer/navigation-drawer.component.js +12 -3
- package/esm5/loading/loading.component.js +1 -1
- package/esm5/menu/menu.component.js +1 -1
- package/esm5/message/message.component.js +1 -1
- package/esm5/paging/paging-bar.component.js +1 -1
- package/esm5/search/search-box/search-box.component.js +3 -3
- package/esm5/search/search-input/search-input.component.js +10 -3
- package/esm5/sidesheet/covalent-core-sidesheet.js +9 -0
- package/esm5/sidesheet/index.js +6 -0
- package/esm5/sidesheet/public-api.js +7 -0
- package/esm5/sidesheet/sidesheet.component.js +88 -0
- package/esm5/sidesheet/sidesheet.module.js +37 -0
- package/esm5/steps/nav/nav-step-link/nav-step-link.component.js +1 -1
- package/esm5/steps/nav/nav-steps-horizontal/nav-steps-horizontal.component.js +1 -1
- package/esm5/steps/step-body/step-body.component.js +1 -1
- package/esm5/steps/step-header/step-header.component.js +1 -1
- package/esm5/steps/steps.component.js +1 -1
- package/esm5/tab-select/tab-select.component.js +4 -3
- package/expansion-panel/covalent-core-expansion-panel.metadata.json +1 -1
- package/fesm2015/covalent-core-breadcrumbs.js +1 -1
- package/fesm2015/covalent-core-chips.js +1 -1
- package/fesm2015/covalent-core-common.js +114 -26
- package/fesm2015/covalent-core-common.js.map +1 -1
- package/fesm2015/covalent-core-data-table.js +4 -4
- package/fesm2015/covalent-core-data-table.js.map +1 -1
- package/fesm2015/covalent-core-dialogs.js +2 -2
- package/fesm2015/covalent-core-expansion-panel.js +1 -1
- package/fesm2015/covalent-core-json-formatter.js +1 -1
- package/fesm2015/covalent-core-layout.js +8 -7
- package/fesm2015/covalent-core-layout.js.map +1 -1
- package/fesm2015/covalent-core-loading.js +1 -1
- package/fesm2015/covalent-core-menu.js +1 -1
- package/fesm2015/covalent-core-message.js +1 -1
- package/fesm2015/covalent-core-paging.js +1 -1
- package/fesm2015/covalent-core-search.js +5 -4
- package/fesm2015/covalent-core-search.js.map +1 -1
- package/fesm2015/covalent-core-sidesheet.js +110 -0
- package/fesm2015/covalent-core-sidesheet.js.map +1 -0
- package/fesm2015/covalent-core-steps.js +5 -5
- package/fesm2015/covalent-core-tab-select.js +3 -2
- package/fesm2015/covalent-core-tab-select.js.map +1 -1
- package/fesm2015/covalent-core.js +149 -58
- package/fesm2015/covalent-core.js.map +1 -1
- package/fesm5/covalent-core-breadcrumbs.js +1 -1
- package/fesm5/covalent-core-chips.js +1 -1
- package/fesm5/covalent-core-common.js +161 -27
- package/fesm5/covalent-core-common.js.map +1 -1
- package/fesm5/covalent-core-data-table.js +4 -4
- package/fesm5/covalent-core-data-table.js.map +1 -1
- package/fesm5/covalent-core-dialogs.js +2 -2
- package/fesm5/covalent-core-expansion-panel.js +1 -1
- package/fesm5/covalent-core-json-formatter.js +1 -1
- package/fesm5/covalent-core-layout.js +8 -7
- package/fesm5/covalent-core-layout.js.map +1 -1
- package/fesm5/covalent-core-loading.js +1 -1
- package/fesm5/covalent-core-menu.js +1 -1
- package/fesm5/covalent-core-message.js +1 -1
- package/fesm5/covalent-core-paging.js +1 -1
- package/fesm5/covalent-core-search.js +5 -4
- package/fesm5/covalent-core-search.js.map +1 -1
- package/fesm5/covalent-core-sidesheet.js +126 -0
- package/fesm5/covalent-core-sidesheet.js.map +1 -0
- package/fesm5/covalent-core-steps.js +5 -5
- package/fesm5/covalent-core-tab-select.js +3 -2
- package/fesm5/covalent-core-tab-select.js.map +1 -1
- package/fesm5/covalent-core.js +196 -59
- package/fesm5/covalent-core.js.map +1 -1
- package/json-formatter/covalent-core-json-formatter.metadata.json +1 -1
- package/layout/README.md +5 -2
- package/layout/covalent-core-layout.metadata.json +1 -1
- package/layout/navigation-drawer/navigation-drawer.component.d.ts +7 -0
- package/layout/navigation-drawer/navigation-drawer.component.scss +7 -0
- package/loading/covalent-core-loading.metadata.json +1 -1
- package/menu/covalent-core-menu.metadata.json +1 -1
- package/message/covalent-core-message.metadata.json +1 -1
- package/package.json +1 -1
- package/paging/covalent-core-paging.metadata.json +1 -1
- package/search/covalent-core-search.metadata.json +1 -1
- package/search/search-box/search-box.component.scss +6 -0
- package/search/search-input/README.md +5 -2
- package/search/search-input/search-input.component.d.ts +6 -0
- package/search/search-input/search-input.component.scss +33 -0
- package/sidesheet/README.md +68 -0
- package/sidesheet/covalent-core-sidesheet.d.ts +4 -0
- package/sidesheet/covalent-core-sidesheet.metadata.json +1 -0
- package/sidesheet/index.d.ts +1 -0
- package/sidesheet/package.json +13 -0
- package/sidesheet/public-api.d.ts +2 -0
- package/sidesheet/sidesheet.component.d.ts +13 -0
- package/sidesheet/sidesheet.component.scss +96 -0
- package/sidesheet/sidesheet.module.d.ts +2 -0
- package/steps/covalent-core-steps.metadata.json +1 -1
- package/tab-select/covalent-core-tab-select.metadata.json +1 -1
- package/tab-select/tab-select.component.scss +3 -0
- package/theming/prebuilt/blue-grey-deep-orange.css +89 -86
- package/theming/prebuilt/blue-grey-deep-orange.css.map +1 -1
- package/theming/prebuilt/blue-orange.css +89 -86
- package/theming/prebuilt/blue-orange.css.map +1 -1
- package/theming/prebuilt/indigo-pink.css +89 -86
- package/theming/prebuilt/indigo-pink.css.map +1 -1
- package/theming/prebuilt/orange-light-blue.css +89 -86
- package/theming/prebuilt/orange-light-blue.css.map +1 -1
- package/theming/prebuilt/teal-orange.css +89 -86
- package/theming/prebuilt/teal-orange.css.map +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"covalent-core.js.map","sources":["ng://@covalent/core/paging/paging-bar.component.ts","ng://@covalent/core/paging/paging.module.ts","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/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","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 { 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 * FORMS\n */\n\n// Form Directives\nimport { TdAutoTrimDirective } from './forms/auto-trim/auto-trim.directive';\n\nconst TD_FORMS: Type<any>[] = [\n TdAutoTrimDirective,\n];\n\n// Validators\nconst TD_VALIDATORS: Type<any>[] = [\n];\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: [\n FormsModule,\n CommonModule,\n ],\n declarations: [\n TD_FORMS,\n TD_PIPES,\n TD_VALIDATORS,\n ],\n exports: [\n FormsModule,\n CommonModule,\n TD_FORMS,\n TD_PIPES,\n TD_VALIDATORS,\n ],\n providers: [\n RouterPathService,\n IconService,\n ],\n})\nexport class CovalentCommonModule {\n\n}\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 * 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 { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Dir } from '@angular/cdk/bidi';\nimport { MatInput } from '@angular/material/input';\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 * 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 }\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":["query","CovalentCommonModule","tdRotateAnimation","tdCollapseAnimation","tdFadeInOutAnimation","mixinControlValueAccessor","mixinDisabled","mixinDisableRipple","TD_VIRTUAL_OFFSET","filter","state","style"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"covalent-core.js.map","sources":["ng://@covalent/core/paging/paging-bar.component.ts","ng://@covalent/core/paging/paging.module.ts","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","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":["query","CovalentCommonModule","tdRotateAnimation","tdCollapseAnimation","tdFadeInOutAnimation","mixinControlValueAccessor","mixinDisabled","mixinDisableRipple","TD_VIRTUAL_OFFSET","filter","state","style"],"mappings":"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"}
|