blob: 2c0112224b2fa1152e444202b3bae97dac1daba0 [file] [log] [blame]
{
"version": 3,
"file": "covalent-core.js",
"sources": [
"ng://@covalent/core/out/steps/steps.module.ts",
"ng://@covalent/core/out/steps/step-body/step-body.component.ts",
"ng://@covalent/core/out/steps/step-header/step-header.component.ts",
"ng://@covalent/core/out/steps/steps.component.ts",
"ng://@covalent/core/out/steps/step.component.ts",
"ng://@covalent/core/out/search/search.module.ts",
"ng://@covalent/core/out/search/search-box/search-box.component.ts",
"ng://@covalent/core/out/search/search-input/search-input.component.ts",
"ng://@covalent/core/out/menu/menu.module.ts",
"ng://@covalent/core/out/menu/menu.component.ts",
"ng://@covalent/core/out/media/media.module.ts",
"ng://@covalent/core/out/media/directives/media-toggle.directive.ts",
"ng://@covalent/core/out/media/services/media.service.ts",
"ng://@covalent/core/out/loading/loading.module.ts",
"ng://@covalent/core/out/loading/directives/loading.directive.ts",
"ng://@covalent/core/out/loading/services/loading.service.ts",
"ng://@covalent/core/out/loading/services/loading.factory.ts",
"ng://@covalent/core/out/loading/loading.component.ts",
"ng://@covalent/core/out/layout/layout.module.ts",
"ng://@covalent/core/out/layout/navigation-drawer/navigation-drawer.component.ts",
"ng://@covalent/core/out/layout/layout-footer/layout-footer.component.ts",
"ng://@covalent/core/out/layout/layout-manage-list/layout-manage-list.directives.ts",
"ng://@covalent/core/out/layout/layout-manage-list/layout-manage-list.component.ts",
"ng://@covalent/core/out/layout/layout-card-over/layout-card-over.component.ts",
"ng://@covalent/core/out/layout/layout-nav-list/layout-nav-list.directives.ts",
"ng://@covalent/core/out/layout/layout-nav-list/layout-nav-list.component.ts",
"ng://@covalent/core/out/layout/layout-nav/layout-nav.component.ts",
"ng://@covalent/core/out/layout/layout.directives.ts",
"ng://@covalent/core/out/layout/layout-toggle.class.ts",
"ng://@covalent/core/out/layout/layout.component.ts",
"ng://@covalent/core/out/json-formatter/json-formatter.module.ts",
"ng://@covalent/core/out/json-formatter/json-formatter.component.ts",
"ng://@covalent/core/out/file/file.module.ts",
"ng://@covalent/core/out/file/services/file.service.ts",
"ng://@covalent/core/out/file/file-upload/file-upload.component.ts",
"ng://@covalent/core/out/file/file-input/file-input.component.ts",
"ng://@covalent/core/out/file/directives/file-drop.directive.ts",
"ng://@covalent/core/out/file/directives/file-select.directive.ts",
"ng://@covalent/core/out/expansion-panel/expansion-panel.module.ts",
"ng://@covalent/core/out/expansion-panel/expansion-panel-group.component.ts",
"ng://@covalent/core/out/expansion-panel/expansion-panel.component.ts",
"ng://@covalent/core/out/dialogs/dialogs.module.ts",
"ng://@covalent/core/out/dialogs/services/dialog.service.ts",
"ng://@covalent/core/out/dialogs/prompt-dialog/prompt-dialog.component.ts",
"ng://@covalent/core/out/dialogs/confirm-dialog/confirm-dialog.component.ts",
"ng://@covalent/core/out/dialogs/alert-dialog/alert-dialog.component.ts",
"ng://@covalent/core/out/dialogs/dialog.component.ts",
"ng://@covalent/core/out/data-table/data-table.module.ts",
"ng://@covalent/core/out/data-table/services/data-table.service.ts",
"ng://@covalent/core/out/data-table/data-table-table/data-table-table.component.ts",
"ng://@covalent/core/out/data-table/data-table-cell/data-table-cell.component.ts",
"ng://@covalent/core/out/data-table/data-table-column/data-table-column.component.ts",
"ng://@covalent/core/out/data-table/data-table.component.ts",
"ng://@covalent/core/out/data-table/directives/data-table-template.directive.ts",
"ng://@covalent/core/out/data-table/data-table-row/data-table-row.component.ts",
"ng://@covalent/core/out/chips/chips.module.ts",
"ng://@covalent/core/out/chips/chips.component.ts",
"ng://@covalent/core/out/message/message.module.ts",
"ng://@covalent/core/out/message/message.component.ts",
"ng://@covalent/core/out/common/forms/validators/validators.ts",
"ng://@covalent/core/out/common/behaviors/disable-ripple.mixin.ts",
"ng://@covalent/core/out/common/behaviors/disabled.mixin.ts",
"ng://@covalent/core/out/common/behaviors/control-value-accesor.mixin.ts",
"ng://@covalent/core/out/common/animations/pulse/pulse.animation.ts",
"ng://@covalent/core/out/common/animations/jello/jello.animation.ts",
"ng://@covalent/core/out/common/animations/headshake/headshake.animation.ts",
"ng://@covalent/core/out/common/animations/flash/flash.animation.ts",
"ng://@covalent/core/out/common/animations/bounce/bounce.animation.ts",
"ng://@covalent/core/out/common/animations/fade/fadeInOut.animation.ts",
"ng://@covalent/core/out/common/animations/collapse/collapse.animation.ts",
"ng://@covalent/core/out/common/animations/rotate/rotate.animation.ts",
"ng://@covalent/core/out/common/common.module.ts",
"ng://@covalent/core/out/common/services/icon.service.ts",
"ng://@covalent/core/out/common/services/router-path.service.ts",
"ng://@covalent/core/out/common/pipes/truncate/truncate.pipe.ts",
"ng://@covalent/core/out/common/pipes/digits/digits.pipe.ts",
"ng://@covalent/core/out/common/pipes/bytes/bytes.pipe.ts",
"ng://@covalent/core/out/common/pipes/time-difference/time-difference.pipe.ts",
"ng://@covalent/core/out/common/pipes/time-ago/time-ago.pipe.ts",
"ng://@covalent/core/out/common/forms/auto-trim/auto-trim.directive.ts",
"ng://@covalent/core/out/common/animations/fade/fade.directive.ts",
"ng://@covalent/core/out/common/animations/toggle/toggle.directive.ts",
"ng://@covalent/core/out/notifications/notifications.module.ts",
"ng://@covalent/core/out/notifications/notification-count.component.ts",
"ng://@covalent/core/out/virtual-scroll/virtual-scroll.module.ts",
"ng://@covalent/core/out/virtual-scroll/virtual-scroll-container.component.ts",
"ng://@covalent/core/out/virtual-scroll/virtual-scroll-row.directive.ts",
"ng://@covalent/core/out/paging/paging.module.ts",
"ng://@covalent/core/out/paging/paging-bar.component.ts"
],
"sourcesContent": [
"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\nconst TD_STEPS: Type<any>[] = [\n TdStepsComponent,\n TdStepComponent,\n TdStepHeaderComponent,\n TdStepBodyComponent,\n TdStepLabelDirective,\n TdStepActionsDirective,\n TdStepSummaryDirective,\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 { 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 styles: [`:host{\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row; }\n :host .td-step-body{\n overflow-x:hidden;\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1;\n -webkit-box-sizing:border-box;\n box-sizing:border-box; }\n :host .td-step-body .td-step-summary.ng-animating,\n :host .td-step-body .td-step-content-wrapper.ng-animating{\n overflow:hidden; }\n :host .td-step-body .td-step-content{\n overflow-x:auto; }\n :host .td-step-body .td-step-actions{\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row; }\n`],\n template: `<ng-content></ng-content>\n<div class=\"td-step-body\">\n <div class=\"td-step-content-wrapper\"\n [@tdCollapse]=\"!active\">\n <div #contentRef cdkScrollable [class.td-step-content]=\"hasContent\">\n <ng-content select=\"[td-step-body-content]\"></ng-content>\n </div>\n <div #actionsRef\n [class.td-step-actions]=\"hasActions\">\n <ng-content select=\"[td-step-body-actions]\"></ng-content>\n </div>\n </div>\n <div #summaryRef\n [@tdCollapse]=\"active || !isComplete()\"\n [class.td-step-summary]=\"hasSummary\">\n <ng-content select=\"[td-step-body-summary]\"></ng-content>\n </div>\n</div>`,\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, 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 styles: [`.td-step-header{\n position:relative;\n outline:none;\n height:72px;\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1;\n -webkit-box-pack:start;\n -ms-flex-pack:start;\n justify-content:start;\n -webkit-box-align:center;\n -ms-flex-align:center;\n align-items:center;\n -ms-flex-line-pack:center;\n align-content:center;\n max-width:100%; }\n .td-step-header:hover:not(.mat-disabled){\n cursor:pointer; }\n .td-step-header mat-icon.td-edit-icon{\n margin:0 8px; }\n .td-step-header mat-icon.mat-warn{\n font-size:24px;\n height:24px;\n width:24px; }\n .td-step-header mat-icon.mat-complete{\n position:relative;\n left:-2px;\n top:2px;\n font-size:28px;\n height:24px;\n width:24px; }\n .td-step-header .td-circle{\n height:24px;\n width:24px;\n line-height:24px;\n border-radius:99%;\n text-align:center;\n -webkit-box-flex:0;\n -ms-flex:none;\n flex:none; }\n .td-step-header .td-circle mat-icon{\n margin-top:2px;\n font-weight:bold; }\n .td-step-header .td-triangle > mat-icon{\n font-size:25px; }\n .td-step-header .td-complete{\n font-size:0; }\n ::ng-deep :not([dir='rtl']) .td-step-header .td-circle, ::ng-deep :not([dir='rtl'])\n .td-step-header .td-triangle, ::ng-deep :not([dir='rtl'])\n .td-step-header .td-complete{\n margin-left:8px;\n margin-right:0; }\n ::ng-deep [dir='rtl'] .td-step-header .td-circle, ::ng-deep [dir='rtl']\n .td-step-header .td-triangle, ::ng-deep [dir='rtl']\n .td-step-header .td-complete{\n margin-left:0;\n margin-right:8px; }\n .td-step-header .td-circle,\n .td-step-header .td-complete{\n font-size:14px; }\n .td-step-header .td-step-label-wrapper{\n padding-left:8px;\n padding-right:8px; }\n .td-step-header .td-step-header-separator{\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1;\n -webkit-box-sizing:border-box;\n box-sizing:border-box; }\n`],\n template: `<div class=\"td-step-header\"\n [class.mat-disabled]=\"disabled\"\n matRipple\n [matRippleDisabled]=\"disabled || disableRipple\"\n [tabIndex]=\"disabled ? -1 : 0\">\n <div class=\"td-circle\"\n [class.mat-inactive]=\"(!active && !isComplete()) || disabled\"\n [class.mat-active]=\"active && !disabled\"\n *ngIf=\"!isRequired() && !isComplete()\">\n <span *ngIf=\"(active || !isComplete())\">{{number || ''}}</span>\n </div>\n <div class=\"td-complete\" *ngIf=\"isComplete()\">\n <mat-icon class=\"mat-complete\">check_circle</mat-icon>\n </div>\n <div class=\"td-triangle\"\n [class.bg-muted]=\"disabled\"\n *ngIf=\"isRequired()\">\n <mat-icon class=\"mat-warn\">warning</mat-icon>\n </div>\n <div class=\"td-step-label-wrapper\"\n [class.mat-inactive]=\"(!active && !isComplete()) || disabled\"\n [class.mat-warn]=\"isRequired() && !disabled\">\n <div class=\"td-step-label\">\n <ng-content select=\"[td-step-header-label]\"></ng-content>\n </div>\n <div class=\"td-step-sublabel\">\n <ng-content select=\"[td-step-header-sublabel]\"></ng-content>\n </div>\n </div>\n <span class=\"td-step-header-separator\"></span>\n <mat-icon class=\"td-edit-icon\" *ngIf=\"isComplete() && !active && !disabled\">mode_edit</mat-icon>\n</div>`,\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 * 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, Output } from '@angular/core';\nimport { OnDestroy, AfterContentInit } from '@angular/core';\nimport { EventEmitter, ContentChildren, QueryList } from '@angular/core';\nimport { Subscription } from 'rxjs/Subscription';\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 styles: [`.td-line-wrapper,\n.td-step{\n position:relative; }\n\n.td-steps-header{\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row; }\n\n.td-line-wrapper{\n width:24px;\n min-height:1px; }\n\n.td-horizontal-line{\n border-bottom-width:1px;\n border-bottom-style:solid;\n height:1px;\n position:relative;\n top:36px;\n min-width:15px;\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1;\n -webkit-box-sizing:border-box;\n box-sizing:border-box; }\n ::ng-deep :not([dir='rtl']) .td-horizontal-line{\n left:-6px;\n right:-3px; }\n ::ng-deep [dir='rtl'] .td-horizontal-line{\n left:-3px;\n right:-6px; }\n\n.td-vertical-line{\n position:absolute;\n bottom:-16px;\n top:-16px;\n border-left-width:1px;\n border-left-style:solid; }\n ::ng-deep :not([dir='rtl']) .td-vertical-line{\n left:20px;\n right:auto; }\n ::ng-deep [dir='rtl'] .td-vertical-line{\n left:auto;\n right:20px; }\n`],\n template: `<div *ngIf=\"isHorizontal()\" class=\"td-steps-header\">\n <ng-template let-step let-index=\"index\" let-last=\"last\" ngFor [ngForOf]=\"steps\">\n <td-step-header class=\"td-step-horizontal-header\"\n (keydown.enter)=\"step.open()\"\n [number]=\"index + 1\"\n [active]=\"step.active\"\n [disableRipple]=\"step.disableRipple\"\n [disabled]=\"step.disabled\" \n [state]=\"step.state\"\n (click)=\"step.open()\">\n <ng-template td-step-header-label [cdkPortalHost]=\"step.stepLabel\"></ng-template>\n <ng-template td-step-header-label [ngIf]=\"!step.stepLabel\">{{step.label}}</ng-template>\n <ng-template td-step-header-sublabel [ngIf]=\"true\">{{step.sublabel | truncate:30}}</ng-template>\n </td-step-header>\n <span *ngIf=\"!last\" class=\"td-horizontal-line\"></span>\n </ng-template>\n</div>\n<div *ngFor=\"let step of steps; let index = index; let last = last\" class=\"td-step\">\n <td-step-header class=\"td-step-vertical-header\"\n (keydown.enter)=\"step.toggle()\"\n [number]=\"index + 1\"\n [active]=\"step.active\" \n [disabled]=\"step.disabled\"\n [disableRipple]=\"step.disableRipple\"\n [state]=\"step.state\"\n (click)=\"step.toggle()\"\n *ngIf=\"isVertical()\">\n <ng-template td-step-header-label [cdkPortalHost]=\"step.stepLabel\"></ng-template>\n <ng-template td-step-header-label [ngIf]=\"!step.stepLabel\">{{step.label}}</ng-template>\n <ng-template td-step-header-sublabel [ngIf]=\"true\">{{step.sublabel}}</ng-template>\n </td-step-header>\n <ng-template [ngIf]=\"isVertical() || step.active || (!areStepsActive() && prevStep === step)\">\n <td-step-body [active]=\"step.active\" [state]=\"step.state\">\n <div *ngIf=\"isVertical()\" class=\"td-line-wrapper\">\n <div *ngIf=\"!last\" class=\"td-vertical-line\"></div>\n </div>\n <ng-template td-step-body-content [cdkPortalHost]=\"step.stepContent\"></ng-template>\n <ng-template td-step-body-actions [cdkPortalHost]=\"step.stepActions\"></ng-template>\n <ng-template td-step-body-summary [cdkPortalHost]=\"step.stepSummary\"></ng-template>\n </td-step-body>\n </ng-template>\n</div>\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, 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 template: `<ng-template>\n <ng-content></ng-content>\n</ng-template>`,\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 { 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 { 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 template: `<div class=\"td-search-box\">\n <button mat-icon-button type=\"button\" class=\"td-search-icon\" (click)=\"searchClicked()\">\n <mat-icon *ngIf=\"searchVisible && !alwaysVisible\">{{backIcon}}</mat-icon>\n <mat-icon *ngIf=\"!searchVisible || alwaysVisible\">{{searchIcon}}</mat-icon>\n </button>\n <td-search-input #searchInput\n [@inputState]=\"alwaysVisible || searchVisible\"\n [debounce]=\"debounce\"\n [(ngModel)]=\"value\"\n [showUnderline]=\"showUnderline\"\n [placeholder]=\"placeholder\"\n [clearIcon]=\"clearIcon\"\n (searchDebounce)=\"handleSearchDebounce($event)\"\n (search)=\"handleSearch($event)\"\n (clear)=\"handleClear(); toggleVisibility()\">\n </td-search-input>\n</div>`,\n styles: [`:host{\n display:block; }\n\n.td-search-box{\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -webkit-box-align:center;\n -ms-flex-align:center;\n align-items:center;\n -ms-flex-line-pack:center;\n align-content:center;\n max-width:100%;\n -webkit-box-pack:end;\n -ms-flex-pack:end;\n justify-content:flex-end; }\n .td-search-box .td-search-icon{\n -webkit-box-flex:0;\n -ms-flex:0 0 auto;\n flex:0 0 auto; }\n .td-search-box td-search-input{\n margin-left:12px; }\n ::ng-deep [dir='rtl'] .td-search-box td-search-input{\n margin-right:12px;\n margin-left:0 !important; }\n`],\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 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._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}\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 } from 'rxjs/operators/debounceTime';\nimport { skip } from 'rxjs/operators/skip';\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 template: `<div class=\"td-search-input\">\n <mat-form-field class=\"td-search-input-field\"\n [class.mat-hide-underline]=\"!showUnderline\"\n floatPlaceholder=\"never\">\n <input matInput\n #searchElement\n type=\"search\"\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder\"\n (blur)=\"handleBlur()\"\n (search)=\"stopPropagation($event)\"\n (keyup.enter)=\"handleSearch($event)\"/>\n </mat-form-field>\n <button mat-icon-button\n class=\"td-search-input-clear\"\n type=\"button\"\n [@searchState]=\"(searchElement.value ? 'show' : (isRTL ? 'hide-left' : 'hide-right'))\"\n (click)=\"clearSearch()\">\n <mat-icon>{{clearIcon}}</mat-icon>\n </button>\n</div>`,\n styles: [`.td-search-input{\n overflow-x:hidden;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -webkit-box-align:center;\n -ms-flex-align:center;\n align-items:center;\n -ms-flex-line-pack:center;\n align-content:center;\n max-width:100%;\n -webkit-box-pack:end;\n -ms-flex-pack:end;\n justify-content:flex-end; }\n .td-search-input .td-search-input-field{\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1; }\n .td-search-input ::ng-deep mat-form-field.mat-hide-underline .mat-form-field-underline{\n display:none; }\n .td-search-input .td-search-input-clear{\n -webkit-box-flex:0;\n -ms-flex:0 0 auto;\n flex:0 0 auto; }\n`],\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 { 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 } from '@angular/core';\n\n@Component({\n selector: 'td-menu',\n template: `<ng-content select=\"[td-menu-header]\"></ng-content>\n<mat-divider></mat-divider>\n<div class=\"td-menu-content\">\n <ng-content></ng-content>\n</div>\n<mat-divider></mat-divider>\n<ng-content select=\"[td-menu-footer]\"></ng-content>`,\n styles: [`:host{\n margin-top:-8px;\n margin-bottom:-8px;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:vertical;\n -webkit-box-direction:normal;\n -ms-flex-direction:column;\n flex-direction:column; }\n\n:host ::ng-deep [td-menu-header]{\n padding:8px;\n text-align:center; }\n\n:host ::ng-deep mat-list a[mat-list-item].mat-2-line,\n:host ::ng-deep mat-list mat-list-item.mat-2-line,\n:host ::ng-deep mat-list[dense] a[mat-list-item].mat-2-line,\n:host ::ng-deep mat-list[dense] mat-list-item.mat-2-line,\n:host ::ng-deep mat-nav-list a[mat-list-item].mat-2-line,\n:host ::ng-deep mat-nav-list mat-list-item.mat-2-line,\n:host ::ng-deep mat-nav-list[dense] a[mat-list-item].mat-2-line,\n:host ::ng-deep mat-nav-list[dense] mat-list-item.mat-2-line{\n height:auto; }\n :host ::ng-deep mat-list a[mat-list-item].mat-2-line .mat-list-item-content,\n :host ::ng-deep mat-list mat-list-item.mat-2-line .mat-list-item-content,\n :host ::ng-deep mat-list[dense] a[mat-list-item].mat-2-line .mat-list-item-content,\n :host ::ng-deep mat-list[dense] mat-list-item.mat-2-line .mat-list-item-content,\n :host ::ng-deep mat-nav-list a[mat-list-item].mat-2-line .mat-list-item-content,\n :host ::ng-deep mat-nav-list mat-list-item.mat-2-line .mat-list-item-content,\n :host ::ng-deep mat-nav-list[dense] a[mat-list-item].mat-2-line .mat-list-item-content,\n :host ::ng-deep mat-nav-list[dense] mat-list-item.mat-2-line .mat-list-item-content{\n height:auto;\n padding:8px; }\n :host ::ng-deep mat-list a[mat-list-item].mat-2-line .mat-list-item-content .mat-list-text,\n :host ::ng-deep mat-list mat-list-item.mat-2-line .mat-list-item-content .mat-list-text,\n :host ::ng-deep mat-list[dense] a[mat-list-item].mat-2-line .mat-list-item-content .mat-list-text,\n :host ::ng-deep mat-list[dense] mat-list-item.mat-2-line .mat-list-item-content .mat-list-text,\n :host ::ng-deep mat-nav-list a[mat-list-item].mat-2-line .mat-list-item-content .mat-list-text,\n :host ::ng-deep mat-nav-list mat-list-item.mat-2-line .mat-list-item-content .mat-list-text,\n :host ::ng-deep mat-nav-list[dense] a[mat-list-item].mat-2-line .mat-list-item-content .mat-list-text,\n :host ::ng-deep mat-nav-list[dense] mat-list-item.mat-2-line .mat-list-item-content .mat-list-text{\n padding-right:0; }\n [dir='rtl'] :host ::ng-deep mat-list a[mat-list-item].mat-2-line .mat-list-item-content .mat-list-text, [dir='rtl']\n :host ::ng-deep mat-list mat-list-item.mat-2-line .mat-list-item-content .mat-list-text, [dir='rtl']\n :host ::ng-deep mat-list[dense] a[mat-list-item].mat-2-line .mat-list-item-content .mat-list-text, [dir='rtl']\n :host ::ng-deep mat-list[dense] mat-list-item.mat-2-line .mat-list-item-content .mat-list-text, [dir='rtl']\n :host ::ng-deep mat-nav-list a[mat-list-item].mat-2-line .mat-list-item-content .mat-list-text, [dir='rtl']\n :host ::ng-deep mat-nav-list mat-list-item.mat-2-line .mat-list-item-content .mat-list-text, [dir='rtl']\n :host ::ng-deep mat-nav-list[dense] a[mat-list-item].mat-2-line .mat-list-item-content .mat-list-text, [dir='rtl']\n :host ::ng-deep mat-nav-list[dense] mat-list-item.mat-2-line .mat-list-item-content .mat-list-text{\n padding-left:0;\n padding-right:16px; }\n :host ::ng-deep mat-list a[mat-list-item].mat-2-line .mat-list-item-content [matLine] + [matLine],\n :host ::ng-deep mat-list mat-list-item.mat-2-line .mat-list-item-content [matLine] + [matLine],\n :host ::ng-deep mat-list[dense] a[mat-list-item].mat-2-line .mat-list-item-content [matLine] + [matLine],\n :host ::ng-deep mat-list[dense] mat-list-item.mat-2-line .mat-list-item-content [matLine] + [matLine],\n :host ::ng-deep mat-nav-list a[mat-list-item].mat-2-line .mat-list-item-content [matLine] + [matLine],\n :host ::ng-deep mat-nav-list mat-list-item.mat-2-line .mat-list-item-content [matLine] + [matLine],\n :host ::ng-deep mat-nav-list[dense] a[mat-list-item].mat-2-line .mat-list-item-content [matLine] + [matLine],\n :host ::ng-deep mat-nav-list[dense] mat-list-item.mat-2-line .mat-list-item-content [matLine] + [matLine]{\n margin-top:4px; }\n\n.td-menu-content{\n max-height:calc(50vh);\n overflow-y:auto; }\n`],\n})\nexport class TdMenuComponent {\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 { Directive, ElementRef, Input, OnInit, OnDestroy } from '@angular/core';\nimport { Renderer2 } from '@angular/core';\nimport { Subscription } from 'rxjs/Subscription';\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 { Injectable, NgZone, SkipSelf, Optional, Provider } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { Observable } from 'rxjs/Observable';\nimport { Subscription } from 'rxjs/Subscription';\nimport { fromEvent } from 'rxjs/observable/fromEvent';\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 { 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 { 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 { Injectable, Provider, SkipSelf, Optional } from '@angular/core';\nimport { ViewContainerRef, TemplateRef } from '@angular/core';\nimport { Subject } from 'rxjs/Subject';\nimport { Observable } from 'rxjs/Observable';\nimport { Subscription } from 'rxjs/Subscription';\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 { Injectable, ComponentFactoryResolver, ChangeDetectorRef, Provider, SkipSelf, Optional } 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';\nimport { Subject } from 'rxjs/Subject';\nimport { Observable } from 'rxjs/Observable';\nimport { Subscription } from 'rxjs/Subscription';\n\nimport { TdLoadingContext } from '../directives/loading.directive';\nimport { TdLoadingComponent, LoadingType, LoadingMode, LoadingStrategy, 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\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\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 viewContainerRef.createEmbeddedView(templateRef, context);\n loadingRef.observable\n .subscribe((registered: number) => {\n if (registered > 0 && !loading) {\n loading = true;\n let index: number = viewContainerRef.indexOf(loadingRef.componentRef.hostView);\n if (index < 0) {\n viewContainerRef.clear();\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 // passing context so when the template is re-attached, we can keep the reference of the variables\n let cdr: ChangeDetectorRef = viewContainerRef.createEmbeddedView(templateRef, context);\n viewContainerRef.detach(viewContainerRef.indexOf(loadingRef.componentRef.hostView));\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 cdr.detectChanges();\n cdr.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 { Component, ViewChild, TemplateRef, ChangeDetectorRef, ChangeDetectionStrategy, ElementRef, DoCheck } from '@angular/core';\nimport { AnimationEvent } from '@angular/animations';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subject } from 'rxjs/Subject';\nimport { Observable } from 'rxjs/Observable';\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 styles: [`.td-loading-wrapper{\n position:relative;\n display:block; }\n .td-loading-wrapper.td-fullscreen{\n position:inherit; }\n .td-loading-wrapper .td-loading{\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -webkit-box-align:center;\n -ms-flex-align:center;\n align-items:center;\n -ms-flex-line-pack:center;\n align-content:center;\n max-width:100%;\n -webkit-box-pack:center;\n -ms-flex-pack:center;\n justify-content:center;\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1; }\n .td-loading-wrapper.td-overlay .td-loading{\n position:absolute;\n margin:0;\n top:0;\n left:0;\n right:0;\n z-index:1000; }\n .td-loading-wrapper.td-overlay .td-loading mat-progress-bar{\n position:absolute;\n top:0;\n left:0;\n right:0; }\n .td-loading-wrapper.td-overlay-circular .td-loading{\n bottom:0; }\n`],\n template: `<div class=\"td-loading-wrapper\"\n [style.min-height]=\"getHeight()\"\n [class.td-overlay-circular]=\"(isOverlay() || isFullScreen()) && !isLinear()\"\n [class.td-overlay]=\"isOverlay() || isFullScreen()\" \n [class.td-fullscreen]=\"isFullScreen()\">\n <div [@tdFadeInOut]=\"animation\"\n (@tdFadeInOut.done)=\"animationComplete($event)\"\n [style.min-height]=\"getHeight()\"\n class=\"td-loading\">\n <mat-progress-spinner *ngIf=\"isCircular()\" \n [mode]=\"mode\"\n [value]=\"value\" \n [color]=\"color\" \n [diameter]=\"getCircleDiameter()\"\n [strokeWidth]=\"getCircleStrokeWidth()\">\n </mat-progress-spinner>\n <mat-progress-bar *ngIf=\"isLinear()\" \n [mode]=\"mode\"\n [value]=\"value\"\n [color]=\"color\">\n </mat-progress-bar>\n </div>\n <ng-template [cdkPortalHost]=\"content\"></ng-template>\n</div>`,\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 { 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, 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 { Subscription } from 'rxjs/Subscription';\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 styles: [`:host{\n width:100%; }\n :host .td-navigation-drawer-content.ng-animating,\n :host .td-navigation-drawer-menu-content.ng-animating{\n overflow:hidden; }\n :host mat-toolbar{\n padding:16px; }\n :host mat-toolbar.td-toolbar-background{\n background-repeat:no-repeat;\n background-size:cover; }\n :host mat-toolbar.td-nagivation-drawer-toolbar{\n -webkit-box-orient:vertical;\n -webkit-box-direction:normal;\n -ms-flex-direction:column;\n flex-direction:column;\n height:auto !important;\n display:block !important; }\n :host mat-toolbar .td-navigation-drawer-toolbar-content{\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-align:center;\n -ms-flex-align:center;\n align-items:center;\n -ms-flex-line-pack:center;\n align-content:center;\n max-width:100%;\n -webkit-box-pack:start;\n -ms-flex-pack:start;\n justify-content:start; }\n :host mat-toolbar .td-navigation-drawer-menu-toggle{\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex; }\n :host mat-toolbar .td-navigation-drawer-menu-toggle .td-navigation-drawer-label{\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1; }\n :host mat-toolbar .td-navigation-drawer-menu-toggle .td-navigation-drawer-menu-button{\n height:24px;\n line-height:24px;\n width:24px; }\n :host > div{\n overflow:hidden; }\n`],\n template: `<mat-toolbar [color]=\"color\"\n [style.background-image]=\"backgroundImage\"\n [class.td-toolbar-background]=\"!!isBackgroundAvailable\"\n class=\"td-nagivation-drawer-toolbar\">\n <ng-content select=\"[td-navigation-drawer-toolbar]\"></ng-content>\n <ng-container *ngIf=\"!isCustomToolbar\">\n <div *ngIf=\"icon || logo || sidenavTitle\"\n class=\"td-navigation-drawer-toolbar-content\"\n [class.cursor-pointer]=\"routerEnabled\"\n (click)=\"handleNavigationClick()\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n <mat-icon *ngIf=\"logo && !icon\" class=\"mat-icon-logo\" [svgIcon]=\"logo\"></mat-icon>\n <span *ngIf=\"sidenavTitle\" class=\"td-navigation-drawer-title\">{{sidenavTitle}}</span>\n </div>\n <div class=\"td-navigation-drawer-name\" *ngIf=\"email && name\">{{name}}</div>\n <div class=\"td-navigation-drawer-menu-toggle\"\n href\n *ngIf=\"email || name\"\n (click)=\"toggleMenu()\">\n <span class=\"td-navigation-drawer-label\">{{email || name}}</span>\n <button mat-icon-button class=\"td-navigation-drawer-menu-button\" *ngIf=\"isMenuAvailable\">\n <mat-icon *ngIf=\"!menuToggled\">arrow_drop_down</mat-icon>\n <mat-icon *ngIf=\"menuToggled\">arrow_drop_up</mat-icon>\n </button>\n </div>\n </ng-container>\n</mat-toolbar>\n<div class=\"td-navigation-drawer-content\" [@tdCollapse]=\"menuToggled\">\n <ng-content></ng-content>\n</div>\n<div class=\"td-navigation-drawer-menu-content\" [@tdCollapse]=\"!menuToggled\">\n <ng-content select=\"[td-navigation-drawer-menu]\"></ng-content>\n</div>\n`,\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<void> {\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<void> {\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<void> {\n return this._layout.close();\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 styles: [`:host{\n display:block;\n padding:10px 16px; }\n`],\n template: `<ng-content></ng-content>\n`,\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 { 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(@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(@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(@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, Directive, Input, ViewChild } from '@angular/core';\n\nimport { MatSidenav } from '@angular/material/sidenav';\n\nimport { ILayoutTogglable } from '../layout-toggle.class';\n\n@Component({\n selector: 'td-layout-manage-list',\n styles: [`:host{\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n margin:0;\n width:100%;\n min-height:100%;\n height:100%;\n overflow:hidden; }\n :host mat-sidenav-container.td-layout-manage-list{\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1; }\n :host mat-sidenav-container.td-layout-manage-list > mat-sidenav.mat-drawer-opened, :host mat-sidenav-container.td-layout-manage-list > mat-sidenav.mat-drawer-opening, :host mat-sidenav-container.td-layout-manage-list > mat-sidenav.mat-drawer-closed, :host mat-sidenav-container.td-layout-manage-list > mat-sidenav.mat-drawer-closing{\n -webkit-box-shadow:0 1px 3px 0 rgba(0, 0, 0, 0.2);\n box-shadow:0 1px 3px 0 rgba(0, 0, 0, 0.2); }\n :host .td-layout-manage-list-sidenav{\n text-align:start;\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1;\n display:block;\n position:relative;\n overflow:auto;\n -webkit-overflow-scrolling:touch; }\n :host .td-layout-manage-list-main{\n margin:0;\n width:100%;\n min-height:100%;\n height:100%;\n position:relative;\n overflow:auto;\n -webkit-box-orient:vertical;\n -webkit-box-direction:normal;\n -ms-flex-direction:column;\n flex-direction:column;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex; }\n :host .td-layout-manage-list-main .td-layout-manage-list-content{\n display:block;\n position:relative;\n overflow:auto;\n -webkit-overflow-scrolling:touch;\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1; }\n\n:host ::ng-deep mat-sidenav-container.td-layout-manage-list{ }\n :host ::ng-deep mat-sidenav-container.td-layout-manage-list > .mat-drawer-content{\n -webkit-box-flex:1;\n -ms-flex-positive:1;\n flex-grow:1; }\n :host ::ng-deep mat-sidenav-container.td-layout-manage-list > mat-sidenav{\n -webkit-box-shadow:0 1px 3px 0 rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 2px 1px -1px rgba(0, 0, 0, 0.12);\n box-shadow:0 1px 3px 0 rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 2px 1px -1px rgba(0, 0, 0, 0.12);\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:vertical;\n -webkit-box-direction:normal;\n -ms-flex-direction:column;\n flex-direction:column; }\n\n:host ::ng-deep mat-nav-list a[mat-list-item] .mat-list-item-content{\n font-size:14px; }\n\n:host ::ng-deep .mat-toolbar{\n font-weight:400; }\n`],\n template: `<mat-sidenav-container fullscreen class=\"td-layout-manage-list\">\n <mat-sidenav #sidenav\n position=\"start\"\n [mode]=\"mode\"\n [opened]=\"opened\"\n [disableClose]=\"disableClose\"\n [style.max-width]=\"sidenavWidth\"\n [style.min-width]=\"sidenavWidth\">\n <ng-content select=\"mat-toolbar[td-sidenav-content]\"></ng-content>\n <div class=\"td-layout-manage-list-sidenav\" cdkScrollable>\n <ng-content select=\"[td-sidenav-content]\"></ng-content>\n </div>\n </mat-sidenav>\n <div class=\"td-layout-manage-list-main\">\n <ng-content select=\"mat-toolbar\"></ng-content>\n <div class=\"td-layout-manage-list-content\" cdkScrollable>\n <ng-content></ng-content>\n </div>\n <ng-content select=\"td-layout-footer-inner\"></ng-content>\n </div>\n</mat-sidenav-container>\n`,\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 * 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<void> {\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<void> {\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<void> {\n return this.sidenav.close();\n }\n\n}\n",
"import { Component } from '@angular/core';\nimport { Input } from '@angular/core';\n\n@Component({\n selector: 'td-layout-card-over',\n styles: [`:host{\n position:relative;\n display:block;\n z-index:2;\n width:100%;\n min-height:100%;\n height:100%; }\n :host [td-after-card]{\n display:block; }\n\n.td-layout-card-over-wrapper{\n margin:-64px;\n margin-left:0;\n margin-right:0;\n width:100%;\n min-height:100%;\n height:100%; }\n @media (min-width: 600px){\n .td-layout-card-over-wrapper{\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-align:start;\n -ms-flex-align:start;\n align-items:flex-start;\n -ms-flex-line-pack:start;\n align-content:flex-start;\n -webkit-box-pack:center;\n -ms-flex-pack:center;\n justify-content:center; }\n .td-layout-card-over-wrapper .td-layout-card-over{\n max-height:100%;\n -webkit-box-sizing:border-box;\n box-sizing:border-box; } }\n @media (max-width: 599px){\n .td-layout-card-over-wrapper .td-layout-card-over{\n max-width:100% !important; } }\n`],\n template: `<mat-toolbar [color]=\"color\">\n</mat-toolbar>\n<div class=\"td-layout-card-over-wrapper\">\n <div class=\"td-layout-card-over\"\n [style.max-width.%]=\"cardWidth\"\n [style.flex]=\"'1 1 ' + cardWidth + '%'\"\n [style.-ms-flex]=\"'1 1 ' + cardWidth + '%'\"\n [style.-webkit-box-flex]=\"1\">\n <mat-card>\n <mat-card-title *ngIf=\"cardTitle\">{{cardTitle}}</mat-card-title>\n <mat-card-subtitle *ngIf=\"cardSubtitle\">{{cardSubtitle}}</mat-card-subtitle>\n <mat-divider *ngIf=\"cardTitle || cardSubtitle\"></mat-divider>\n <ng-content></ng-content>\n </mat-card>\n <ng-content select=\"[td-after-card]\"></ng-content>\n </div>\n</div>\n`,\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 { 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(@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(@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(@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, Input, ViewChild, Optional } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { MatSidenav } from '@angular/material/sidenav';\n\nimport { ILayoutTogglable } from '../layout-toggle.class';\n\n@Component({\n selector: 'td-layout-nav-list',\n styles: [`:host{\n margin:0;\n width:100%;\n min-height:100%;\n height:100%;\n overflow:hidden;\n -webkit-box-orient:vertical;\n -webkit-box-direction:normal;\n -ms-flex-direction:column;\n flex-direction:column;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1; }\n :host .td-layout-nav-list-wrapper{\n -webkit-box-orient:vertical;\n -webkit-box-direction:normal;\n -ms-flex-direction:column;\n flex-direction:column;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1;\n position:relative;\n overflow:auto;\n -webkit-overflow-scrolling:touch; }\n :host .td-layout-nav-list-wrapper .td-layout-nav-list-toolbar-content{\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-align:center;\n -ms-flex-align:center;\n align-items:center;\n -ms-flex-line-pack:center;\n align-content:center;\n max-width:100%;\n -webkit-box-pack:start;\n -ms-flex-pack:start;\n justify-content:start; }\n :host .td-layout-nav-list-wrapper .td-layout-nav-list-content{\n text-align:start;\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1;\n display:block;\n position:relative;\n overflow:auto;\n -webkit-overflow-scrolling:touch; }\n :host .td-layout-nav-list-wrapper .td-layout-nav-list-main{\n -webkit-box-orient:vertical;\n -webkit-box-direction:normal;\n -ms-flex-direction:column;\n flex-direction:column;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n margin:0;\n width:100%;\n min-height:100%;\n height:100%;\n position:relative;\n overflow:auto; }\n :host .td-layout-nav-list-wrapper .td-layout-nav-list-main .td-layout-nav-list-content{\n display:block;\n position:relative;\n overflow:auto;\n -webkit-overflow-scrolling:touch;\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1; }\n :host .td-layout-nav-list-wrapper mat-sidenav-container.td-layout-nav-list{\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1; }\n :host .td-layout-nav-list-wrapper mat-sidenav-container.td-layout-nav-list > mat-sidenav.mat-drawer-opened, :host .td-layout-nav-list-wrapper mat-sidenav-container.td-layout-nav-list > mat-sidenav.mat-drawer-opening, :host .td-layout-nav-list-wrapper mat-sidenav-container.td-layout-nav-list > mat-sidenav.mat-drawer-closed, :host .td-layout-nav-list-wrapper mat-sidenav-container.td-layout-nav-list > mat-sidenav.mat-drawer-closing{\n -webkit-box-shadow:none;\n box-shadow:none; }\n\n:host ::ng-deep mat-sidenav-container.td-layout-nav-list{ }\n :host ::ng-deep mat-sidenav-container.td-layout-nav-list > .mat-drawer-content{\n -webkit-box-flex:1;\n -ms-flex-positive:1;\n flex-grow:1; }\n :host ::ng-deep mat-sidenav-container.td-layout-nav-list > mat-sidenav{\n -webkit-box-shadow:0 1px 3px 0 rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 2px 1px -1px rgba(0, 0, 0, 0.12);\n box-shadow:0 1px 3px 0 rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 2px 1px -1px rgba(0, 0, 0, 0.12);\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:vertical;\n -webkit-box-direction:normal;\n -ms-flex-direction:column;\n flex-direction:column; }\n`],\n template: `<div class=\"td-layout-nav-list-wrapper\">\n <mat-sidenav-container fullscreen class=\"td-layout-nav-list\">\n <mat-sidenav #sidenav\n position=\"start\"\n [mode]=\"mode\"\n [opened]=\"opened\"\n [disableClose]=\"disableClose\"\n [style.max-width]=\"sidenavWidth\"\n [style.min-width]=\"sidenavWidth\">\n <mat-toolbar [color]=\"color\">\n <ng-content select=\"[td-menu-button]\"></ng-content>\n <span *ngIf=\"icon || logo || toolbarTitle\"\n class=\"td-layout-nav-list-toolbar-content\"\n [class.cursor-pointer]=\"routerEnabled\"\n (click)=\"handleNavigationClick()\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n <mat-icon *ngIf=\"logo && !icon\" class=\"mat-icon-logo\" [svgIcon]=\"logo\"></mat-icon>\n <span *ngIf=\"toolbarTitle\">{{toolbarTitle}}</span>\n </span>\n <ng-content select=\"[td-sidenav-toolbar-content]\"></ng-content>\n </mat-toolbar>\n <div class=\"td-layout-nav-list-content\" cdkScrollable>\n <ng-content select=\"[td-sidenav-content]\"></ng-content>\n </div>\n </mat-sidenav>\n <div class=\"td-layout-nav-list-main\">\n <mat-toolbar [color]=\"color\">\n <ng-content select=\"[td-toolbar-content]\"></ng-content>\n </mat-toolbar>\n <div class=\"td-layout-nav-list-content\" cdkScrollable>\n <ng-content></ng-content>\n </div>\n <ng-content select=\"td-layout-footer-inner\"></ng-content>\n </div>\n </mat-sidenav-container>\n</div>\n<ng-content select=\"td-layout-footer\"></ng-content>`,\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 * 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<void> {\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<void> {\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<void> {\n return this.sidenav.close();\n }\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 styles: [`.td-menu-button{\n margin-left:0; }\n ::ng-deep [dir='rtl'] .td-menu-button{\n margin-right:0;\n margin-left:6px; }\n\n:host{\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n margin:0;\n width:100%;\n min-height:100%;\n height:100%;\n overflow:hidden; }\n :host .td-layout-nav-wrapper{\n -webkit-box-orient:vertical;\n -webkit-box-direction:normal;\n -ms-flex-direction:column;\n flex-direction:column;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n margin:0;\n width:100%;\n min-height:100%;\n height:100%; }\n :host .td-layout-nav-wrapper .td-layout-nav-toolbar-content{\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-align:center;\n -ms-flex-align:center;\n align-items:center;\n -ms-flex-line-pack:center;\n align-content:center;\n max-width:100%;\n -webkit-box-pack:start;\n -ms-flex-pack:start;\n justify-content:start; }\n :host .td-layout-nav-wrapper .td-layout-nav-content{\n -webkit-box-orient:vertical;\n -webkit-box-direction:normal;\n -ms-flex-direction:column;\n flex-direction:column;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1;\n position:relative;\n overflow:auto;\n -webkit-overflow-scrolling:touch; }\n`],\n template: `<div class=\"td-layout-nav-wrapper\">\n <mat-toolbar [color]=\"color\">\n <ng-content select=\"[td-menu-button]\"></ng-content>\n <span *ngIf=\"icon || logo || toolbarTitle\"\n [class.cursor-pointer]=\"routerEnabled\"\n (click)=\"handleNavigationClick()\"\n class=\"td-layout-nav-toolbar-content\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n <mat-icon *ngIf=\"logo && !icon\" class=\"mat-icon-logo\" [svgIcon]=\"logo\"></mat-icon>\n <span *ngIf=\"toolbarTitle\">{{toolbarTitle}}</span>\n </span>\n <ng-content select=\"[td-toolbar-content]\"></ng-content>\n </mat-toolbar>\n <div class=\"td-layout-nav-content\" cdkScrollable>\n <ng-content></ng-content>\n </div>\n <ng-content select=\"td-layout-footer\"></ng-content>\n</div>\n`,\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 { 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(@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(@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(@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 { Input, HostBinding, HostListener, Renderer2, ElementRef, AfterViewInit, OnDestroy } from '@angular/core';\n\nimport { MatSidenav } from '@angular/material/sidenav';\n\nimport { ICanDisable, mixinDisabled } from '@covalent/core/common';\n\nimport { Subscription } from 'rxjs/Subscription';\n\nexport interface ILayoutTogglable {\n opened: boolean;\n sidenav: MatSidenav;\n toggle(): Promise<void>;\n open(): Promise<void>;\n close(): Promise<void>;\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 this._renderer.addClass(this._elementRef.nativeElement, 'td-layout-menu-button');\n }\n\n ngAfterViewInit(): void {\n this._initialized = true;\n this._toggleSubs = this._layout.sidenav._animationStarted.subscribe(() => {\n this._toggleVisibility();\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 this.onClick();\n }\n }\n\n abstract onClick(): void;\n\n private _toggleVisibility(): void {\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",
"import { Component, Input, ViewChild } from '@angular/core';\n\nimport { MatSidenav } from '@angular/material/sidenav';\n\nimport { ILayoutTogglable } from './layout-toggle.class';\n\n@Component({\n selector: 'td-layout',\n styles: [`:host{\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n margin:0;\n width:100%;\n min-height:100%;\n height:100%;\n overflow:hidden; }\n :host ::ng-deep > mat-sidenav-container > mat-sidenav{\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:vertical;\n -webkit-box-direction:normal;\n -ms-flex-direction:column;\n flex-direction:column; }\n`],\n template: `<mat-sidenav-container fullscreen>\n <mat-sidenav #sidenav\n class=\"td-layout-sidenav\"\n [mode]=\"mode\"\n [opened]=\"opened\"\n [style.max-width]=\"sidenavWidth\"\n [style.min-width]=\"sidenavWidth\"\n [disableClose]=\"disableClose\">\n <ng-content select=\"td-navigation-drawer\"></ng-content>\n <ng-content select=\"[td-sidenav-content]\"></ng-content>\n </mat-sidenav>\n <ng-content></ng-content>\n</mat-sidenav-container>\n`,\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 * 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<void> {\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<void> {\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<void> {\n return this.sidenav.close();\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, 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 styles: [`:host{\n display:block; }\n\n.td-json-formatter-wrapper{\n padding-top:2px;\n padding-bottom:2px; }\n .td-json-formatter-wrapper .td-key{\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -webkit-box-align:center;\n -ms-flex-align:center;\n align-items:center;\n -ms-flex-line-pack:center;\n align-content:center;\n max-width:100%;\n -webkit-box-pack:start;\n -ms-flex-pack:start;\n justify-content:start; }\n .td-json-formatter-wrapper .td-key.td-key-node:hover{\n cursor:pointer; }\n .td-json-formatter-wrapper .td-object-children.ng-animating{\n overflow:hidden; }\n .td-json-formatter-wrapper .td-object-children .td-key,\n .td-json-formatter-wrapper .td-object-children .td-object-children{\n padding-left:24px; }\n ::ng-deep [dir='rtl'] .td-json-formatter-wrapper .td-object-children .td-key, ::ng-deep [dir='rtl']\n .td-json-formatter-wrapper .td-object-children .td-object-children{\n padding-right:24px;\n padding-left:0; }\n .td-json-formatter-wrapper .td-object-children .td-key.td-key-leaf,\n .td-json-formatter-wrapper .td-object-children .td-object-children.td-key-leaf{\n padding-left:48px; }\n ::ng-deep [dir='rtl'] .td-json-formatter-wrapper .td-object-children .td-key.td-key-leaf, ::ng-deep [dir='rtl']\n .td-json-formatter-wrapper .td-object-children .td-object-children.td-key-leaf{\n padding-right:48px;\n padding-left:0; }\n .td-json-formatter-wrapper .value{\n margin-left:5px; }\n ::ng-deep [dir='rtl'] .td-json-formatter-wrapper .value{\n padding-right:5px;\n padding-left:0; }\n .td-json-formatter-wrapper .value .td-empty{\n opacity:0.5;\n text-decoration:line-through; }\n .td-json-formatter-wrapper .value .string{\n word-break:break-word; }\n .td-json-formatter-wrapper .value .date{\n word-break:break-word; }\n`],\n template: `<div class=\"td-json-formatter-wrapper\">\n <a class=\"td-key\"\n [class.td-key-node]=\"hasChildren()\"\n [class.td-key-leaf]=\"!hasChildren()\"\n [tabIndex]=\"isObject()? 0 : -1\"\n (keydown.enter)=\"toggle()\"\n (click)=\"toggle()\">\n <mat-icon class=\"td-node-icon\" *ngIf=\"hasChildren()\">{{open? 'keyboard_arrow_down' : (isRTL ? 'keyboard_arrow_left' : 'keyboard_arrow_right')}}</mat-icon>\n <span *ngIf=\"key\" class=\"key\">{{key}}:</span>\n <span class=\"value\">\n <span [class.td-empty]=\"!hasChildren()\" *ngIf=\"isObject()\" [matTooltip]=\"getPreview()\" matTooltipPosition=\"after\">\n <span class=\"td-object-name\">{{getObjectName()}}</span>\n <span class=\"td-array-length\" *ngIf=\"isArray()\">[{{data.length}}]</span>\n </span>\n <span *ngIf=\"!isObject()\" [class]=\"getType(data)\">{{getValue(data)}}</span>\n </span>\n </a>\n <div class=\"td-object-children\" [@tdCollapse]=\"!(hasChildren() && open)\">\n <ng-template let-key ngFor [ngForOf]=\"children\">\n <td-json-formatter [key]=\"key\" [data]=\"data[key]\" [levelsOpen]=\"levelsOpen - 1\"></td-json-formatter>\n </ng-template>\n </div>\n</div>`,\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 { 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 { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { Subject } from 'rxjs/Subject';\nimport { Subscriber } from 'rxjs/Subscriber';\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 { 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 styles: [`.td-file-upload{\n padding-left:8px;\n padding-right:8px; }\n\n.td-file-upload-cancel{\n height:24px;\n width:24px;\n position:relative;\n top:24px;\n left:-12px; }\n ::ng-deep [dir='rtl'] .td-file-upload-cancel{\n right:-12px;\n left:0; }\n .td-file-upload-cancel mat-icon{\n border-radius:12px;\n vertical-align:baseline; }\n.drop-zone{\n border-radius:3px; }\n .drop-zone *{\n pointer-events:none; }\n`],\n template: `<td-file-input *ngIf=\"!value\"\n [(ngModel)]=\"value\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n [accept]=\"accept\"\n [color]=\"defaultColor\"\n (select)=\"handleSelect($event)\">\n <ng-template [cdkPortalHost]=\"inputLabel\" [ngIf]=\"true\"></ng-template>\n</td-file-input>\n<div *ngIf=\"value\">\n <button #fileUpload\n class=\"td-file-upload\"\n mat-raised-button\n type=\"button\"\n [color]=\"activeColor\"\n (keyup.delete)=\"cancel()\"\n (keyup.backspace)=\"cancel()\"\n (keyup.escape)=\"cancel()\"\n (click)=\"uploadPressed()\"> \n <ng-content></ng-content>\n </button>\n <button mat-icon-button\n type=\"button\"\n class=\"td-file-upload-cancel\"\n [color]=\"cancelColor\" \n (click)=\"cancel()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>`,\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 { 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 styles: [`:host{ }\n :host .td-file-input{\n padding-left:8px;\n padding-right:8px; }\n :host input.td-file-input-hidden{\n display:none; }\n :host .drop-zone{\n border-radius:3px; }\n :host .drop-zone *{\n pointer-events:none; }\n`],\n template: `<div>\n <button mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\" \n [multiple]=\"multiple\" \n [disabled]=\"disabled\"\n (keyup.enter)=\"fileInput.click()\"\n (click)=\"fileInput.click()\"\n (fileDrop)=\"handleSelect($event)\"\n tdFileDrop>\n <ng-content></ng-content>\n </button>\n <input #fileInput \n class=\"td-file-input-hidden\" \n type=\"file\"\n [attr.accept]=\"accept\" \n (fileSelect)=\"handleSelect($event)\"\n [multiple]=\"multiple\" \n [disabled]=\"disabled\"\n tdFileSelect>\n</div>`,\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}\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: 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 { 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 { 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 { Component, Renderer2, ElementRef } from '@angular/core';\n\n@Component({\n selector: 'td-expansion-panel-group',\n styles: [``],\n template: `<ng-content></ng-content>`,\n})\nexport class TdExpansionPanelGroupComponent {\n\n constructor(private _renderer: Renderer2,\n private _elementRef: ElementRef) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-expansion-panel-group');\n }\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 styles: [`:host{\n display:block; }\n :host .td-expansion-panel-header{\n position:relative;\n outline:none; }\n :host .td-expansion-panel-header:focus:not(.mat-disabled), :host .td-expansion-panel-header:hover:not(.mat-disabled){\n cursor:pointer; }\n :host .td-expansion-panel-header .td-expansion-panel-header-content{\n height:48px;\n padding:0 24px;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1;\n -webkit-box-pack:start;\n -ms-flex-pack:start;\n justify-content:start;\n -webkit-box-align:center;\n -ms-flex-align:center;\n align-items:center;\n -ms-flex-line-pack:center;\n align-content:center;\n max-width:100%; }\n :host .td-expansion-panel-header .td-expansion-panel-header-content .td-expansion-label,\n :host .td-expansion-panel-header .td-expansion-panel-header-content .td-expansion-sublabel{\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1; }\n :host .td-expansion-content.ng-animating,\n :host .td-expansion-summary.ng-animating{\n overflow:hidden; }\n\n.td-expansion-label,\n.td-expansion-sublabel{\n white-space:nowrap;\n overflow:hidden;\n text-overflow:ellipsis;\n margin-right:16px; }\n ::ng-deep [dir='rtl'] .td-expansion-label, ::ng-deep [dir='rtl']\n .td-expansion-sublabel{\n margin-left:16px;\n margin-right:inherit; }\n`],\n template: `<div class=\"td-expansion-panel-header\"\n [class.mat-disabled]=\"disabled\"\n matRipple\n [matRippleDisabled]=\"disabled || disableRipple\"\n [tabIndex]=\"disabled? -1 : 0\"\n (keydown.enter)=\"clickEvent()\"\n (click)=\"clickEvent()\">\n <ng-template [cdkPortalHost]=\"expansionPanelHeader\"></ng-template>\n <div class=\"td-expansion-panel-header-content\"\n [class.mat-disabled]=\"disabled\"\n *ngIf=\"!expansionPanelHeader\">\n <div *ngIf=\"label || expansionPanelLabel\" class=\"td-expansion-label\">\n <ng-template [cdkPortalHost]=\"expansionPanelLabel\"></ng-template>\n <ng-template [ngIf]=\"!expansionPanelLabel\">{{label}}</ng-template>\n </div>\n <div *ngIf=\"sublabel || expansionPanelSublabel\" class=\"td-expansion-sublabel\">\n <ng-template [cdkPortalHost]=\"expansionPanelSublabel\"></ng-template>\n <ng-template [ngIf]=\"!expansionPanelSublabel\">{{sublabel}}</ng-template>\n </div>\n <mat-icon class=\"td-expand-icon\" *ngIf=\"!disabled\" [@tdRotate]=\"expand\">keyboard_arrow_down</mat-icon>\n </div>\n</div>\n<div class=\"td-expansion-content\"\n [@tdCollapse]=\"!expand\">\n <ng-content></ng-content>\n</div>\n<div class=\"td-expansion-summary\"\n [@tdCollapse]=\"expand\">\n <ng-content select=\"td-expansion-summary\"></ng-content>\n</div>\n`,\n inputs: ['disabled', 'disableRipple'],\n animations: [\n TdCollapseAnimation(),\n TdRotateAnimation({ anchor: 'tdRotate' }),\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 { 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 { DIALOG_PROVIDER } 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 DIALOG_PROVIDER,\n ],\n entryComponents: [\n TD_DIALOGS_ENTRY_COMPONENTS,\n ],\n})\nexport class CovalentDialogsModule {\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\nexport function DIALOG_PROVIDER_FACTORY(\n parent: TdDialogService, dialog: MatDialog): TdDialogService {\n return parent || new TdDialogService(dialog);\n}\n\nexport const DIALOG_PROVIDER: Provider = {\n // If there is already service available, use that. Otherwise, provide a new one.\n provide: TdDialogService,\n deps: [[new Optional(), new SkipSelf(), TdDialogService], MatDialog],\n useFactory: DIALOG_PROVIDER_FACTORY,\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 template: `<td-dialog>\n <td-dialog-title *ngIf=\"title\">\n {{title}}\n </td-dialog-title>\n <td-dialog-content>\n <span class=\"td-dialog-message\">{{message}}</span>\n <form #form=\"ngForm\" novalidate>\n <div class=\"td-dialog-input-wrapper\">\n <mat-form-field class=\"td-dialog-input\">\n <input matInput\n #input\n (focus)=\"handleInputFocus()\"\n (keydown.enter)=\"$event.preventDefault(); form.valid && accept()\"\n [(ngModel)]=\"value\"\n name=\"value\"\n required/>\n </mat-form-field>\n </div>\n </form>\n </td-dialog-content>\n <td-dialog-actions>\n <button mat-button\n #closeBtn \n (keydown.arrowright)=\"acceptBtn.focus()\"\n (click)=\"cancel()\">{{cancelButton}}</button>\n <button mat-button\n color=\"accent\"\n #acceptBtn\n (keydown.arrowleft)=\"closeBtn.focus()\"\n [disabled]=\"!form.valid\"\n (click)=\"accept()\">{{acceptButton}}</button>\n </td-dialog-actions>\n</td-dialog>`,\n styles: [`.td-dialog-input-wrapper{\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex; }\n .td-dialog-input-wrapper .td-dialog-input{\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1;\n -webkit-box-sizing:border-box;\n box-sizing:border-box; }\n\n.td-dialog-message{\n word-break:break-word; }\n`],\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 { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-confirm-dialog',\n template: `<td-dialog>\n <td-dialog-title *ngIf=\"title\">\n {{title}}\n </td-dialog-title>\n <td-dialog-content>\n <span class=\"td-dialog-message\">{{message}}</span>\n </td-dialog-content>\n <td-dialog-actions>\n <button mat-button\n #closeBtn \n (keydown.arrowright)=\"acceptBtn.focus()\"\n (click)=\"cancel()\">{{cancelButton}}</button>\n <button mat-button\n color=\"accent\"\n #acceptBtn\n (keydown.arrowleft)=\"closeBtn.focus()\"\n (click)=\"accept()\">{{acceptButton}}</button>\n </td-dialog-actions>\n</td-dialog>`,\n styles: [`.td-dialog-message{\n word-break:break-word; }\n`],\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 } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-alert-dialog',\n template: `<td-dialog>\n <td-dialog-title *ngIf=\"title\">\n {{title}}\n </td-dialog-title>\n <td-dialog-content>\n <span class=\"td-dialog-message\">{{message}}</span>\n </td-dialog-content>\n <td-dialog-actions>\n <button mat-button color=\"accent\" (click)=\"close()\">{{closeButton}}</button>\n </td-dialog-actions>\n</td-dialog>`,\n styles: [`.td-dialog-message{\n word-break:break-word; }\n`],\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, 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 template: `<div class=\"td-dialog-wrapper\">\n <h3 class=\"td-dialog-title\" *ngIf=\"dialogTitle.length > 0\">\n <ng-content select=\"td-dialog-title\"></ng-content>\n </h3>\n <div class=\"td-dialog-content\" *ngIf=\"dialogContent.length > 0\">\n <ng-content select=\"td-dialog-content\"></ng-content>\n </div>\n <div class=\"td-dialog-actions\" *ngIf=\"dialogActions.length > 0\">\n <span class=\"td-dialog-spacer\"></span>\n <ng-content select=\"td-dialog-actions\"></ng-content>\n </div>\n</div>`,\n styles: [`.td-dialog-title{\n margin-top:0;\n margin-bottom:20px; }\n\n.td-dialog-content{\n margin-bottom:16px; }\n\n.td-dialog-actions{\n position:relative;\n top:16px;\n left:16px; }\n ::ng-deep [dir='rtl'] .td-dialog-actions{\n right:16px;\n left:auto; }\n\n:host{\n display:block; }\n :host .td-dialog-actions{\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex; }\n :host .td-dialog-actions .td-dialog-spacer{\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1; }\n :host .td-dialog-actions ::ng-deep button{\n text-transform:uppercase;\n margin-left:8px;\n padding-left:8px;\n padding-right:8px;\n min-width:64px; }\n [dir='rtl'] :host .td-dialog-actions ::ng-deep button{\n margin-right:8px;\n margin-left:inherit; }\n`],\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 { 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 { 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 { Component, Renderer2, ElementRef } from '@angular/core';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'table[td-data-table]',\n styles: [`:host{\n width:100%;\n position:relative;\n border-spacing:0;\n overflow:hidden;\n border-collapse:collapse; }\n`],\n template: `<ng-content></ng-content>`,\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 { Component, Input, Renderer2, ElementRef, HostBinding } from '@angular/core';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'td[td-data-table-cell]',\n styles: [`:host{\n vertical-align:middle;\n text-align:left;\n padding:0; }\n html[dir=rtl] :host{\n text-align:right;\n unicode-bidi:embed; }\n body[dir=rtl] :host{\n text-align:right;\n unicode-bidi:embed; }\n [dir=rtl] :host{\n text-align:right;\n unicode-bidi:embed; }\n :host bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n :host > .td-data-table-cell-content-wrapper{\n padding:0 28px;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -webkit-box-align:center;\n -ms-flex-align:center;\n align-items:center;\n -ms-flex-line-pack:center;\n align-content:center;\n max-width:100%;\n -webkit-box-pack:start;\n -ms-flex-pack:start;\n justify-content:start; }\n :host > .td-data-table-cell-content-wrapper.td-data-table-cell-numeric{\n -webkit-box-pack:end;\n -ms-flex-pack:end;\n justify-content:flex-end; }\n :host:first-child > .td-data-table-cell-content-wrapper{\n padding-left:24px;\n padding-right:initial; }\n html[dir=rtl] :host:first-child > .td-data-table-cell-content-wrapper{\n padding-left:initial;\n unicode-bidi:embed; }\n body[dir=rtl] :host:first-child > .td-data-table-cell-content-wrapper{\n padding-left:initial;\n unicode-bidi:embed; }\n [dir=rtl] :host:first-child > .td-data-table-cell-content-wrapper{\n padding-left:initial;\n unicode-bidi:embed; }\n :host:first-child > .td-data-table-cell-content-wrapper bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host:first-child > .td-data-table-cell-content-wrapper bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n html[dir=rtl] :host:first-child > .td-data-table-cell-content-wrapper{\n padding-right:24px;\n unicode-bidi:embed; }\n body[dir=rtl] :host:first-child > .td-data-table-cell-content-wrapper{\n padding-right:24px;\n unicode-bidi:embed; }\n [dir=rtl] :host:first-child > .td-data-table-cell-content-wrapper{\n padding-right:24px;\n unicode-bidi:embed; }\n :host:first-child > .td-data-table-cell-content-wrapper bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host:first-child > .td-data-table-cell-content-wrapper bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n :host:last-child > .td-data-table-cell-content-wrapper{\n padding-left:28px;\n padding-right:24px; }\n html[dir=rtl] :host:last-child > .td-data-table-cell-content-wrapper{\n padding-left:24px;\n unicode-bidi:embed; }\n body[dir=rtl] :host:last-child > .td-data-table-cell-content-wrapper{\n padding-left:24px;\n unicode-bidi:embed; }\n [dir=rtl] :host:last-child > .td-data-table-cell-content-wrapper{\n padding-left:24px;\n unicode-bidi:embed; }\n :host:last-child > .td-data-table-cell-content-wrapper bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host:last-child > .td-data-table-cell-content-wrapper bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n html[dir=rtl] :host:last-child > .td-data-table-cell-content-wrapper{\n padding-right:28px;\n unicode-bidi:embed; }\n body[dir=rtl] :host:last-child > .td-data-table-cell-content-wrapper{\n padding-right:28px;\n unicode-bidi:embed; }\n [dir=rtl] :host:last-child > .td-data-table-cell-content-wrapper{\n padding-right:28px;\n unicode-bidi:embed; }\n :host:last-child > .td-data-table-cell-content-wrapper bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host:last-child > .td-data-table-cell-content-wrapper bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n :host > *{\n vertical-align:middle; }\n :host.mat-clickable{\n cursor:pointer; }\n :host.mat-clickable:focus{\n outline:none; }\n :host.mat-numeric{\n text-align:right; }\n html[dir=rtl] :host.mat-numeric{\n text-align:left;\n unicode-bidi:embed; }\n body[dir=rtl] :host.mat-numeric{\n text-align:left;\n unicode-bidi:embed; }\n [dir=rtl] :host.mat-numeric{\n text-align:left;\n unicode-bidi:embed; }\n :host.mat-numeric bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host.mat-numeric bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n`],\n template: `<div class=\"td-data-table-cell-content-wrapper\"\n [class.td-data-table-cell-numeric]=\"numeric\">\n <ng-content></ng-content>\n</div>`,\n})\nexport class TdDataTableCellComponent {\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 @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, 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 styles: [`:host{\n white-space:nowrap;\n position:relative;\n padding:0;\n vertical-align:middle;\n text-align:left; }\n :host > .td-data-table-heading{\n padding:0 28px; }\n :host:first-child > .td-data-table-heading{\n padding-left:24px;\n padding-right:initial; }\n html[dir=rtl] :host:first-child > .td-data-table-heading{\n padding-left:initial;\n unicode-bidi:embed; }\n body[dir=rtl] :host:first-child > .td-data-table-heading{\n padding-left:initial;\n unicode-bidi:embed; }\n [dir=rtl] :host:first-child > .td-data-table-heading{\n padding-left:initial;\n unicode-bidi:embed; }\n :host:first-child > .td-data-table-heading bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host:first-child > .td-data-table-heading bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n html[dir=rtl] :host:first-child > .td-data-table-heading{\n padding-right:24px;\n unicode-bidi:embed; }\n body[dir=rtl] :host:first-child > .td-data-table-heading{\n padding-right:24px;\n unicode-bidi:embed; }\n [dir=rtl] :host:first-child > .td-data-table-heading{\n padding-right:24px;\n unicode-bidi:embed; }\n :host:first-child > .td-data-table-heading bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host:first-child > .td-data-table-heading bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n :host:last-child > .td-data-table-heading{\n padding-left:28px;\n padding-right:24px; }\n html[dir=rtl] :host:last-child > .td-data-table-heading{\n padding-left:24px;\n unicode-bidi:embed; }\n body[dir=rtl] :host:last-child > .td-data-table-heading{\n padding-left:24px;\n unicode-bidi:embed; }\n [dir=rtl] :host:last-child > .td-data-table-heading{\n padding-left:24px;\n unicode-bidi:embed; }\n :host:last-child > .td-data-table-heading bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host:last-child > .td-data-table-heading bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n html[dir=rtl] :host:last-child > .td-data-table-heading{\n padding-right:28px;\n unicode-bidi:embed; }\n body[dir=rtl] :host:last-child > .td-data-table-heading{\n padding-right:28px;\n unicode-bidi:embed; }\n [dir=rtl] :host:last-child > .td-data-table-heading{\n padding-right:28px;\n unicode-bidi:embed; }\n :host:last-child > .td-data-table-heading bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host:last-child > .td-data-table-heading bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n :host mat-icon{\n height:16px;\n width:16px;\n font-size:16px !important;\n line-height:16px !important; }\n :host mat-icon.td-data-table-sort-icon{\n opacity:0;\n -webkit-transition:-webkit-transform 0.25s;\n transition:-webkit-transform 0.25s;\n transition:transform 0.25s;\n transition:transform 0.25s, -webkit-transform 0.25s;\n position:absolute;\n top:0; }\n :host mat-icon.td-data-table-sort-icon.mat-asc{\n -webkit-transform:rotate(0deg);\n transform:rotate(0deg); }\n :host mat-icon.td-data-table-sort-icon.mat-desc{\n -webkit-transform:rotate(180deg);\n transform:rotate(180deg); }\n :host:hover.mat-sortable mat-icon.td-data-table-sort-icon,\n :host.mat-active.mat-sortable mat-icon.td-data-table-sort-icon{\n opacity:1; }\n html[dir=rtl] :host{\n text-align:right;\n unicode-bidi:embed; }\n body[dir=rtl] :host{\n text-align:right;\n unicode-bidi:embed; }\n [dir=rtl] :host{\n text-align:right;\n unicode-bidi:embed; }\n :host bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n :host > *{\n vertical-align:middle; }\n :host.mat-clickable{\n cursor:pointer; }\n :host.mat-clickable:focus{\n outline:none; }\n :host .td-data-table-heading{\n display:inline-block;\n position:relative; }\n :host.mat-numeric{\n text-align:right; }\n html[dir=rtl] :host.mat-numeric{\n text-align:left;\n unicode-bidi:embed; }\n body[dir=rtl] :host.mat-numeric{\n text-align:left;\n unicode-bidi:embed; }\n [dir=rtl] :host.mat-numeric{\n text-align:left;\n unicode-bidi:embed; }\n :host.mat-numeric bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host.mat-numeric bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n :host.mat-numeric mat-icon.td-data-table-sort-icon{\n margin-left:-22px;\n margin-right:initial; }\n html[dir=rtl] :host.mat-numeric mat-icon.td-data-table-sort-icon{\n margin-left:initial;\n unicode-bidi:embed; }\n body[dir=rtl] :host.mat-numeric mat-icon.td-data-table-sort-icon{\n margin-left:initial;\n unicode-bidi:embed; }\n [dir=rtl] :host.mat-numeric mat-icon.td-data-table-sort-icon{\n margin-left:initial;\n unicode-bidi:embed; }\n :host.mat-numeric mat-icon.td-data-table-sort-icon bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host.mat-numeric mat-icon.td-data-table-sort-icon bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n html[dir=rtl] :host.mat-numeric mat-icon.td-data-table-sort-icon{\n margin-right:-22px;\n unicode-bidi:embed; }\n body[dir=rtl] :host.mat-numeric mat-icon.td-data-table-sort-icon{\n margin-right:-22px;\n unicode-bidi:embed; }\n [dir=rtl] :host.mat-numeric mat-icon.td-data-table-sort-icon{\n margin-right:-22px;\n unicode-bidi:embed; }\n :host.mat-numeric mat-icon.td-data-table-sort-icon bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host.mat-numeric mat-icon.td-data-table-sort-icon bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{\n margin-left:6px;\n margin-right:initial; }\n html[dir=rtl] :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{\n margin-left:initial;\n unicode-bidi:embed; }\n body[dir=rtl] :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{\n margin-left:initial;\n unicode-bidi:embed; }\n [dir=rtl] :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{\n margin-left:initial;\n unicode-bidi:embed; }\n :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n html[dir=rtl] :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{\n margin-right:6px;\n unicode-bidi:embed; }\n body[dir=rtl] :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{\n margin-right:6px;\n unicode-bidi:embed; }\n [dir=rtl] :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{\n margin-right:6px;\n unicode-bidi:embed; }\n :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n`],\n template: `<span #columnContent class=\"td-data-table-heading\">\n <mat-icon \n class=\"td-data-table-sort-icon\" \n *ngIf=\"sortable && numeric\"\n [class.mat-asc]=\"(!(active) || isAscending())\"\n [class.mat-desc]=\"(active && isDescending())\">\n arrow_upward\n </mat-icon>\n <span>\n <ng-content></ng-content>\n </span>\n <mat-icon \n class=\"td-data-table-sort-icon\" \n *ngIf=\"sortable && !numeric\"\n [class.mat-asc]=\"(!(active) || isAscending())\"\n [class.mat-desc]=\"(active && isDescending())\">\n arrow_upward\n </mat-icon>\n</span>\n`,\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, 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, 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 } from 'rxjs/Observable';\nimport { Subscription } from 'rxjs/Subscription';\nimport { Subject } from 'rxjs/Subject';\n\nimport { debounceTime } from 'rxjs/operators/debounceTime';\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 styles: [`:host{\n display:block;\n overflow:hidden; }\n :host .td-data-table-scrollable{\n position:relative;\n overflow:auto;\n height:calc(100% - 56px); }\n\ntable.td-data-table{\n width:auto !important; }\n table.td-data-table.mat-selectable tbody > tr.td-data-table-row{\n -webkit-transition:background-color 0.2s;\n transition:background-color 0.2s; }\n table.td-data-table.mat-selectable .td-data-table-column:first-child > .td-data-table-column-content-wrapper,\n table.td-data-table.mat-selectable th.td-data-table-column:first-child > .td-data-table-column-content-wrapper,\n table.td-data-table.mat-selectable td.td-data-table-cell:first-child > .td-data-table-column-content-wrapper{\n width:18px;\n min-width:18px;\n padding:0 24px; }\n table.td-data-table.mat-selectable .td-data-table-column:nth-child(2) > .td-data-table-column-content-wrapper,\n table.td-data-table.mat-selectable th.td-data-table-column:nth-child(2) > .td-data-table-column-content-wrapper,\n table.td-data-table.mat-selectable td.td-data-table-cell:nth-child(2) > .td-data-table-column-content-wrapper{\n padding-left:0; }\n [dir='rtl'] table.td-data-table.mat-selectable .td-data-table-column:nth-child(2) > .td-data-table-column-content-wrapper, [dir='rtl']\n table.td-data-table.mat-selectable th.td-data-table-column:nth-child(2) > .td-data-table-column-content-wrapper, [dir='rtl']\n table.td-data-table.mat-selectable td.td-data-table-cell:nth-child(2) > .td-data-table-column-content-wrapper{\n padding-right:0;\n padding-left:28px; }\n table.td-data-table td.mat-checkbox-cell,\n table.td-data-table th.mat-checkbox-column{\n min-width:42px;\n width:42px;\n font-size:0 !important; }\n table.td-data-table td.mat-checkbox-cell mat-pseudo-checkbox,\n table.td-data-table th.mat-checkbox-column mat-pseudo-checkbox{\n width:18px;\n height:18px; }\n ::ng-deep table.td-data-table td.mat-checkbox-cell mat-pseudo-checkbox.mat-pseudo-checkbox-checked::after, ::ng-deep\n table.td-data-table th.mat-checkbox-column mat-pseudo-checkbox.mat-pseudo-checkbox-checked::after{\n width:11px !important;\n height:4px !important; }\n table.td-data-table td.mat-checkbox-cell mat-checkbox ::ng-deep .mat-checkbox-inner-container,\n table.td-data-table th.mat-checkbox-column mat-checkbox ::ng-deep .mat-checkbox-inner-container{\n width:18px;\n height:18px;\n margin:0; }\n`],\n template: `<table td-data-table\n [style.left.px]=\"columnsLeftScroll\"\n [class.mat-selectable]=\"selectable\">\n <thead class=\"td-data-table-head\">\n <tr td-data-table-column-row>\n <th td-data-table-column class=\"mat-checkbox-column\" *ngIf=\"selectable\">\n <mat-checkbox\n #checkBoxAll\n *ngIf=\"multiple\"\n [disabled]=\"!hasData\"\n [indeterminate]=\"indeterminate && !allSelected && hasData\"\n [checked]=\"allSelected && hasData\"\n (click)=\"blockEvent($event); selectAll(!checkBoxAll.checked)\"\n (keyup.enter)=\"selectAll(!checkBoxAll.checked)\"\n (keyup.space)=\"selectAll(!checkBoxAll.checked)\"\n (keydown.space)=\"blockEvent($event)\">\n </mat-checkbox>\n </th>\n <th td-data-table-column\n #columnElement\n *ngFor=\"let column of columns; let i = index;\"\n [style.min-width.px]=\"getColumnWidth(i)\"\n [style.max-width.px]=\"getColumnWidth(i)\"\n [name]=\"column.name\"\n [numeric]=\"column.numeric\"\n [active]=\"(column.sortable || sortable) && column === sortByColumn\"\n [sortable]=\"column.sortable || (sortable && column.sortable !== false)\"\n [sortOrder]=\"sortOrderEnum\"\n [hidden]=\"column.hidden\"\n (sortChange)=\"handleSort(column)\">\n <span [matTooltip]=\"column.tooltip\">{{column.label}}</span>\n </th>\n </tr>\n </thead>\n</table>\n<div #scrollableDiv class=\"td-data-table-scrollable\"\n (scroll)=\"handleScroll($event)\">\n <div [style.height.px]=\"totalHeight\"></div>\n <table td-data-table\n [style.transform]=\"offsetTransform\"\n [style.position]=\"'absolute'\"\n [class.mat-selectable]=\"selectable\"\n [class.mat-clickable]=\"clickable\">\n <tbody class=\"td-data-table-body\">\n <tr td-data-table-row\n #dtRow\n [tabIndex]=\"selectable ? 0 : -1\"\n [selected]=\"(clickable || selectable) && isRowSelected(row)\"\n *ngFor=\"let row of virtualData; let rowIndex = index\"\n (click)=\"handleRowClick(row, fromRow + rowIndex, $event)\"\n (keyup)=\"selectable && _rowKeyup($event, row, rowIndex)\"\n (keydown.space)=\"blockEvent($event)\"\n (keydown.shift.space)=\"blockEvent($event)\"\n (keydown.shift)=\"disableTextSelection()\"\n (keyup.shift)=\"enableTextSelection()\">\n <td td-data-table-cell class=\"mat-checkbox-cell\" *ngIf=\"selectable\">\n <mat-pseudo-checkbox\n [state]=\"dtRow.selected ? 'checked' : 'unchecked'\"\n (mousedown)=\"disableTextSelection()\"\n (mouseup)=\"enableTextSelection()\"\n stopRowClick\n (click)=\"select(row, $event, fromRow + rowIndex)\">\n </mat-pseudo-checkbox>\n </td>\n <td td-data-table-cell\n [numeric]=\"column.numeric\"\n [hidden]=\"column.hidden\"\n *ngFor=\"let column of columns; let i = index\"\n [style.min-width.px]=\"getColumnWidth(i)\"\n [style.max-width.px]=\"getColumnWidth(i)\">\n <span *ngIf=\"!getTemplateRef(column.name)\">{{column.format ? column.format(getCellValue(column, row)) : getCellValue(column, row)}}</span>\n <ng-template\n *ngIf=\"getTemplateRef(column.name)\"\n [ngTemplateOutlet]=\"getTemplateRef(column.name)\"\n [ngTemplateOutletContext]=\"{ value: getCellValue(column, row), row: row, column: column.name }\">\n </ng-template>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n<ng-content></ng-content>\n`,\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 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 * 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 // 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 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 this._hostWidth = newHostWidth;\n this._onResize.next();\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._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 }\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 /* tslint:disable-next-line */\n if (srcElement.getAttribute('stopRowClick') === null) {\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 * 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 { 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, 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 styles: [`:host{\n border-bottom-style:solid;\n border-bottom-width:1px; }\n\n:host.td-data-table-row{\n height:48px; }\n\n:host.td-data-table-column-row{\n height:56px; }\n`],\n template: `<ng-content></ng-content>`,\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 styles: [`:host{\n border-bottom-style:solid;\n border-bottom-width:1px; }\n\n:host.td-data-table-row{\n height:48px; }\n\n:host.td-data-table-column-row{\n height:56px; }\n`],\n template: `<ng-content></ng-content>`,\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 { 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, 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/platform-browser';\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 } from 'rxjs/Observable';\nimport { Subscription } from 'rxjs/Subscription';\nimport { timer } from 'rxjs/observable/timer';\nimport { merge } from 'rxjs/observable/merge';\nimport { toPromise } from 'rxjs/operator/toPromise';\nimport { fromEvent } from 'rxjs/observable/fromEvent';\nimport { filter } from 'rxjs/operators/filter';\nimport { debounceTime } from 'rxjs/operators/debounceTime';\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 styles: [`:host{\n display:block;\n padding:0 5px;\n min-height:48px; }\n :host .td-chips-wrapper{\n min-height:42px;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -ms-flex-wrap:wrap;\n flex-wrap:wrap;\n -webkit-box-align:start;\n -ms-flex-align:start;\n align-items:flex-start; }\n :host .td-chips-wrapper.td-chips-stacked .mat-basic-chip,\n :host .td-chips-wrapper.td-chips-stacked .td-chips-form-field{\n width:100%; }\n :host .td-chips-wrapper.td-chips-input-before-position .td-chips-form-field{\n -webkit-box-ordinal-group:0;\n -ms-flex-order:-1;\n order:-1; }\n :host .td-chip, :host .td-chip > .td-chip-content{\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n max-width:100%;\n -webkit-box-align:center;\n -ms-flex-align:center;\n align-items:center;\n -ms-flex-line-pack:center;\n align-content:center;\n -webkit-box-pack:start;\n -ms-flex-pack:start;\n justify-content:start; }\n :host .td-chip.td-chip-stacked, :host .td-chip > .td-chip-content.td-chip-stacked{\n -webkit-box-pack:justify;\n -ms-flex-pack:justify;\n justify-content:space-between; }\n :host ::ng-deep{ }\n :host ::ng-deep .mat-form-field-wrapper{\n padding-bottom:2px; }\n :host ::ng-deep .mat-basic-chip{\n display:inline-block;\n cursor:default;\n border-radius:16px;\n margin:8px 8px 0 0;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n max-width:100%;\n position:relative; }\n html[dir=rtl] :host ::ng-deep .mat-basic-chip{\n margin:8px 0 0 8px;\n unicode-bidi:embed; }\n body[dir=rtl] :host ::ng-deep .mat-basic-chip{\n margin:8px 0 0 8px;\n unicode-bidi:embed; }\n [dir=rtl] :host ::ng-deep .mat-basic-chip{\n margin:8px 0 0 8px;\n unicode-bidi:embed; }\n :host ::ng-deep .mat-basic-chip bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host ::ng-deep .mat-basic-chip bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n :host ::ng-deep .mat-basic-chip .td-chip{\n min-height:32px;\n line-height:32px;\n font-size:13px;\n padding:0 0 0 12px; }\n html[dir=rtl] :host ::ng-deep .mat-basic-chip .td-chip{\n padding:0 12px 0 0;\n unicode-bidi:embed; }\n body[dir=rtl] :host ::ng-deep .mat-basic-chip .td-chip{\n padding:0 12px 0 0;\n unicode-bidi:embed; }\n [dir=rtl] :host ::ng-deep .mat-basic-chip .td-chip{\n padding:0 12px 0 0;\n unicode-bidi:embed; }\n :host ::ng-deep .mat-basic-chip .td-chip bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host ::ng-deep .mat-basic-chip .td-chip bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n :host ::ng-deep .mat-basic-chip .td-chip [td-chip-avatar]{\n display:inline-block;\n -webkit-box-ordinal-group:-19;\n -ms-flex-order:-20;\n order:-20;\n -webkit-box-pack:center;\n -ms-flex-pack:center;\n justify-content:center;\n -webkit-box-align:center;\n -ms-flex-align:center;\n align-items:center;\n text-align:center;\n height:32px;\n width:32px;\n margin:0 8px 0 -12px;\n border-radius:50%; }\n html[dir=rtl] :host ::ng-deep .mat-basic-chip .td-chip [td-chip-avatar]{\n margin:0 -12px 0 8px;\n unicode-bidi:embed; }\n body[dir=rtl] :host ::ng-deep .mat-basic-chip .td-chip [td-chip-avatar]{\n margin:0 -12px 0 8px;\n unicode-bidi:embed; }\n [dir=rtl] :host ::ng-deep .mat-basic-chip .td-chip [td-chip-avatar]{\n margin:0 -12px 0 8px;\n unicode-bidi:embed; }\n :host ::ng-deep .mat-basic-chip .td-chip [td-chip-avatar] bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host ::ng-deep .mat-basic-chip .td-chip [td-chip-avatar] bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n :host ::ng-deep .mat-basic-chip.td-chip-after-pad{\n padding:0 12px 0 0; }\n html[dir=rtl] :host ::ng-deep .mat-basic-chip.td-chip-after-pad{\n padding:0 0 0 12px;\n unicode-bidi:embed; }\n body[dir=rtl] :host ::ng-deep .mat-basic-chip.td-chip-after-pad{\n padding:0 0 0 12px;\n unicode-bidi:embed; }\n [dir=rtl] :host ::ng-deep .mat-basic-chip.td-chip-after-pad{\n padding:0 0 0 12px;\n unicode-bidi:embed; }\n :host ::ng-deep .mat-basic-chip.td-chip-after-pad bdo[dir=rtl]{\n direction:rtl;\n unicode-bidi:bidi-override; }\n :host ::ng-deep .mat-basic-chip.td-chip-after-pad bdo[dir=ltr]{\n direction:ltr;\n unicode-bidi:bidi-override; }\n :host ::ng-deep .mat-basic-chip mat-icon.td-chip-removal{\n margin:0 4px;\n font-size:21px;\n line-height:22px; }\n :host ::ng-deep .mat-basic-chip mat-icon.td-chip-removal:hover{\n cursor:pointer; }\n :host ::ng-deep .td-chips-stacked .mat-basic-chip{\n margin:4px 0; }\n :host ::ng-deep .td-chips-stacked .mat-basic-chip:first-of-type{\n margin:8px 0 4px; }\n :host ::ng-deep .td-chips-stacked .mat-basic-chip:last-of-type{\n margin:4px 0 8px; }\n :host .mat-form-field-underline{\n position:relative;\n height:1px;\n width:100%;\n bottom:0; }\n :host .mat-form-field-underline.mat-disabled{\n background-position:0;\n bottom:-4px;\n background-color:transparent; }\n :host .mat-form-field-underline .mat-form-field-ripple{\n position:absolute;\n height:2px;\n top:0;\n width:100%;\n -webkit-transform-origin:50%;\n transform-origin:50%;\n -webkit-transform:scaleX(0.5);\n transform:scaleX(0.5);\n visibility:hidden;\n opacity:0;\n -webkit-transition:background-color 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);\n transition:background-color 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); }\n :host .mat-form-field-underline .mat-form-field-ripple.mat-focused{\n visibility:visible;\n opacity:1;\n -webkit-transform:scaleX(1);\n transform:scaleX(1);\n -webkit-transition:background-color 0.3s cubic-bezier(0.55, 0, 0.55, 0.2), -webkit-transform 150ms linear;\n transition:background-color 0.3s cubic-bezier(0.55, 0, 0.55, 0.2), -webkit-transform 150ms linear;\n transition:transform 150ms linear, background-color 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);\n transition:transform 150ms linear, background-color 0.3s cubic-bezier(0.55, 0, 0.55, 0.2), -webkit-transform 150ms linear; }\n :host ::ng-deep mat-form-field .mat-form-field-underline{\n display:none; }\n`],\n template: `<div class=\"td-chips-wrapper\"\n [class.td-chips-stacked]=\"stacked\"\n [class.td-chips-input-before-position]=\"inputPosition === 'before'\">\n <ng-template let-chip let-first=\"first\" let-index=\"index\" ngFor [ngForOf]=\"value\">\n <mat-basic-chip [class.td-chip-disabled]=\"disabled\"\n [class.td-chip-after-pad]=\"!canRemoveChip\"\n [color]=\"color\"\n (keydown)=\"_chipKeydown($event, index)\"\n (blur)=\"_handleChipBlur($event, chip)\"\n (focus)=\"_handleChipFocus($event, chip)\">\n <div class=\"td-chip\" [class.td-chip-stacked]=\"stacked\">\n <span class=\"td-chip-content\">\n <span *ngIf=\"!_chipTemplate?.templateRef\">{{chip}}</span>\n <ng-template\n *ngIf=\"_chipTemplate?.templateRef\"\n [ngTemplateOutlet]=\"_chipTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{ chip: chip }\">\n </ng-template>\n </span>\n <mat-icon *ngIf=\"canRemoveChip\" class=\"td-chip-removal\" (click)=\"_internalClick = removeChip(index)\">\n cancel\n </mat-icon>\n </div>\n </mat-basic-chip>\n </ng-template>\n <mat-form-field floatPlaceholder=\"never\"\n class=\"td-chips-form-field\"\n [style.width.px]=\"canAddChip ? null : 0\"\n [style.height.px]=\"canAddChip ? null : 0\"\n [color]=\"color\">\n <input matInput\n #input\n [tabIndex]=\"-1\"\n [matAutocomplete]=\"autocomplete\"\n [formControl]=\"inputControl\"\n [placeholder]=\"canAddChip? placeholder : ''\"\n (keydown)=\"_inputKeydown($event)\"\n (keyup.enter)=\"_handleAddChip()\"\n (focus)=\"_handleFocus()\">\n </mat-form-field>\n <mat-autocomplete #autocomplete=\"matAutocomplete\"\n [displayWith]=\"_removeInputDisplay\"\n (optionSelected)=\"addChip($event.option.value)\">\n <ng-template let-item let-first=\"first\" ngFor [ngForOf]=\"items\">\n <mat-option (click)=\"_setInternalClick()\" [value]=\"item\">\n <span *ngIf=\"!_autocompleteOptionTemplate?.templateRef\">{{item}}</span>\n <ng-template\n *ngIf=\"_autocompleteOptionTemplate?.templateRef\"\n [ngTemplateOutlet]=\"_autocompleteOptionTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{ option: item }\">\n </ng-template>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n</div>\n<div *ngIf=\"chipAddition\" class=\"mat-form-field-underline\"\n [class.mat-disabled]=\"disabled\">\n <span class=\"mat-form-field-ripple\"\n [class.mat-focused]=\"focused\"></span>\n</div>\n<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdChipsComponent extends _TdChipsMixinBase implements IControlValueAccessor, DoCheck, OnInit, AfterViewInit, OnDestroy, ICanDisable {\n\n private _outsideClickSubs: Subscription;\n\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 _tabIndex: number = 0;\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 * 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 * 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 * 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 toPromise.call(timer()).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 toPromise.call(timer()).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.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 if (this._outsideClickSubs) {\n this._outsideClickSubs.unsubscribe();\n this._outsideClickSubs = undefined;\n }\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 this._closeAutocomplete();\n toPromise.call(timer(this.debounce)).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.indexOf(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 toPromise.call(timer()).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 merge(\n fromEvent(this._document, 'click'),\n fromEvent(this._document, 'touchend'),\n ).pipe(\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 { 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, Directive, Input, Renderer2, ElementRef, AfterViewInit, ViewContainerRef, TemplateRef, ViewChild,\n HostBinding, HostListener, ChangeDetectorRef } from '@angular/core';\n\nimport { TdCollapseAnimation, TdFadeInOutAnimation } 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 template: `<div tdMessageContainer></div>\n<ng-template>\n <div class=\"td-message-wrapper\">\n <mat-icon class=\"td-message-icon\">{{icon}}</mat-icon>\n <div class=\"td-message-labels\">\n <div *ngIf=\"label\" class=\"td-message-label\">{{label}}</div>\n <div *ngIf=\"sublabel\" class=\"td-message-sublabel\">{{sublabel}}</div>\n </div>\n <ng-content select=\"[td-message-actions]\"></ng-content>\n </div>\n</ng-template>`,\n styles: [`:host{\n display:block; }\n :host .td-message-wrapper{\n padding:8px 16px;\n min-height:52px;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -webkit-box-align:center;\n -ms-flex-align:center;\n align-items:center;\n -ms-flex-line-pack:center;\n align-content:center;\n max-width:100%;\n -webkit-box-pack:start;\n -ms-flex-pack:start;\n justify-content:start; }\n :host .td-message-wrapper .td-message-labels{\n -webkit-box-flex:1;\n -ms-flex:1;\n flex:1; }\n\n.td-message-icon{\n margin-right:16px; }\n ::ng-deep [dir='rtl'] .td-message-icon{\n margin-left:16px;\n margin-right:0; }\n`],\n animations: [\n TdCollapseAnimation({ duration: 100 }),\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(): boolean {\n return !this._opened;\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 { 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 { Constructor } from './constructor';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\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 { Constructor } from './constructor';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\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 { Constructor } from './constructor';\nimport { ChangeDetectorRef } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\nimport { Observable } from 'rxjs/Observable';\nimport { Subject } from 'rxjs/Subject';\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;\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",
"\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 * Function TdPulseAnimation\n *\n * params:\n * * anchor: Name of the anchor that will attach to a dom element in the components template that will contain the animation.\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n *\n * Returns an [AnimationTriggerMetadata] object with states for a boolean trigger based pulse animation.\n *\n * usage: [@myAnchorName]=\"true|false\"\n */\nexport function TdPulseAnimation(pulseOptions: IAnimationOptions = {}): AnimationTriggerMetadata {\n return trigger(pulseOptions.anchor || '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((pulseOptions.duration || 500) + 'ms ' + (pulseOptions.delay || 0) + 'ms',\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 ]),\n ]);\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 * Function TdJelloAnimation\n *\n * params:\n * * anchor: Name of the anchor that will attach to a dom element in the components template that will contain the animation.\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n *\n * Returns an [AnimationTriggerMetadata] object with states for a boolean trigger based jello animation.\n *\n * usage: [@myAnchorName]=\"true|false\"\n */\nexport function TdJelloAnimation(jelloOptions: IAnimationOptions = {}): AnimationTriggerMetadata {\n return trigger(jelloOptions.anchor || '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((jelloOptions.duration || 500) + 'ms ' + (jelloOptions.delay || 0) + 'ms', 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 ]),\n ]);\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 * Function TdHeadshakeAnimation\n *\n * params:\n * * anchor: Name of the anchor that will attach to a dom element in the components template that will contain the animation.\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n *\n * Returns an [AnimationTriggerMetadata] object with states for a boolean trigger based headshake animation.\n *\n * usage: [@myAnchorName]=\"true|false\"\n */\nexport function TdHeadshakeAnimation(headshakeOptions: IAnimationOptions = {}): AnimationTriggerMetadata {\n return trigger(headshakeOptions.anchor || '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((headshakeOptions.duration || 500) + 'ms ' + (headshakeOptions.delay || 0) + 'ms', 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 ]),\n ]);\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 * Function TdFlashAnimation\n *\n * params:\n * * anchor: Name of the anchor that will attach to a dom element in the components template that will contain the animation.\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n *\n * Returns an [AnimationTriggerMetadata] object with states for a boolean trigger based flash animation.\n *\n * usage: [@myAnchorName]=\"true|false\"\n */\nexport function TdFlashAnimation(flashOptions: IAnimationOptions = {}): AnimationTriggerMetadata {\n return trigger(flashOptions.anchor || '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((flashOptions.duration || 500) + 'ms ' + (flashOptions.delay || 0) + 'ms', 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 ]),\n ]);\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 * Function TdBounceAnimation\n *\n * params:\n * * anchor: Name of the anchor that will attach to a dom element in the components template that will contain the animation.\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n *\n * Returns an [AnimationTriggerMetadata] object with states for a boolean trigger based bounce animation.\n *\n * usage: [@myAnchorName]=\"true|false\"\n */\nexport function TdBounceAnimation(bounceOptions: IAnimationOptions = {}): AnimationTriggerMetadata {\n return trigger(bounceOptions.anchor || '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((bounceOptions.duration || 500) + 'ms ' + (bounceOptions.delay || 0) + 'ms', 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 ]),\n ]);\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 * Function TdFadeInOutAnimation\n *\n * params:\n * * anchor: Name of the anchor that will attach to a dom element in the components template that will contain the animation. Defaults to tdFadeInOut\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 states for a fading animation.\n *\n * usage: [@tdFadeInOut]=\"true|false\"\n */\nexport function TdFadeInOutAnimation(fadeInOut: IFadeInOutAnimation = {}): AnimationTriggerMetadata {\n return trigger((fadeInOut.anchor || 'tdFadeInOut'), [\n state('0', style({\n opacity: '0',\n display: 'none',\n })),\n state('1', style({\n opacity: AUTO_STYLE,\n display: AUTO_STYLE,\n })),\n transition('0 => 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate((fadeInOut.duration || 150) + 'ms ' +\n (fadeInOut.delay || 0) + 'ms ' +\n (fadeInOut.easeOnIn || 'ease-in')),\n ]),\n ]),\n transition('1 => 0', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate((fadeInOut.duration || 150) + 'ms ' +\n (fadeInOut.delay || 0) + 'ms ' +\n (fadeInOut.easeOnOut || 'ease-out')),\n ]),\n ]),\n ]);\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 * Function TdCollapseAnimation\n *\n * params:\n * * anchor: Name of the anchor that will attach to a dom element in the components template that will contain the animation. Defaults to tdCollapse.\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 states for a collapse/expand animation.\n *\n * usage: [@tdCollapse]=\"true|false\"\n */\nexport function TdCollapseAnimation(collapseOptions: ICollapseAnimation = {}): AnimationTriggerMetadata {\n return trigger(collapseOptions.anchor || 'tdCollapse', [\n state('1', style({\n height: '0',\n display: 'none',\n })),\n state('0', style({\n height: AUTO_STYLE,\n display: AUTO_STYLE,\n })),\n transition('0 => 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate((collapseOptions.duration || 150) + 'ms ' +\n (collapseOptions.delay || 0) + 'ms ' +\n (collapseOptions.easeOnClose || 'ease-in')),\n ]),\n ]),\n transition('1 => 0', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate((collapseOptions.duration || 150) + 'ms ' +\n (collapseOptions.delay || 0) + 'ms ' +\n (collapseOptions.easeOnOpen || 'ease-out')),\n ]),\n ]),\n ]);\n}\n",
"import { trigger, state, style, transition, animate, AnimationTriggerMetadata, AUTO_STYLE, query, animateChild, group } from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\nexport interface IRotateAnimation extends IAnimationOptions {\n degrees?: number;\n ease?: string;\n}\n\n/**\n * Function TdRotateAnimation\n *\n * params:\n * * anchor: Name of the anchor that will attach to a dom element in the components template that will contain the animation. Defaults to tdRotate.\n * * duration: Duration the animation will run in milliseconds. Defaults to 250 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * degrees: Degrees of rotation that the dom object will animation. A negative value will cause the animation to initially rotate counter-clockwise.\n * * ease: Animation accelerates and decelerates when rotation. Defaults to ease-in.\n *\n * Returns an [AnimationTriggerMetadata] object with states for a boolean trigger based rotation animation.\n *\n * usage: [@myAnchorName]=\"true|false\"\n */\nexport function TdRotateAnimation(rotateOptions: IRotateAnimation = {}): AnimationTriggerMetadata {\n return trigger(rotateOptions.anchor || 'tdRotate', [\n state('0', style({\n transform: 'rotate(0deg)',\n })),\n state('1', style({\n transform: 'rotate(' + (rotateOptions.degrees || 180) + 'deg)',\n })),\n transition('0 <=> 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate((rotateOptions.duration || 250) + 'ms ' +\n (rotateOptions.delay || 0) + 'ms ' +\n (rotateOptions.ease || 'ease-in')),\n ]),\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\n/**\n * ANIMATIONS\n */\n\n// Directives\nimport { TdToggleDirective } from './animations/toggle/toggle.directive';\nimport { TdFadeDirective } from './animations/fade/fade.directive';\n\nconst TD_ANIMATIONS: Type<any>[] = [\n TdToggleDirective,\n TdFadeDirective,\n];\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 { TdBytesPipe } from './pipes/bytes/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 TdBytesPipe,\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_ANIMATIONS,\n TD_VALIDATORS,\n ],\n exports: [\n FormsModule,\n CommonModule,\n TD_FORMS,\n TD_PIPES,\n TD_ANIMATIONS,\n TD_VALIDATORS,\n ],\n providers: [\n RouterPathService,\n IconService,\n ],\n})\nexport class CovalentCommonModule {\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 { Injectable } from '@angular/core';\nimport { Router, RoutesRecognized } from '@angular/router';\n\nimport { filter } from 'rxjs/operators/filter';\nimport { pairwise } from 'rxjs/operators/pairwise';\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",
"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 { 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: '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', '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 } 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: '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 { 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, ElementRef, Input, Output, EventEmitter, HostBinding, Renderer2, ChangeDetectorRef } from '@angular/core';\nimport { animate, AnimationBuilder, AnimationPlayer, AUTO_STYLE, style, animation } from '@angular/animations';\n\n@Directive({\n selector: '[tdFade]',\n})\nexport class TdFadeDirective {\n\n private _state: boolean;\n private _defaultDisplay: string;\n private _animationFadeInPlayer: AnimationPlayer;\n private _animationFadeOutPlayer: AnimationPlayer;\n\n /**\n * duration?: number\n * Sets duration of fade animation in milliseconds.\n * Defaults to 150 ms.\n */\n @Input() duration: number = 150;\n\n /**\n * tdFade: boolean\n * Fades element, FadesOut if its 'true', FadesIn if its 'false'.\n */\n @Input('tdFade')\n set state(state: boolean) {\n this._state = state;\n if (state) {\n if (this._animationFadeOutPlayer) {\n this._animationFadeOutPlayer.destroy();\n this._animationFadeOutPlayer = undefined;\n }\n this.hide();\n } else {\n if (this._animationFadeInPlayer) {\n this._animationFadeInPlayer.destroy();\n this._animationFadeInPlayer = undefined;\n }\n this.show();\n }\n }\n\n /**\n * fadeIn?: function\n * Method to be executed when fadeIn animation ends.\n */\n @Output('fadeIn') onFadeIn: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * fadeOut?: function\n * Method to be executed when fadeOut animation ends.\n */\n @Output('fadeOut') onFadeOut: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Binds native 'aria-expanded' attribute.\n */\n @HostBinding('attr.aria-expanded')\n get ariaExpandedBinding(): boolean {\n return !this._state;\n }\n\n /**\n * Binds native 'aria-hidden' attribute.\n */\n @HostBinding('attr.aria-hidden')\n get ariaHiddenBinding(): boolean {\n return this._state;\n }\n\n constructor(private _renderer: Renderer2,\n private _element: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _animationBuilder: AnimationBuilder) {\n this._defaultDisplay = this._element.nativeElement.style.display;\n }\n\n /**\n * Hides element: starts animation and adds \"display:'none'\" style at the end.\n */\n hide(): void {\n this._animationFadeInPlayer = this._animationBuilder.build(animation([\n style({\n opacity: AUTO_STYLE,\n display: AUTO_STYLE,\n }),\n animate(this.duration + 'ms ease-out', style({opacity: '0'})),\n ])).create(this._element.nativeElement);\n this._animationFadeInPlayer.onDone(() => {\n this._onFadeInDone();\n });\n this._animationFadeInPlayer.play();\n }\n\n /**\n * Shows element: sets \"display:[default]\" so animation is shown.\n */\n show(): void {\n this._renderer.setStyle(this._element.nativeElement, 'display', this._defaultDisplay);\n this._changeDetectorRef.markForCheck();\n this._animationFadeOutPlayer = this._animationBuilder.build(animation([\n style({\n opacity: '0',\n display: 'none',\n }),\n animate(this.duration + 'ms ease-in', style({opacity: AUTO_STYLE})),\n ])).create(this._element.nativeElement);\n this._animationFadeOutPlayer.onDone(() => {\n this._onFadeOutDone();\n });\n this._animationFadeOutPlayer.play();\n }\n\n private _onFadeInDone(): void {\n if (this._animationFadeInPlayer) {\n this._animationFadeInPlayer.destroy();\n this._animationFadeInPlayer = undefined;\n this._renderer.setStyle(this._element.nativeElement, 'display', 'none');\n this._changeDetectorRef.markForCheck();\n this.onFadeIn.emit();\n }\n }\n\n private _onFadeOutDone(): void {\n if (this._animationFadeOutPlayer) {\n this._animationFadeOutPlayer.destroy();\n this._animationFadeOutPlayer = undefined;\n this._changeDetectorRef.markForCheck();\n this.onFadeOut.emit();\n }\n }\n}\n",
"import { Directive, ElementRef, Input, HostBinding, Renderer2, ChangeDetectorRef } from '@angular/core';\nimport { animate, AnimationBuilder, AnimationPlayer, AUTO_STYLE, style, animation } from '@angular/animations';\n\n@Directive({\n selector: '[tdToggle]',\n})\nexport class TdToggleDirective {\n\n private _state: boolean;\n private _defaultOverflow: string;\n private _defaultDisplay: string;\n private _animationShowPlayer: AnimationPlayer;\n private _animationHidePlayer: AnimationPlayer;\n\n /**\n * duration?: number\n * Sets duration of toggle animation in milliseconds.\n * Defaults to 150 ms.\n */\n @Input() duration: number = 150;\n\n /**\n * tdToggle: boolean\n * Toggles element, hides if its 'true', shows if its 'false'.\n */\n @Input('tdToggle')\n set state(state: boolean) {\n this._state = state;\n if (state) {\n if (this._animationShowPlayer) {\n this._animationShowPlayer.destroy();\n this._animationShowPlayer = undefined;\n }\n this.hide();\n } else {\n if (this._animationHidePlayer) {\n this._animationHidePlayer.destroy();\n this._animationHidePlayer = undefined;\n }\n this.show();\n }\n }\n\n /**\n * Binds native 'aria-expanded' attribute.\n */\n @HostBinding('attr.aria-expanded')\n get ariaExpandedBinding(): boolean {\n return !this._state;\n }\n\n /**\n * Binds native 'aria-hidden' attribute.\n */\n @HostBinding('attr.aria-hidden')\n get ariaHiddenBinding(): boolean {\n return this._state;\n }\n\n constructor(private _renderer: Renderer2,\n private _element: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _animationBuilder: AnimationBuilder) {\n this._defaultDisplay = this._element.nativeElement.style.display;\n this._defaultOverflow = this._element.nativeElement.style.overflow;\n }\n\n /**\n * Hides element: sets \"display:[default]\" so animation is shown,\n * starts animation and adds \"display:'none'\" style at the end.\n */\n hide(): void {\n this._animationHidePlayer = this._animationBuilder.build(animation([\n style({\n height: AUTO_STYLE,\n display: AUTO_STYLE,\n }),\n animate(this.duration + 'ms ease-in', style({height: '0'})),\n ])).create(this._element.nativeElement);\n this._renderer.setStyle(this._element.nativeElement, 'overflow', 'hidden');\n this._changeDetectorRef.markForCheck();\n this._animationHidePlayer.onDone(() => {\n this._onHideDone();\n });\n this._animationHidePlayer.play();\n }\n\n /**\n * Shows element: sets \"display:[default]\" so animation is shown,\n * starts animation and adds \"overflow:[default]\" style again at the end.\n */\n show(): void {\n this._renderer.setStyle(this._element.nativeElement, 'display', this._defaultDisplay);\n this._changeDetectorRef.markForCheck();\n this._animationShowPlayer = this._animationBuilder.build(animation([\n style({\n height: '0',\n display: 'none',\n }),\n animate(this.duration + 'ms ease-out', style({height: AUTO_STYLE})),\n ])).create(this._element.nativeElement);\n this._renderer.setStyle(this._element.nativeElement, 'overflow', 'hidden');\n this._animationShowPlayer.onDone(() => {\n this._onShowDone();\n });\n this._animationShowPlayer.play();\n }\n\n private _onHideDone(): void {\n if (this._animationHidePlayer) {\n this._animationHidePlayer.destroy();\n this._animationHidePlayer = undefined;\n this._renderer.setStyle(this._element.nativeElement, 'overflow', this._defaultOverflow);\n this._renderer.setStyle(this._element.nativeElement, 'display', 'none');\n this._changeDetectorRef.markForCheck();\n }\n }\n\n private _onShowDone(): void {\n if (this._animationShowPlayer) {\n this._animationShowPlayer.destroy();\n this._animationShowPlayer = undefined;\n this._renderer.setStyle(this._element.nativeElement, 'overflow', this._defaultOverflow);\n this._changeDetectorRef.markForCheck();\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 { 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\n@Component({\n selector: 'td-notification-count',\n styles: [`:host{\n position:relative;\n display:block;\n text-align:center;\n min-width:40px;\n height:40px; }\n :host.td-notification-hidden{\n min-width:0; }\n\n.td-notification-count{\n line-height:21px;\n width:20px;\n height:20px;\n position:absolute;\n font-size:10px;\n font-weight:600;\n border-radius:50%;\n z-index:1; }\n .td-notification-count.td-notification-center-x{\n margin-left:auto;\n margin-right:auto;\n left:0;\n right:0; }\n .td-notification-count.td-notification-center-y{\n margin-top:auto;\n margin-bottom:auto;\n top:0;\n bottom:0; }\n .td-notification-count.td-notification-top{\n top:0; }\n .td-notification-count.td-notification-bottom{\n bottom:0; }\n .td-notification-count.td-notification-before{\n left:0; }\n .td-notification-count.td-notification-after{\n right:0; }\n .td-notification-count.td-notification-no-count{\n width:8px;\n height:8px; }\n .td-notification-count.td-notification-no-count.td-notification-top{\n top:8px; }\n .td-notification-count.td-notification-no-count.td-notification-bottom{\n bottom:8px; }\n .td-notification-count.td-notification-no-count.td-notification-before{\n left:8px; }\n .td-notification-count.td-notification-no-count.td-notification-after{\n right:8px; }\n ::ng-deep [dir='rtl'] .td-notification-count.td-notification-before{\n right:0;\n left:auto; }\n ::ng-deep [dir='rtl'] .td-notification-count.td-notification-after{\n left:0;\n right:auto; }\n ::ng-deep [dir='rtl'] .td-notification-count.td-notification-no-count.td-notification-before{\n right:8px;\n left:auto; }\n ::ng-deep [dir='rtl'] .td-notification-count.td-notification-no-count.td-notification-after{\n left:8px;\n right:auto; }\n\n.td-notification-content, .td-notification-content ::ng-deep > *{\n line-height:40px; }\n`],\n template: `<div #content class=\"td-notification-content\">\n <ng-content></ng-content>\n</div>\n<div *ngIf=\"show\"\n class=\"td-notification-count mat-{{color}}\"\n [class.td-notification-top]=\"positionY === 'top'\"\n [class.td-notification-bottom]=\"positionY === 'bottom'\"\n [class.td-notification-before]=\"positionX === 'before'\"\n [class.td-notification-after]=\"positionX === 'after'\"\n [class.td-notification-center-y]=\"positionY === 'center'\"\n [class.td-notification-center-x]=\"positionX === 'center'\"\n [class.td-notification-no-count]=\"noCount\">\n {{noCount ? '' : notificationsDisplay}}\n</div>`,\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\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 @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 > 99) {\n return '99+';\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 { 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, Directive, Input, 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 } from 'rxjs/Subscription';\n\nimport { TdVirtualScrollRowDirective } from './virtual-scroll-row.directive';\n\nconst TD_VIRTUAL_OFFSET: number = 2;\n\n@Component({\n selector: 'td-virtual-scroll-container',\n styles: [`:host{\n display:block;\n height:100%;\n width:100%;\n overflow:auto;\n position:relative; }\n`],\n template: `<div [style.height.px]=\"totalHeight\"></div>\n<div [style.transform]=\"offsetTransform\"\n [style.position]=\"'absolute'\"\n [style.width.%]=\"100\">\n <ng-template let-row\n let-index=\"index\"\n ngFor\n [ngForOf]=\"virtualData\"\n [ngForTrackBy]=\"trackBy\">\n <div #rowElement\n [style.width.%]=\"100\">\n <ng-template *ngIf=\"_rowTemplate\"\n [ngTemplateOutlet]=\"_rowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{row: row,\n index: (fromRow + index),\n first: (fromRow + index) === 0,\n last: (fromRow + index) === (data.length - 1),\n odd: ((fromRow + index + 1) % 2) === 1,\n even: ((fromRow + index + 1) % 2) === 0}\">\n </ng-template>\n </div>\n </ng-template>\n</div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdVirtualScrollContainerComponent implements AfterViewInit, AfterViewChecked, OnDestroy {\n\n private _rowChangeSubs: Subscription;\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 @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._rowChangeSubs = this._rows.changes.subscribe(() => {\n this._calculateVirtualRows();\n });\n this._initialized = true;\n this._calculateVirtualRows();\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._rowChangeSubs) {\n this._rowChangeSubs.unsubscribe();\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 }\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 // 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}\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 { 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 { 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 template: `<div class=\"td-paging-bar\" (change)=\"$event.stopPropagation()\" >\n <ng-content></ng-content>\n <div class=\"td-paging-bar-navigation\">\n <button mat-icon-button class=\"td-paging-bar-first-page\" type=\"button\" *ngIf=\"firstLast\" [disabled]=\"isMinPage()\" (click)=\"firstPage()\">\n <mat-icon>{{ isRTL ? 'skip_next' : 'skip_previous' }}</mat-icon>\n </button>\n <button mat-icon-button class=\"td-paging-bar-prev-page\" type=\"button\" [disabled]=\"isMinPage()\" (click)=\"prevPage()\">\n <mat-icon>{{ isRTL ? 'navigate_next' : 'navigate_before' }}</mat-icon>\n </button>\n <ng-template *ngIf=\"pageLinkCount > 0\" let-link let-index=\"index\" ngFor [ngForOf]=\"pageLinks\">\n <button class=\"td-paging-bar-link-page\" mat-icon-button type=\"button\" [color]=\"page === link ? 'accent' : ''\" (click)=\"navigateToPage(link)\">{{link}}</button>\n </ng-template>\n <button mat-icon-button class=\"td-paging-bar-next-page\" type=\"button\" [disabled]=\"isMaxPage()\" (click)=\"nextPage()\">\n <mat-icon>{{ isRTL ? 'navigate_before' : 'navigate_next' }}</mat-icon>\n </button>\n <button mat-icon-button class=\"td-paging-bar-last-page\" type=\"button\" *ngIf=\"firstLast\" [disabled]=\"isMaxPage()\" (click)=\"lastPage()\">\n <mat-icon>{{ isRTL ? 'skip_previous' : 'skip_next' }}</mat-icon>\n </button>\n </div>\n</div>`,\n styles: [`:host{\n display:block; }\n :host .td-paging-bar{\n height:48px;\n -webkit-box-sizing:border-box;\n box-sizing:border-box;\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n -webkit-box-orient:horizontal;\n -webkit-box-direction:normal;\n -ms-flex-direction:row;\n flex-direction:row;\n -webkit-box-align:center;\n -ms-flex-align:center;\n align-items:center;\n -ms-flex-line-pack:center;\n align-content:center;\n max-width:100%;\n -webkit-box-pack:end;\n -ms-flex-pack:end;\n justify-content:flex-end; }\n :host .td-paging-bar ::ng-deep > *{\n margin:0 10px; }\n :host .td-paging-bar [mat-icon-button]{\n font-size:12px;\n font-weight:normal; }\n`],\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"
],
"names": [
"state",
"style",
"query",
"filter",
"TD_VIRTUAL_OFFSET",
"mixinDisableRipple",
"mixinDisabled",
"mixinControlValueAccessor",
"TdFadeInOutAnimation",
"TdCollapseAnimation",
"TdRotateAnimation",
"CovalentCommonModule"
],
"mappings": "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"
}