@covalent/core 2.0.0-rc.2 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/breadcrumbs/_breadcrumbs-theme.scss +1 -2
- package/breadcrumbs/breadcrumb/breadcrumb.component.scss +22 -0
- package/breadcrumbs/breadcrumbs.component.scss +7 -0
- package/breadcrumbs/covalent-core-breadcrumbs.metadata.json +1 -1
- package/bundles/covalent-core-breadcrumbs.umd.js +1 -1
- package/bundles/covalent-core-breadcrumbs.umd.min.js +1 -1
- package/bundles/covalent-core-breadcrumbs.umd.min.js.map +1 -1
- package/bundles/covalent-core-chips.umd.js +6 -6
- package/bundles/covalent-core-chips.umd.js.map +1 -1
- package/bundles/covalent-core-chips.umd.min.js +1 -1
- package/bundles/covalent-core-chips.umd.min.js.map +1 -1
- package/bundles/covalent-core-common.umd.js +251 -84
- package/bundles/covalent-core-common.umd.js.map +1 -1
- package/bundles/covalent-core-common.umd.min.js +1 -1
- package/bundles/covalent-core-common.umd.min.js.map +1 -1
- package/bundles/covalent-core-data-table.umd.js +9 -9
- package/bundles/covalent-core-data-table.umd.js.map +1 -1
- package/bundles/covalent-core-data-table.umd.min.js +1 -1
- package/bundles/covalent-core-data-table.umd.min.js.map +1 -1
- package/bundles/covalent-core-dialogs.umd.js +3 -20
- package/bundles/covalent-core-dialogs.umd.js.map +1 -1
- package/bundles/covalent-core-dialogs.umd.min.js +1 -1
- package/bundles/covalent-core-dialogs.umd.min.js.map +1 -1
- package/bundles/covalent-core-expansion-panel.umd.js +1 -1
- package/bundles/covalent-core-expansion-panel.umd.min.js +1 -1
- package/bundles/covalent-core-expansion-panel.umd.min.js.map +1 -1
- package/bundles/covalent-core-file.umd.min.js +1 -1
- package/bundles/covalent-core-file.umd.min.js.map +1 -1
- package/bundles/covalent-core-json-formatter.umd.js +1 -1
- package/bundles/covalent-core-json-formatter.umd.min.js +1 -1
- package/bundles/covalent-core-json-formatter.umd.min.js.map +1 -1
- package/bundles/covalent-core-layout.umd.js +8 -7
- package/bundles/covalent-core-layout.umd.js.map +1 -1
- package/bundles/covalent-core-layout.umd.min.js +1 -1
- package/bundles/covalent-core-layout.umd.min.js.map +1 -1
- package/bundles/covalent-core-loading.umd.js +1 -1
- package/bundles/covalent-core-loading.umd.min.js +1 -1
- package/bundles/covalent-core-loading.umd.min.js.map +1 -1
- package/bundles/covalent-core-media.umd.min.js +1 -1
- package/bundles/covalent-core-media.umd.min.js.map +1 -1
- package/bundles/covalent-core-menu.umd.js +1 -1
- package/bundles/covalent-core-menu.umd.min.js +1 -1
- package/bundles/covalent-core-menu.umd.min.js.map +1 -1
- package/bundles/covalent-core-message.umd.js +1 -1
- package/bundles/covalent-core-message.umd.min.js +1 -1
- package/bundles/covalent-core-message.umd.min.js.map +1 -1
- package/bundles/covalent-core-notifications.umd.min.js +1 -1
- package/bundles/covalent-core-notifications.umd.min.js.map +1 -1
- package/bundles/covalent-core-paging.umd.js +1 -1
- package/bundles/covalent-core-paging.umd.min.js +1 -1
- package/bundles/covalent-core-paging.umd.min.js.map +1 -1
- package/bundles/covalent-core-search.umd.js +5 -4
- package/bundles/covalent-core-search.umd.js.map +1 -1
- package/bundles/covalent-core-search.umd.min.js +1 -1
- package/bundles/covalent-core-search.umd.min.js.map +1 -1
- package/bundles/covalent-core-sidesheet.umd.js +137 -0
- package/bundles/covalent-core-sidesheet.umd.js.map +1 -0
- package/bundles/covalent-core-sidesheet.umd.min.js +2 -0
- package/bundles/covalent-core-sidesheet.umd.min.js.map +1 -0
- package/bundles/covalent-core-steps.umd.js +5 -5
- package/bundles/covalent-core-steps.umd.min.js +1 -1
- package/bundles/covalent-core-steps.umd.min.js.map +1 -1
- package/bundles/covalent-core-tab-select.umd.js +3 -2
- package/bundles/covalent-core-tab-select.umd.js.map +1 -1
- package/bundles/covalent-core-tab-select.umd.min.js +1 -1
- package/bundles/covalent-core-tab-select.umd.min.js.map +1 -1
- package/bundles/covalent-core-virtual-scroll.umd.min.js +1 -1
- package/bundles/covalent-core-virtual-scroll.umd.min.js.map +1 -1
- package/bundles/covalent-core.umd.js +223 -82
- package/bundles/covalent-core.umd.js.map +1 -1
- package/bundles/covalent-core.umd.min.js +1 -1
- package/bundles/covalent-core.umd.min.js.map +1 -1
- package/chips/chips.component.scss +143 -0
- package/chips/covalent-core-chips.metadata.json +1 -1
- package/common/covalent-core-common.d.ts +4 -3
- package/common/covalent-core-common.metadata.json +1 -1
- package/common/directives/fullscreen/fullscreen.directive.d.ts +22 -0
- package/common/material-icons.css.map +1 -1
- package/common/platform.css +10 -10
- package/common/platform.css.map +1 -1
- package/common/styles/_layout.scss +1 -1
- package/covalent-core.d.ts +8 -7
- package/covalent-core.metadata.json +1 -1
- package/data-table/README.md +2 -2
- package/data-table/covalent-core-data-table.metadata.json +1 -1
- package/data-table/data-table-cell/data-table-cell.component.scss +57 -0
- package/data-table/data-table-column/data-table-column.component.scss +78 -0
- package/data-table/data-table-row/data-table-row.component.scss +12 -0
- package/data-table/data-table-table/data-table-table.component.scss +7 -0
- package/data-table/data-table.component.scss +77 -0
- package/dialogs/alert-dialog/alert-dialog.component.scss +3 -0
- package/dialogs/confirm-dialog/confirm-dialog.component.scss +3 -0
- package/dialogs/covalent-core-dialogs.metadata.json +1 -1
- package/dialogs/dialog.component.scss +43 -0
- package/dialogs/prompt-dialog/prompt-dialog.component.scss +15 -0
- package/dialogs/services/dialog.service.d.ts +0 -3
- package/esm2015/breadcrumbs/breadcrumb/breadcrumb.component.js +1 -1
- package/esm2015/chips/chips.component.js +3 -3
- package/esm2015/common/common.module.js +8 -26
- package/esm2015/common/covalent-core-common.js +5 -4
- package/esm2015/common/directives/fullscreen/fullscreen.directive.js +136 -0
- package/esm2015/covalent-core.js +10 -9
- package/esm2015/data-table/data-table-cell/data-table-cell.component.js +1 -1
- package/esm2015/data-table/data-table-column/data-table-column.component.js +1 -1
- package/esm2015/data-table/data-table.component.js +5 -4
- package/esm2015/dialogs/covalent-core-dialogs.js +2 -2
- package/esm2015/dialogs/dialog.component.js +1 -1
- package/esm2015/dialogs/dialogs.module.js +3 -3
- package/esm2015/dialogs/index.js +2 -2
- package/esm2015/dialogs/prompt-dialog/prompt-dialog.component.js +1 -1
- package/esm2015/dialogs/public-api.js +2 -2
- package/esm2015/dialogs/services/dialog.service.js +2 -17
- package/esm2015/expansion-panel/expansion-panel.component.js +1 -1
- package/esm2015/index.js +2 -2
- package/esm2015/json-formatter/json-formatter.component.js +1 -1
- package/esm2015/layout/layout-card-over/layout-card-over.component.js +1 -1
- package/esm2015/layout/layout-manage-list/layout-manage-list.component.js +1 -1
- package/esm2015/layout/layout-nav/layout-nav.component.js +1 -1
- package/esm2015/layout/layout-nav-list/layout-nav-list.component.js +1 -1
- package/esm2015/layout/layout.component.js +1 -1
- package/esm2015/layout/navigation-drawer/navigation-drawer.component.js +12 -3
- package/esm2015/loading/loading.component.js +1 -1
- package/esm2015/menu/menu.component.js +1 -1
- package/esm2015/message/message.component.js +1 -1
- package/esm2015/paging/paging-bar.component.js +1 -1
- package/esm2015/public_api.js +2 -2
- package/esm2015/search/search-box/search-box.component.js +3 -3
- package/esm2015/search/search-input/search-input.component.js +10 -3
- package/esm2015/sidesheet/covalent-core-sidesheet.js +9 -0
- package/esm2015/sidesheet/index.js +6 -0
- package/esm2015/sidesheet/public-api.js +7 -0
- package/esm2015/sidesheet/sidesheet.component.js +70 -0
- package/esm2015/sidesheet/sidesheet.module.js +33 -0
- package/esm2015/steps/nav/nav-step-link/nav-step-link.component.js +1 -1
- package/esm2015/steps/nav/nav-steps-horizontal/nav-steps-horizontal.component.js +1 -1
- package/esm2015/steps/step-body/step-body.component.js +1 -1
- package/esm2015/steps/step-header/step-header.component.js +1 -1
- package/esm2015/steps/steps.component.js +1 -1
- package/esm2015/tab-select/tab-select.component.js +4 -3
- package/esm5/breadcrumbs/breadcrumb/breadcrumb.component.js +1 -1
- package/esm5/chips/chips.component.js +3 -3
- package/esm5/common/common.module.js +8 -26
- package/esm5/common/covalent-core-common.js +5 -4
- package/esm5/common/directives/fullscreen/fullscreen.directive.js +184 -0
- package/esm5/covalent-core.js +10 -9
- package/esm5/data-table/data-table-cell/data-table-cell.component.js +1 -1
- package/esm5/data-table/data-table-column/data-table-column.component.js +1 -1
- package/esm5/data-table/data-table.component.js +5 -4
- package/esm5/dialogs/covalent-core-dialogs.js +2 -2
- package/esm5/dialogs/dialog.component.js +1 -1
- package/esm5/dialogs/dialogs.module.js +3 -3
- package/esm5/dialogs/index.js +2 -2
- package/esm5/dialogs/prompt-dialog/prompt-dialog.component.js +1 -1
- package/esm5/dialogs/public-api.js +2 -2
- package/esm5/dialogs/services/dialog.service.js +2 -17
- package/esm5/expansion-panel/expansion-panel.component.js +1 -1
- package/esm5/index.js +2 -2
- package/esm5/json-formatter/json-formatter.component.js +1 -1
- package/esm5/layout/layout-card-over/layout-card-over.component.js +1 -1
- package/esm5/layout/layout-manage-list/layout-manage-list.component.js +1 -1
- package/esm5/layout/layout-nav/layout-nav.component.js +1 -1
- package/esm5/layout/layout-nav-list/layout-nav-list.component.js +1 -1
- package/esm5/layout/layout.component.js +1 -1
- package/esm5/layout/navigation-drawer/navigation-drawer.component.js +12 -3
- package/esm5/loading/loading.component.js +1 -1
- package/esm5/menu/menu.component.js +1 -1
- package/esm5/message/message.component.js +1 -1
- package/esm5/paging/paging-bar.component.js +1 -1
- package/esm5/public_api.js +2 -2
- package/esm5/search/search-box/search-box.component.js +3 -3
- package/esm5/search/search-input/search-input.component.js +10 -3
- package/esm5/sidesheet/covalent-core-sidesheet.js +9 -0
- package/esm5/sidesheet/index.js +6 -0
- package/esm5/sidesheet/public-api.js +7 -0
- package/esm5/sidesheet/sidesheet.component.js +88 -0
- package/esm5/sidesheet/sidesheet.module.js +37 -0
- package/esm5/steps/nav/nav-step-link/nav-step-link.component.js +1 -1
- package/esm5/steps/nav/nav-steps-horizontal/nav-steps-horizontal.component.js +1 -1
- package/esm5/steps/step-body/step-body.component.js +1 -1
- package/esm5/steps/step-header/step-header.component.js +1 -1
- package/esm5/steps/steps.component.js +1 -1
- package/esm5/tab-select/tab-select.component.js +4 -3
- package/expansion-panel/covalent-core-expansion-panel.metadata.json +1 -1
- package/expansion-panel/expansion-panel-group.component.scss +0 -0
- package/expansion-panel/expansion-panel.component.scss +50 -0
- package/fesm2015/covalent-core-breadcrumbs.js +1 -1
- package/fesm2015/covalent-core-chips.js +2 -3
- package/fesm2015/covalent-core-chips.js.map +1 -1
- package/fesm2015/covalent-core-common.js +114 -26
- package/fesm2015/covalent-core-common.js.map +1 -1
- package/fesm2015/covalent-core-data-table.js +6 -6
- package/fesm2015/covalent-core-data-table.js.map +1 -1
- package/fesm2015/covalent-core-dialogs.js +5 -20
- package/fesm2015/covalent-core-dialogs.js.map +1 -1
- package/fesm2015/covalent-core-expansion-panel.js +1 -1
- package/fesm2015/covalent-core-json-formatter.js +1 -1
- package/fesm2015/covalent-core-layout.js +8 -7
- package/fesm2015/covalent-core-layout.js.map +1 -1
- package/fesm2015/covalent-core-loading.js +1 -1
- package/fesm2015/covalent-core-menu.js +1 -1
- package/fesm2015/covalent-core-message.js +1 -1
- package/fesm2015/covalent-core-paging.js +1 -1
- package/fesm2015/covalent-core-search.js +5 -4
- package/fesm2015/covalent-core-search.js.map +1 -1
- package/fesm2015/covalent-core-sidesheet.js +110 -0
- package/fesm2015/covalent-core-sidesheet.js.map +1 -0
- package/fesm2015/covalent-core-steps.js +5 -5
- package/fesm2015/covalent-core-tab-select.js +3 -2
- package/fesm2015/covalent-core-tab-select.js.map +1 -1
- package/fesm2015/covalent-core.js +151 -75
- package/fesm2015/covalent-core.js.map +1 -1
- package/fesm5/covalent-core-breadcrumbs.js +1 -1
- package/fesm5/covalent-core-chips.js +2 -3
- package/fesm5/covalent-core-chips.js.map +1 -1
- package/fesm5/covalent-core-common.js +161 -27
- package/fesm5/covalent-core-common.js.map +1 -1
- package/fesm5/covalent-core-data-table.js +6 -6
- package/fesm5/covalent-core-data-table.js.map +1 -1
- package/fesm5/covalent-core-dialogs.js +5 -20
- package/fesm5/covalent-core-dialogs.js.map +1 -1
- package/fesm5/covalent-core-expansion-panel.js +1 -1
- package/fesm5/covalent-core-json-formatter.js +1 -1
- package/fesm5/covalent-core-layout.js +8 -7
- package/fesm5/covalent-core-layout.js.map +1 -1
- package/fesm5/covalent-core-loading.js +1 -1
- package/fesm5/covalent-core-menu.js +1 -1
- package/fesm5/covalent-core-message.js +1 -1
- package/fesm5/covalent-core-paging.js +1 -1
- package/fesm5/covalent-core-search.js +5 -4
- package/fesm5/covalent-core-search.js.map +1 -1
- package/fesm5/covalent-core-sidesheet.js +126 -0
- package/fesm5/covalent-core-sidesheet.js.map +1 -0
- package/fesm5/covalent-core-steps.js +5 -5
- package/fesm5/covalent-core-tab-select.js +3 -2
- package/fesm5/covalent-core-tab-select.js.map +1 -1
- package/fesm5/covalent-core.js +198 -76
- package/fesm5/covalent-core.js.map +1 -1
- package/file/file-input/file-input.component.scss +19 -0
- package/file/file-upload/file-upload.component.scss +29 -0
- package/json-formatter/covalent-core-json-formatter.metadata.json +1 -1
- package/json-formatter/json-formatter.component.scss +61 -0
- package/layout/README.md +5 -2
- package/layout/covalent-core-layout.metadata.json +1 -1
- package/layout/layout-card-over/layout-card-over.component.scss +42 -0
- package/layout/layout-footer/layout-footer.component.scss +4 -0
- package/layout/layout-manage-list/layout-manage-list.component.scss +77 -0
- package/layout/layout-nav/layout-nav.component.scss +50 -0
- package/layout/layout-nav-list/layout-nav-list.component.scss +109 -0
- package/layout/layout.component.scss +20 -0
- package/layout/navigation-drawer/navigation-drawer.component.d.ts +7 -0
- package/layout/navigation-drawer/navigation-drawer.component.scss +57 -0
- package/loading/covalent-core-loading.metadata.json +1 -1
- package/loading/loading.component.scss +42 -0
- package/menu/covalent-core-menu.metadata.json +1 -1
- package/menu/menu.component.scss +43 -0
- package/message/covalent-core-message.metadata.json +1 -1
- package/message/message.component.scss +29 -0
- package/notifications/notification-count.component.scss +89 -0
- package/package.json +1 -1
- package/paging/covalent-core-paging.metadata.json +1 -1
- package/paging/paging-bar.component.scss +23 -0
- package/search/covalent-core-search.metadata.json +1 -1
- package/search/search-box/search-box.component.scss +32 -0
- package/search/search-input/README.md +5 -2
- package/search/search-input/search-input.component.d.ts +6 -0
- package/search/search-input/search-input.component.scss +63 -0
- package/sidesheet/README.md +68 -0
- package/sidesheet/covalent-core-sidesheet.d.ts +4 -0
- package/sidesheet/covalent-core-sidesheet.metadata.json +1 -0
- package/sidesheet/index.d.ts +1 -0
- package/sidesheet/package.json +13 -0
- package/sidesheet/public-api.d.ts +2 -0
- package/sidesheet/sidesheet.component.d.ts +13 -0
- package/sidesheet/sidesheet.component.scss +96 -0
- package/sidesheet/sidesheet.module.d.ts +2 -0
- package/steps/covalent-core-steps.metadata.json +1 -1
- package/steps/nav/nav-step-link/nav-step-link.component.scss +17 -0
- package/steps/nav/nav-steps-horizontal/nav-steps-horizontal.component.scss +81 -0
- package/steps/nav/nav-steps-vertical/nav-steps-vertical.component.scss +18 -0
- package/steps/step-body/step-body.component.scss +29 -0
- package/steps/step-header/step-header.component.scss +90 -0
- package/steps/steps.component.scss +53 -0
- package/tab-select/covalent-core-tab-select.metadata.json +1 -1
- package/tab-select/tab-option.component.scss +0 -0
- package/tab-select/tab-select.component.scss +3 -0
- package/theming/prebuilt/blue-grey-deep-orange.css +92 -87
- package/theming/prebuilt/blue-grey-deep-orange.css.map +1 -1
- package/theming/prebuilt/blue-orange.css +92 -87
- package/theming/prebuilt/blue-orange.css.map +1 -1
- package/theming/prebuilt/indigo-pink.css +92 -87
- package/theming/prebuilt/indigo-pink.css.map +1 -1
- package/theming/prebuilt/orange-light-blue.css +92 -87
- package/theming/prebuilt/orange-light-blue.css.map +1 -1
- package/theming/prebuilt/teal-orange.css +92 -87
- package/theming/prebuilt/teal-orange.css.map +1 -1
- package/virtual-scroll/virtual-scroll-container.component.scss +7 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["node_modules/tslib/tslib.es6.js","ng://@covalent/core/data-table/data-table-row/data-table-row.component.ts","ng://@covalent/core/data-table/directives/data-table-template.directive.ts","ng://@covalent/core/data-table/data-table.component.ts","ng://@covalent/core/data-table/data-table-column/data-table-column.component.ts","ng://@covalent/core/data-table/data-table-cell/data-table-cell.component.ts","ng://@covalent/core/data-table/data-table-table/data-table-table.component.ts","ng://@covalent/core/data-table/services/data-table.service.ts","ng://@covalent/core/data-table/data-table.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","TdDataTableColumnRowComponent","_elementRef","_renderer","addClass","nativeElement","Component","args","selector","template","ElementRef","Renderer2","TdDataTableRowComponent","_selected","defineProperty","selected","removeClass","height","getBoundingClientRect","clickListener","focus","Input","HostListener","TdDataTableTemplateDirective","templateRef","viewContainerRef","_super","call","tslib_1.__extends","Directive","TemplateRef","ViewContainerRef","TemplatePortalDirective","Ascending","Descending","TdDataTableBase","_changeDetectorRef","_TdDataTableMixinBase","mixinControlValueAccessor","TdDataTableComponent","_document","_domSanitizer","_this","_hostWidth","_resizableColumns","_columnClientX","_onColumnResize","Subject","_widths","_onResize","_scrollHorizontalOffset","_onHorizontalScroll","_onVerticalScroll","_rowHeightCache","_totalHeight","_hostHeight","_scrollVerticalOffset","_fromRow","_toRow","_selectable","_clickable","_multiple","_allSelected","_indeterminate","_sortable","_sortOrder","TdDataTableSortingOrder","_shiftPreviouslyPressed","_lastSelectedIndex","_firstSelectedIndex","_firstCheckboxValue","_templateMap","Map","onSortChange","EventEmitter","onRowSelect","onRowClick","onSelectAll","compareWith","row","model","_resizingColumn","selectable","_offsetTransform","_data","data","Promise","resolve","then","refresh","_scrollableDiv","scrollTop","_virtualData","_columns","hasData","keys","forEach","k","find","c","name","push","label","cols","resizableColumns","coerceBooleanProperty","clickable","multiple","sortable","columnName","column","columns","Error","_sortBy","order","sortOrder","toUpperCase","length","ngOnInit","_resizeSubs","asObservable","subscribe","_rows","toArray","index","fromRow","_calculateWidths","_calculateVirtualRows","_columnResizeSubs","pipe","debounceTime","clientX","markForCheck","_horizontalScrollSubs","horizontalScroll","_verticalScrollSubs","verticalScroll","_valueChangesSubs","valueChanges","value","ngAfterContentInit","i","_templates","set","tdDataTableTemplate","ngAfterContentChecked","next","newHostWidth_1","width","setTimeout","newHostHeight","ngAfterViewInit","_rowsChangedSubs","changes","ngOnDestroy","unsubscribe","handleScroll","event","element","scrollLeft","getColumnWidth","undefined","getCellValue","nested","_getNestedValue","getTemplateRef","get","clearModel","splice","_calculateCheckboxState","selectAll","checked","toggledRows","isRowSelected","modelRow","filter","val","indexOf","emit","rows","onChange","select","currentSelected","blockEvent","mouseEvent","shiftKey","firstIndex","lastIndex","_doSelection","rowSelected","disableTextSelection","onselectstart","enableTextSelection","handleRowClick","srcElement","currentTarget","getAttribute","tagName","toLowerCase","handleSort","_rowKeyup","keyCode","ENTER","SPACE","UP_ARROW","DOWN_ARROW","_handleStartColumnDrag","_handleColumnDrag","xPosition","proposedManualWidth","_colElements","projectedWidth","_handleEndColumnDrag","preventDefault","splitName","split","rowIndex","wasSelected","_b","__values","o","m","Symbol","iterator","done","tslib_1.__values","_c","col","_adjustColumnWidth","_calculateWidth","_adjustColumnWidhts","fixedTotalWidth","flexibleWidths","hidden","limit","max","min","recalculateHostWidth","hostWidth","newValue_1","Math","floor","adjustedNumber_1","colWidth","newFlexibleWidths","skipMinWidthProjection","widthOpts","renderedColumns","scrolledRows","rowHeightSum_1","hostHeight","toRow","isFinite","offset","bypassSecurityTrustStyle","totalHeight","slice","providers","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","inputs","changeDetection","ChangeDetectionStrategy","OnPush","Optional","type","Inject","DOCUMENT","DomSanitizer","ChangeDetectorRef","ContentChildren","ViewChild","ViewChildren","Output","TdDataTableColumnComponent","active","numeric","_columnContent","handleClick","isAscending","isDescending","read","HostBinding","TdDataTableCellComponent","_align","align","TdDataTableTableComponent","TdDataTableService","filterData","searchTerm","ignoreCase","excludedColumns","item","key","preItemValue","sortData","sortBy","from","sort","a","compA","compB","direction","Number","isNaN","parseFloat","pageData","Injectable","DATA_TABLE_PROVIDER_FACTORY","parent","DATA_TABLE_PROVIDER","deps","SkipSelf","useFactory","TD_DATA_TABLE","CovalentDataTableModule","NgModule","imports","CommonModule","MatCheckboxModule","MatTooltipModule","MatIconModule","MatPseudoCheckboxModule","declarations","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Component, Input, Output, Renderer2, ElementRef, ContentChildren, QueryList, HostListener } from '@angular/core';\n\nimport { TdDataTableCellComponent } from '../data-table-cell/data-table-cell.component';\nimport { TdDataTableColumnComponent } from '../data-table-column/data-table-column.component';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'tr[td-data-table-column-row]',\n styleUrls: ['./data-table-row.component.scss' ],\n templateUrl: './data-table-row.component.html',\n})\nexport class TdDataTableColumnRowComponent {\n\n constructor(protected _elementRef: ElementRef, protected _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-column-row');\n }\n\n}\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'tr[td-data-table-row]',\n styleUrls: ['./data-table-row.component.scss' ],\n templateUrl: './data-table-row.component.html',\n})\nexport class TdDataTableRowComponent {\n\n private _selected: boolean = false;\n\n @Input('selected')\n set selected(selected: boolean) {\n if (selected) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-selected');\n } else {\n this._renderer.removeClass(this._elementRef.nativeElement, 'td-selected');\n }\n this._selected = selected;\n }\n get selected(): boolean {\n return this._selected;\n }\n\n get height(): number {\n let height: number = 48;\n if (this._elementRef.nativeElement) {\n height = (<HTMLElement>this._elementRef.nativeElement).getBoundingClientRect().height;\n }\n return height;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-row');\n }\n\n /**\n * Listening to click event to explicitly focus the row element.\n */\n @HostListener('click')\n clickListener(): void {\n this.focus();\n }\n\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n}\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\n\n@Directive({selector: '[tdDataTableTemplate]ng-template'})\nexport class TdDataTableTemplateDirective extends TemplatePortalDirective {\n\n @Input() tdDataTableTemplate: string;\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n","import { Component, Input, Output, EventEmitter, forwardRef, ChangeDetectionStrategy,\n ChangeDetectorRef, ViewChild, OnDestroy, AfterViewInit,\n ContentChildren, TemplateRef, AfterContentInit, QueryList, Inject,\n Optional, ViewChildren, ElementRef, OnInit, AfterContentChecked } from '@angular/core';\nimport { DOCUMENT, DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ENTER, SPACE, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';\n\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { TdDataTableRowComponent } from './data-table-row/data-table-row.component';\nimport { ITdDataTableSortChangeEvent, TdDataTableColumnComponent } from './data-table-column/data-table-column.component';\nimport { TdDataTableTemplateDirective } from './directives/data-table-template.directive';\n\nimport { IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\nexport enum TdDataTableSortingOrder {\n Ascending = 'ASC',\n Descending = 'DESC',\n}\n\nexport interface ITdDataTableColumnWidth {\n min?: number;\n max?: number;\n}\n\nexport interface ITdDataTableColumn {\n name: string;\n label: string;\n tooltip?: string;\n numeric?: boolean;\n format?: (value: any) => any;\n nested?: boolean;\n sortable?: boolean;\n hidden?: boolean;\n filter?: boolean;\n width?: ITdDataTableColumnWidth | number;\n}\n\nexport interface ITdDataTableSelectEvent {\n row: any;\n selected: boolean;\n index: number;\n}\n\nexport interface ITdDataTableSelectAllEvent {\n rows: any[];\n selected: boolean;\n}\n\nexport interface ITdDataTableRowClickEvent {\n row: any;\n index: number;\n}\n\nexport interface IInternalColumnWidth {\n value: number;\n limit: boolean;\n index: number;\n min?: boolean;\n max?: boolean;\n}\n\n/**\n * Constant to set the rows offset before and after the viewport\n */\nconst TD_VIRTUAL_OFFSET: number = 2;\n\n/**\n * Constant to set default row height if none is provided\n */\nconst TD_VIRTUAL_DEFAULT_ROW_HEIGHT: number = 48;\n\nexport class TdDataTableBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdDataTableMixinBase = mixinControlValueAccessor(TdDataTableBase, []);\n\n@Component({\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdDataTableComponent),\n multi: true,\n }],\n selector: 'td-data-table',\n styleUrls: ['./data-table.component.scss' ],\n templateUrl: './data-table.component.html',\n inputs: ['value'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdDataTableComponent extends _TdDataTableMixinBase implements IControlValueAccessor, OnInit,\n AfterContentInit, AfterContentChecked, AfterViewInit, OnDestroy {\n\n /** responsive width calculations */\n private _resizeSubs: Subscription;\n private _rowsChangedSubs: Subscription;\n private _hostWidth: number = 0;\n\n /** manually resizable columns */\n private _resizableColumns: boolean = false;\n private _columnClientX: number = 0;\n private _columnResizeSubs: Subscription;\n private _resizingColumn: number;\n private _onColumnResize: Subject<number> = new Subject<number>();\n\n get resizingColumn(): number {\n return this._resizingColumn;\n }\n\n get hostWidth(): number {\n // if the checkboxes are rendered, we need to remove their width\n // from the total width to calculate properly\n if (this.selectable) {\n return this._hostWidth - 42;\n }\n return this._hostWidth;\n }\n\n private _widths: IInternalColumnWidth[] = [];\n private _onResize: Subject<void> = new Subject<void>();\n\n /** column header reposition and viewpoort */\n private _verticalScrollSubs: Subscription;\n private _horizontalScrollSubs: Subscription;\n private _scrollHorizontalOffset: number = 0;\n\n private _onHorizontalScroll: Subject<number> = new Subject<number>();\n private _onVerticalScroll: Subject<number> = new Subject<number>();\n\n // Array of cached row heights to allow dynamic row heights\n private _rowHeightCache: number[] = [];\n // Total pseudo height of all the elements\n private _totalHeight: number = 0;\n // Total host height for the viewport\n private _hostHeight: number = 0;\n // Scrolled vertical pixels\n private _scrollVerticalOffset: number = 0;\n // Style to move the content a certain offset depending on scrolled offset\n private _offsetTransform: SafeStyle;\n\n // Variables that set from and to which rows will be rendered\n private _fromRow: number = 0;\n private _toRow: number = 0;\n\n /**\n * Returns the offset style with a proper calculation on how much it should move\n * over the y axis of the total height\n */\n get offsetTransform(): SafeStyle {\n return this._offsetTransform;\n }\n\n /**\n * Returns the assumed total height of the rows\n */\n get totalHeight(): number {\n return this._totalHeight;\n }\n\n /**\n * Returns the initial row to render in the viewport\n */\n get fromRow(): number {\n return this._fromRow;\n }\n\n /**\n * Returns the last row to render in the viewport\n */\n get toRow(): number {\n return this._toRow;\n }\n\n private _valueChangesSubs: Subscription;\n /** internal attributes */\n private _data: any[];\n // data virtually iterated by component\n private _virtualData: any[];\n private _columns: ITdDataTableColumn[];\n private _selectable: boolean = false;\n private _clickable: boolean = false;\n private _multiple: boolean = true;\n private _allSelected: boolean = false;\n private _indeterminate: boolean = false;\n\n /** sorting */\n private _sortable: boolean = false;\n private _sortBy: ITdDataTableColumn;\n private _sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending;\n\n /** shift select */\n private _shiftPreviouslyPressed: boolean = false;\n private _lastSelectedIndex: number = -1;\n private _firstSelectedIndex: number = -1;\n private _firstCheckboxValue: boolean = false;\n\n /** template fetching support */\n private _templateMap: Map<string, TemplateRef<any>> = new Map<string, TemplateRef<any>>();\n @ContentChildren(TdDataTableTemplateDirective) _templates: QueryList<TdDataTableTemplateDirective>;\n\n @ViewChild('scrollableDiv') _scrollableDiv: ElementRef;\n\n @ViewChildren('columnElement') _colElements: QueryList<TdDataTableColumnComponent>;\n\n @ViewChildren(TdDataTableRowComponent) _rows: QueryList<TdDataTableRowComponent>;\n\n /**\n * Returns scroll position to reposition column headers\n */\n get columnsLeftScroll(): number {\n return this._scrollHorizontalOffset * -1;\n }\n\n /**\n * Returns true if all values are selected.\n */\n get allSelected(): boolean {\n return this._allSelected;\n }\n\n /**\n * Returns true if all values are not deselected\n * and at least one is.\n */\n get indeterminate(): boolean {\n return this._indeterminate;\n }\n\n /**\n * data?: {[key: string]: any}[]\n * Sets the data to be rendered as rows.\n */\n @Input('data')\n set data(data: any[]) {\n this._data = data;\n this._rowHeightCache = [];\n Promise.resolve().then(() => {\n this.refresh();\n // scroll back to the top if the data has changed\n this._scrollableDiv.nativeElement.scrollTop = 0;\n });\n }\n get data(): any[] {\n return this._data;\n }\n\n get virtualData(): any[] {\n return this._virtualData;\n }\n\n /**\n * columns?: ITdDataTableColumn[]\n * Sets additional column configuration. [ITdDataTableColumn.name] has to exist in [data] as key.\n * Defaults to [data] keys.\n */\n @Input('columns')\n set columns(cols: ITdDataTableColumn[]) {\n this._columns = cols;\n }\n get columns(): ITdDataTableColumn[] {\n if (this._columns) {\n return this._columns;\n }\n\n if (this.hasData) {\n this._columns = [];\n // if columns is undefined, use key in [data] rows as name and label for column headers.\n let row: any = this._data[0];\n Object.keys(row).forEach((k: string) => {\n if (!this._columns.find((c: any) => c.name === k)) {\n this._columns.push({ name: k, label: k });\n }\n });\n return this._columns;\n } else {\n return [];\n }\n }\n\n /**\n * resizableColumns?: boolean\n * Enables manual column resize.\n * Defaults to 'false'\n */\n @Input('resizableColumns')\n set resizableColumns(resizableColumns: boolean) {\n this._resizableColumns = coerceBooleanProperty(resizableColumns);\n }\n get resizableColumns(): boolean {\n return this._resizableColumns;\n }\n\n /**\n * selectable?: boolean\n * Enables row selection events, hover and selected row states.\n * Defaults to 'false'\n */\n @Input('selectable')\n set selectable(selectable: boolean) {\n this._selectable = coerceBooleanProperty(selectable);\n }\n get selectable(): boolean {\n return this._selectable;\n }\n\n /**\n * clickable?: boolean\n * Enables row click events, hover.\n * Defaults to 'false'\n */\n @Input('clickable')\n set clickable(clickable: boolean) {\n this._clickable = coerceBooleanProperty(clickable);\n }\n get clickable(): boolean {\n return this._clickable;\n }\n\n /**\n * multiple?: boolean\n * Enables multiple row selection. [selectable] needs to be enabled.\n * Defaults to 'false'\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * sortable?: boolean\n * Enables sorting events, sort icons and active column states.\n * Defaults to 'false'\n */\n @Input('sortable')\n set sortable(sortable: boolean) {\n this._sortable = coerceBooleanProperty(sortable);\n }\n get sortable(): boolean {\n return this._sortable;\n }\n\n /**\n * sortBy?: string\n * Sets the active sort column. [sortable] needs to be enabled.\n */\n @Input('sortBy')\n set sortBy(columnName: string) {\n if (!columnName) {\n return;\n }\n const column: ITdDataTableColumn = this.columns.find((c: any) => c.name === columnName);\n if (!column) {\n throw new Error('[sortBy] must be a valid column name');\n }\n\n this._sortBy = column;\n }\n get sortByColumn(): ITdDataTableColumn {\n return this._sortBy;\n }\n\n /**\n * sortOrder?: ['ASC' | 'DESC'] or TdDataTableSortingOrder\n * Sets the sort order of the [sortBy] column. [sortable] needs to be enabled.\n * Defaults to 'ASC' or TdDataTableSortingOrder.Ascending\n */\n @Input('sortOrder')\n set sortOrder(order: 'ASC' | 'DESC') {\n let sortOrder: string = order ? order.toUpperCase() : 'ASC';\n if (sortOrder !== 'DESC' && sortOrder !== 'ASC') {\n throw new Error('[sortOrder] must be empty, ASC or DESC');\n }\n\n this._sortOrder = sortOrder === 'ASC' ?\n TdDataTableSortingOrder.Ascending : TdDataTableSortingOrder.Descending;\n }\n get sortOrderEnum(): TdDataTableSortingOrder {\n return this._sortOrder;\n }\n\n get hasData(): boolean {\n return this._data && this._data.length > 0;\n }\n\n /**\n * sortChange?: function\n * Event emitted when the column headers are clicked. [sortable] needs to be enabled.\n * Emits an [ITdDataTableSortChangeEvent] implemented object.\n */\n @Output('sortChange') onSortChange: EventEmitter<ITdDataTableSortChangeEvent> =\n new EventEmitter<ITdDataTableSortChangeEvent>();\n\n /**\n * rowSelect?: function\n * Event emitted when a row is selected/deselected. [selectable] needs to be enabled.\n * Emits an [ITdDataTableSelectEvent] implemented object.\n */\n @Output('rowSelect') onRowSelect: EventEmitter<ITdDataTableSelectEvent> = new EventEmitter<ITdDataTableSelectEvent>();\n\n /**\n * rowClick?: function\n * Event emitted when a row is clicked.\n * Emits an [ITdDataTableRowClickEvent] implemented object.\n */\n @Output('rowClick') onRowClick: EventEmitter<ITdDataTableRowClickEvent> = new EventEmitter<ITdDataTableRowClickEvent>();\n\n /**\n * selectAll?: function\n * Event emitted when all rows are selected/deselected by the all checkbox. [selectable] needs to be enabled.\n * Emits an [ITdDataTableSelectAllEvent] implemented object.\n */\n @Output('selectAll') onSelectAll: EventEmitter<ITdDataTableSelectAllEvent> =\n new EventEmitter<ITdDataTableSelectAllEvent>();\n\n constructor(@Optional() @Inject(DOCUMENT) private _document: any,\n private _elementRef: ElementRef,\n private _domSanitizer: DomSanitizer,\n _changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n }\n\n /**\n * compareWith?: function(row, model): boolean\n * Allows custom comparison between row and model to see if row is selected or not\n * Default comparation is by reference\n */\n @Input('compareWith') compareWith: (row: any, model: any) => boolean = (row: any, model: any) => {\n return row === model;\n }\n\n /**\n * Initialize observable for resize and scroll events\n */\n ngOnInit(): void {\n // initialize observable for resize calculations\n this._resizeSubs = this._onResize.asObservable().subscribe(() => {\n if (this._rows) {\n this._rows.toArray().forEach((row: TdDataTableRowComponent, index: number) => {\n this._rowHeightCache[this.fromRow + index] = row.height + 1;\n });\n }\n this._calculateWidths();\n this._calculateVirtualRows();\n });\n\n // initialize observable for column resize calculations\n this._columnResizeSubs = this._onColumnResize.asObservable().pipe(\n debounceTime(0),\n ).subscribe((clientX: number) => {\n this._columnClientX = clientX;\n this._calculateWidths();\n this._changeDetectorRef.markForCheck();\n });\n // initialize observable for scroll column header reposition\n this._horizontalScrollSubs = this._onHorizontalScroll.asObservable()\n .subscribe((horizontalScroll: number) => {\n this._scrollHorizontalOffset = horizontalScroll;\n this._changeDetectorRef.markForCheck();\n });\n // initialize observable for virtual scroll rendering\n this._verticalScrollSubs = this._onVerticalScroll.asObservable()\n .subscribe((verticalScroll: number) => {\n this._scrollVerticalOffset = verticalScroll;\n this._calculateVirtualRows();\n this._changeDetectorRef.markForCheck();\n });\n this._valueChangesSubs = this.valueChanges.subscribe((value: any) => {\n this.refresh();\n });\n }\n\n /**\n * Loads templates and sets them in a map for faster access.\n */\n ngAfterContentInit(): void {\n for (let i: number = 0; i < this._templates.toArray().length; i++) {\n this._templateMap.set(\n this._templates.toArray()[i].tdDataTableTemplate,\n this._templates.toArray()[i].templateRef,\n );\n }\n }\n\n /**\n * Checks hosts native elements widths to see if it has changed (resize check)\n */\n ngAfterContentChecked(): void {\n // check if the scroll has been reset when element is hidden\n if (this._scrollVerticalOffset - this._scrollableDiv.nativeElement.scrollTop > 5) {\n // scroll back to the top if element has been reset\n this._onVerticalScroll.next(0);\n }\n if (this._elementRef.nativeElement) {\n let newHostWidth: number = this._elementRef.nativeElement.getBoundingClientRect().width;\n // if the width has changed then we throw a resize event.\n if (this._hostWidth !== newHostWidth) {\n setTimeout(() => {\n this._hostWidth = newHostWidth;\n this._onResize.next();\n }, 0);\n }\n }\n if (this._scrollableDiv.nativeElement) {\n let newHostHeight: number = this._scrollableDiv.nativeElement.getBoundingClientRect().height;\n // if the height of the viewport has changed, then we mark for check\n if (this._hostHeight !== newHostHeight) {\n this._hostHeight = newHostHeight;\n this._calculateVirtualRows();\n this._changeDetectorRef.markForCheck();\n }\n }\n }\n\n /**\n * Registers to an observable that checks if all rows have been rendered\n * so we can start calculating the widths\n */\n ngAfterViewInit(): void {\n this._rowsChangedSubs = this._rows.changes.pipe(\n debounceTime(0),\n ).subscribe(() => {\n this._onResize.next();\n });\n this._calculateVirtualRows();\n }\n\n /**\n * Unsubscribes observables when data table is destroyed\n */\n ngOnDestroy(): void {\n if (this._resizeSubs) {\n this._resizeSubs.unsubscribe();\n }\n if (this._columnResizeSubs) {\n this._columnResizeSubs.unsubscribe();\n }\n if (this._horizontalScrollSubs) {\n this._horizontalScrollSubs.unsubscribe();\n }\n if (this._verticalScrollSubs) {\n this._verticalScrollSubs.unsubscribe();\n }\n if (this._rowsChangedSubs) {\n this._rowsChangedSubs.unsubscribe();\n }\n if (this._valueChangesSubs) {\n this._valueChangesSubs.unsubscribe();\n }\n }\n\n /**\n * Method that gets executed every time there is a scroll event\n * Calls the scroll observable\n */\n handleScroll(event: Event): void {\n let element: HTMLElement = (<HTMLElement>event.target);\n if (element) {\n let horizontalScroll: number = element.scrollLeft;\n if (this._scrollHorizontalOffset !== horizontalScroll) {\n this._onHorizontalScroll.next(horizontalScroll);\n }\n let verticalScroll: number = element.scrollTop;\n if (this._scrollVerticalOffset !== verticalScroll) {\n this._onVerticalScroll.next(verticalScroll);\n }\n }\n }\n\n /**\n * Returns the width needed for the columns via index\n */\n getColumnWidth(index: number): number {\n if (this._widths[index]) {\n return this._widths[index].value;\n }\n return undefined;\n }\n\n getCellValue(column: ITdDataTableColumn, value: any): string {\n if (column.nested === undefined || column.nested) {\n return this._getNestedValue(column.name, value);\n }\n return value[column.name];\n }\n\n /**\n * Getter method for template references\n */\n getTemplateRef(name: string): TemplateRef<any> {\n return this._templateMap.get(name);\n }\n\n /**\n * Clears model (ngModel) of component by removing all values in array.\n */\n clearModel(): void {\n this.value.splice(0, this.value.length);\n }\n\n /**\n * Refreshes data table and rerenders [data] and [columns]\n */\n refresh(): void {\n this._calculateVirtualRows();\n this._calculateWidths();\n this._calculateCheckboxState();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Selects or clears all rows depending on 'checked' value.\n */\n selectAll(checked: boolean): void {\n let toggledRows: any[] = [];\n if (checked) {\n this._data.forEach((row: any) => {\n // skiping already selected rows\n if (!this.isRowSelected(row)) {\n this.value.push(row);\n // checking which ones are being toggled\n toggledRows.push(row);\n }\n });\n this._allSelected = true;\n this._indeterminate = true;\n } else {\n this._data.forEach((row: any) => {\n // checking which ones are being toggled\n if (this.isRowSelected(row)) {\n toggledRows.push(row);\n let modelRow: any = this.value.filter((val: any) => {\n return this.compareWith(row, val);\n })[0];\n let index: number = this.value.indexOf(modelRow);\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n });\n this._allSelected = false;\n this._indeterminate = false;\n }\n this.onSelectAll.emit({rows: toggledRows, selected: checked});\n this.onChange(this.value);\n }\n\n /**\n * Checks if row is selected\n */\n isRowSelected(row: any): boolean {\n // compare items by [compareWith] function\n return this.value ? this.value.filter((val: any) => {\n return this.compareWith(row, val);\n }).length > 0 : false;\n }\n\n /**\n * Selects or clears a row depending on 'checked' value if the row 'isSelectable'\n * handles cntrl clicks and shift clicks for multi-select\n */\n select(row: any, event: Event, currentSelected: number): void {\n if (this.selectable) {\n this.blockEvent(event);\n // Check to see if Shift key is selected and need to select everything in between\n let mouseEvent: MouseEvent = event as MouseEvent;\n if (this.multiple && mouseEvent && mouseEvent.shiftKey && this._lastSelectedIndex > -1) {\n let firstIndex: number = currentSelected;\n let lastIndex: number = this._lastSelectedIndex;\n if (currentSelected > this._lastSelectedIndex) {\n firstIndex = this._lastSelectedIndex;\n lastIndex = currentSelected;\n }\n // if clicking a checkbox behind the initial check, then toggle all selections expect the initial checkbox\n // else the checkboxes clicked are all after the initial one\n if ((this._firstSelectedIndex >= currentSelected && this._lastSelectedIndex > this._firstSelectedIndex) ||\n (this._firstSelectedIndex <= currentSelected && this._lastSelectedIndex < this._firstSelectedIndex)) {\n for (let i: number = firstIndex; i <= lastIndex; i++) {\n if (this._firstSelectedIndex !== i) {\n this._doSelection(this._data[i], i);\n }\n }\n } else if ((this._firstSelectedIndex > currentSelected) || (this._firstSelectedIndex < currentSelected)) {\n // change indexes depending on where the next checkbox is selected (before or after)\n if (this._firstSelectedIndex > currentSelected) {\n lastIndex--;\n } else if (this._firstSelectedIndex < currentSelected) {\n firstIndex++;\n }\n for (let i: number = firstIndex; i <= lastIndex; i++) {\n let rowSelected: boolean = this.isRowSelected(this._data[i]);\n // if row is selected and first checkbox was selected\n // or if row was unselected and first checkbox was unselected\n // we ignore the toggle\n if ((this._firstCheckboxValue && !rowSelected) ||\n (!this._firstCheckboxValue && rowSelected)) {\n this._doSelection(this._data[i], i);\n } else if (this._shiftPreviouslyPressed) {\n // else if the checkbox selected was in the middle of the last selection and the first selection\n // then we undo the selections\n if ((currentSelected >= this._firstSelectedIndex && currentSelected <= this._lastSelectedIndex) ||\n (currentSelected <= this._firstSelectedIndex && currentSelected >= this._lastSelectedIndex)) {\n this._doSelection(this._data[i], i);\n }\n }\n }\n }\n this._shiftPreviouslyPressed = true;\n // if shift wasnt pressed, then we take the element checked as the first row\n // incase the next click uses shift\n } else if (mouseEvent && !mouseEvent.shiftKey) {\n this._firstCheckboxValue = this._doSelection(row, currentSelected);\n this._shiftPreviouslyPressed = false;\n this._firstSelectedIndex = currentSelected;\n }\n this._lastSelectedIndex = currentSelected;\n }\n }\n\n /**\n * Overrides the onselectstart method of the document so other text on the page\n * doesn't get selected when doing shift selections.\n */\n disableTextSelection(): void {\n if (this._document) {\n this._document.onselectstart = function(): boolean {\n return false;\n };\n }\n }\n\n /**\n * Resets the original onselectstart method.\n */\n enableTextSelection(): void {\n if (this._document) {\n this._document.onselectstart = undefined;\n }\n }\n\n /**\n * emits the onRowClickEvent when a row is clicked\n * if clickable is true and selectable is false then select the row\n */\n handleRowClick(row: any, index: number, event: Event): void {\n if (this.clickable) {\n // ignoring linting rules here because attribute it actually null or not there\n // can't check for undefined\n const srcElement: any = event.srcElement || event.currentTarget;\n let element: HTMLElement = event.target as HTMLElement;\n /* tslint:disable-next-line */\n if (srcElement.getAttribute('stopRowClick') === null && element.tagName.toLowerCase() !== 'mat-pseudo-checkbox') {\n this.onRowClick.emit({\n row: row,\n index: index,\n });\n }\n }\n }\n\n /**\n * Method handle for sort click event in column headers.\n */\n handleSort(column: ITdDataTableColumn): void {\n if (this._sortBy === column) {\n this._sortOrder = this._sortOrder === TdDataTableSortingOrder.Ascending ?\n TdDataTableSortingOrder.Descending : TdDataTableSortingOrder.Ascending;\n } else {\n this._sortBy = column;\n this._sortOrder = TdDataTableSortingOrder.Ascending;\n }\n this.onSortChange.next({ name: this._sortBy.name, order: this._sortOrder });\n }\n\n /**\n * Handle all keyup events when focusing a data table row\n */\n _rowKeyup(event: KeyboardEvent, row: any, index: number): void {\n switch (event.keyCode) {\n case ENTER:\n case SPACE:\n /** if user presses enter or space, the row should be selected */\n if (this.selectable) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n case UP_ARROW:\n /**\n * if users presses the up arrow, we focus the prev row\n * unless its the first row\n */\n if (index > 0) {\n this._rows.toArray()[index - 1].focus();\n }\n this.blockEvent(event);\n if (this.selectable && this.multiple && event.shiftKey && this.fromRow + index >= 0) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n case DOWN_ARROW:\n /**\n * if users presses the down arrow, we focus the next row\n * unless its the last row\n */\n if (index < (this._rows.toArray().length - 1)) {\n this._rows.toArray()[index + 1].focus();\n }\n this.blockEvent(event);\n if (this.selectable && this.multiple && event.shiftKey && this.fromRow + index < this._data.length) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n default:\n // default\n }\n }\n\n /**\n * Sets column index of the dragged column and initial clientX of column\n */\n _handleStartColumnDrag(index: number, event: MouseEvent): void {\n this._columnClientX = event.clientX;\n this._resizingColumn = index;\n }\n\n /**\n * Calculates new width depending on new clientX of dragger column\n */\n _handleColumnDrag(event: MouseEvent | DragEvent): void {\n // check if there was been a separator clicked for resize\n if (this._resizingColumn !== undefined && event.clientX > 0) {\n let xPosition: number = event.clientX;\n // checks if the separator is being moved to try and resize the column, else dont do anything\n if (xPosition > 0 && this._columnClientX > 0 && (xPosition - this._columnClientX) !== 0) {\n // calculate the new width depending if making the column bigger or smaller\n let proposedManualWidth: number = this._widths[this._resizingColumn].value + (xPosition - this._columnClientX);\n // if the proposed new width is less than the projected min width of the column, use projected min width\n if (proposedManualWidth < this._colElements.toArray()[this._resizingColumn].projectedWidth) {\n proposedManualWidth = this._colElements.toArray()[this._resizingColumn].projectedWidth;\n }\n this.columns[this._resizingColumn].width = proposedManualWidth;\n // update new x position for the resized column\n this._onColumnResize.next(xPosition);\n }\n }\n }\n\n /**\n * Ends dragged flags\n */\n _handleEndColumnDrag(): void {\n this._columnClientX = undefined;\n this._resizingColumn = undefined;\n }\n\n /**\n * Method to prevent the default events\n */\n blockEvent(event: Event): void {\n event.preventDefault();\n }\n\n private _getNestedValue(name: string, value: any): string {\n if (!(value instanceof Object) || !name) {\n return value;\n }\n if (name.indexOf('.') > -1) {\n let splitName: string[] = name.split(/\\.(.+)/, 2);\n return this._getNestedValue(splitName[1], value[splitName[0]]);\n } else {\n return value[name];\n }\n }\n\n /**\n * Does the actual Row Selection\n */\n private _doSelection(row: any, rowIndex: number): boolean {\n let wasSelected: boolean = this.isRowSelected(row);\n if (!wasSelected) {\n if (!this._multiple) {\n this.clearModel();\n }\n this.value.push(row);\n } else {\n // compare items by [compareWith] function\n row = this.value.filter((val: any) => {\n return this.compareWith(row, val);\n })[0];\n let index: number = this.value.indexOf(row);\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n this._calculateCheckboxState();\n this.onRowSelect.emit({row: row, index: rowIndex, selected: !wasSelected});\n this.onChange(this.value);\n return !wasSelected;\n }\n\n /**\n * Calculate all the state of all checkboxes\n */\n private _calculateCheckboxState(): void {\n if (this._data) {\n this._allSelected = typeof this._data.find((d: any) => !this.isRowSelected(d)) === 'undefined';\n this._indeterminate = false;\n for (let row of this._data) {\n if (!this.isRowSelected(row)) {\n continue;\n }\n this._indeterminate = true;\n break;\n }\n }\n }\n\n /**\n * Calculates the widths for columns and cells depending on content\n */\n private _calculateWidths(): void {\n if (this._colElements && this._colElements.length) {\n this._widths = [];\n this._colElements.forEach((col: TdDataTableColumnComponent, index: number) => {\n this._adjustColumnWidth(index, this._calculateWidth());\n });\n this._adjustColumnWidhts();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Adjusts columns after calculation to see if they need to be recalculated.\n */\n private _adjustColumnWidhts(): void {\n let fixedTotalWidth: number = 0;\n // get the number of total columns that have flexible widths (not fixed or hidden)\n let flexibleWidths: number = this._widths.filter((width: IInternalColumnWidth, index: number) => {\n if (this.columns[index].hidden) {\n return false;\n }\n if (width.limit || width.max || width.min) {\n fixedTotalWidth += width.value;\n }\n return !width.limit && !width.max && !width.min;\n }).length;\n // calculate how much pixes are left that could be spread across\n // the flexible columns\n let recalculateHostWidth: number = 0;\n if (fixedTotalWidth < this.hostWidth) {\n recalculateHostWidth = this.hostWidth - fixedTotalWidth;\n }\n // if we have flexible columns and pixels to spare on them\n // we try and spread the pixels across them\n if (flexibleWidths && recalculateHostWidth) {\n let newValue: number = Math.floor(recalculateHostWidth / flexibleWidths);\n let adjustedNumber: number = 0;\n // adjust the column widths with the spread pixels\n this._widths.forEach((colWidth: IInternalColumnWidth) => {\n if (this._widths[colWidth.index].max && this._widths[colWidth.index].value > newValue ||\n this._widths[colWidth.index].min && this._widths[colWidth.index].value < newValue ||\n !this._widths[colWidth.index].limit) {\n this._adjustColumnWidth(colWidth.index, newValue);\n adjustedNumber++;\n }\n });\n // if there are still columns that need to be recalculated, we start over\n let newFlexibleWidths: number = this._widths.filter((width: IInternalColumnWidth) => {\n return !width.limit && !width.max;\n }).length;\n if (newFlexibleWidths !== adjustedNumber && newFlexibleWidths !== flexibleWidths) {\n this._adjustColumnWidhts();\n }\n }\n }\n\n /**\n * Adjusts a single column to see if it can be recalculated\n */\n private _adjustColumnWidth(index: number, value: number): void {\n this._widths[index] = {\n value: value,\n index: index,\n limit: false,\n min: false,\n max: false,\n };\n // flag to see if we need to skip the min width projection\n // depending if a width or min width has been provided\n let skipMinWidthProjection: boolean = false;\n if (this.columns[index]) {\n // if the provided width has min/max, then we check to see if we need to set it\n if (typeof this.columns[index].width === 'object') {\n let widthOpts: ITdDataTableColumnWidth = <ITdDataTableColumnWidth>this.columns[index].width;\n // if the column width is less than the configured min, we override it\n skipMinWidthProjection = (widthOpts && !!widthOpts.min);\n if (widthOpts && widthOpts.min >= this._widths[index].value) {\n this._widths[index].value = widthOpts.min;\n this._widths[index].min = true;\n // if the column width is more than the configured max, we override it\n } else if (widthOpts && widthOpts.max <= this._widths[index].value) {\n this._widths[index].value = widthOpts.max;\n this._widths[index].max = true;\n }\n // if it has a fixed width, then we just set it\n } else if (typeof this.columns[index].width === 'number') {\n this._widths[index].value = <number>this.columns[index].width;\n skipMinWidthProjection = this._widths[index].limit = true;\n }\n }\n // if there wasn't any width or min width provided, we set a min to what the column width min should be\n if (!skipMinWidthProjection &&\n this._widths[index].value < this._colElements.toArray()[index].projectedWidth) {\n this._widths[index].value = this._colElements.toArray()[index].projectedWidth;\n this._widths[index].min = true;\n this._widths[index].limit = false;\n }\n }\n\n /**\n * Generic method to calculate column width\n */\n private _calculateWidth(): number {\n let renderedColumns: ITdDataTableColumn[] = this.columns.filter((col: ITdDataTableColumn) => !col.hidden);\n return Math.floor(this.hostWidth / renderedColumns.length);\n }\n\n /**\n * Method to calculate the rows to be rendered in the viewport\n */\n private _calculateVirtualRows(): void {\n let scrolledRows: number = 0;\n if (this._data) {\n this._totalHeight = 0;\n let rowHeightSum: number = 0;\n // loop through all rows to see if we have their height cached\n // and sum them all to calculate the total height\n this._data.forEach((d: any, i: number) => {\n // iterate through all rows at first and assume all\n // rows are the same height as the first one\n if (!this._rowHeightCache[i]) {\n this._rowHeightCache[i] = this._rowHeightCache[0] || TD_VIRTUAL_DEFAULT_ROW_HEIGHT;\n }\n rowHeightSum += this._rowHeightCache[i];\n // check how many rows have been scrolled\n if (this._scrollVerticalOffset - rowHeightSum > 0) {\n scrolledRows++;\n }\n });\n this._totalHeight = rowHeightSum;\n // set the initial row to be rendered taking into account the row offset\n let fromRow: number = scrolledRows - TD_VIRTUAL_OFFSET;\n this._fromRow = fromRow > 0 ? fromRow : 0;\n\n let hostHeight: number = this._hostHeight;\n let index: number = 0;\n // calculate how many rows can fit in the viewport\n while (hostHeight > 0) {\n hostHeight -= this._rowHeightCache[this.fromRow + index];\n index++;\n }\n // set the last row to be rendered taking into account the row offset\n let range: number = (index - 1) + (TD_VIRTUAL_OFFSET * 2);\n let toRow: number = range + this.fromRow;\n // if last row is greater than the total length, then we use the total length\n if (isFinite(toRow) && toRow > this._data.length) {\n toRow = this._data.length;\n } else if (!isFinite(toRow)) {\n toRow = TD_VIRTUAL_OFFSET;\n }\n this._toRow = toRow;\n } else {\n this._totalHeight = 0;\n this._fromRow = 0;\n this._toRow = 0;\n }\n\n let offset: number = 0;\n // calculate the proper offset depending on how many rows have been scrolled\n if (scrolledRows > TD_VIRTUAL_OFFSET) {\n for (let index: number = 0; index < this.fromRow; index++) {\n offset += this._rowHeightCache[index];\n }\n }\n\n this._offsetTransform = this._domSanitizer.bypassSecurityTrustStyle('translateY(' + (offset - this.totalHeight) + 'px)');\n if (this._data) {\n this._virtualData = this.data.slice(this.fromRow, this.toRow);\n }\n // mark for check at the end of the queue so we are sure\n // that the changes will be marked\n Promise.resolve().then(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","import { Component, Input, Output, EventEmitter, Renderer2, ElementRef, HostBinding, HostListener, ViewChild } from '@angular/core';\n\nimport { TdDataTableSortingOrder } from '../data-table.component';\n\nexport interface ITdDataTableSortChangeEvent {\n order: TdDataTableSortingOrder;\n name: string;\n}\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'th[td-data-table-column]',\n styleUrls: ['./data-table-column.component.scss' ],\n templateUrl: './data-table-column.component.html',\n})\nexport class TdDataTableColumnComponent {\n\n private _sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending;\n\n @ViewChild('columnContent', {read: ElementRef}) _columnContent: ElementRef;\n\n get projectedWidth(): number {\n if (this._columnContent && this._columnContent.nativeElement) {\n return (<HTMLElement>this._columnContent.nativeElement).getBoundingClientRect().width;\n }\n return 100;\n }\n\n /**\n * name?: string\n * Sets unique column [name] for [sortable] events.\n */\n @Input('name') name: string = '';\n\n /**\n * sortable?: boolean\n * Enables sorting events, sort icons and active column states.\n * Defaults to 'false'\n */\n @Input('sortable') sortable: boolean = false;\n\n /**\n * active?: boolean\n * Sets column to active state when 'true'.\n * Defaults to 'false'\n */\n @Input('active') active: boolean = false;\n\n /**\n * numeric?: boolean\n * Makes column follow the numeric data-table specs and sort icon.\n * Defaults to 'false'\n */\n @Input('numeric') numeric: boolean = false;\n\n /**\n * sortOrder?: ['ASC' | 'DESC'] or TdDataTableSortingOrder\n * Sets the sort order of column.\n * Defaults to 'ASC' or TdDataTableSortingOrder.Ascending\n */\n @Input('sortOrder')\n set sortOrder(order: 'ASC' | 'DESC') {\n let sortOrder: string = order ? order.toUpperCase() : 'ASC';\n if (sortOrder !== 'DESC' && sortOrder !== 'ASC') {\n throw new Error('[sortOrder] must be empty, ASC or DESC');\n }\n\n this._sortOrder = sortOrder === 'ASC' ?\n TdDataTableSortingOrder.Ascending : TdDataTableSortingOrder.Descending;\n }\n\n /**\n * sortChange?: function\n * Event emitted when the column headers are clicked. [sortable] needs to be enabled.\n * Emits an [ITdDataTableSortChangeEvent] implemented object.\n */\n @Output('sortChange') onSortChange: EventEmitter<ITdDataTableSortChangeEvent> =\n new EventEmitter<ITdDataTableSortChangeEvent>();\n\n @HostBinding('class.mat-clickable')\n get bindClickable(): boolean {\n return this.sortable;\n }\n\n @HostBinding('class.mat-sortable')\n get bingSortable(): boolean {\n return this.sortable;\n }\n\n @HostBinding('class.mat-active')\n get bindActive(): boolean {\n return this.active;\n }\n\n @HostBinding('class.mat-numeric')\n get bindNumeric(): boolean {\n return this.numeric;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-column');\n }\n\n /**\n * Listening to click event on host to throw a sort event\n */\n @HostListener('click')\n handleClick(): void {\n if (this.sortable) {\n this.onSortChange.emit({name: this.name, order: this._sortOrder});\n }\n }\n\n isAscending(): boolean {\n return this._sortOrder === TdDataTableSortingOrder.Ascending;\n }\n\n isDescending(): boolean {\n return this._sortOrder === TdDataTableSortingOrder.Descending;\n }\n\n}\n","import { Component, Input, Renderer2, ElementRef, HostBinding } from '@angular/core';\n\nexport type TdDataTableCellAlign = 'start' | 'center' | 'end';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'td[td-data-table-cell]',\n styleUrls: ['./data-table-cell.component.scss' ],\n templateUrl: './data-table-cell.component.html',\n})\nexport class TdDataTableCellComponent {\n\n private _align: TdDataTableCellAlign;\n\n /**\n * numeric?: boolean\n * Makes cell follow the numeric data-table specs.\n * Defaults to 'false'\n */\n @Input('numeric') numeric: boolean = false;\n\n /**\n * align?: 'start' | 'center' | 'end'\n * Makes cell content align on demand\n * Defaults to 'left', overrides numeric\n */\n @Input() \n set align(align: TdDataTableCellAlign) {\n this._align = align;\n }\n get align(): TdDataTableCellAlign {\n return this._align; \n }\n\n @HostBinding('class.mat-numeric')\n get bindNumeric(): boolean {\n return this.numeric;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-cell');\n }\n\n}\n","import { Component, Renderer2, ElementRef } from '@angular/core';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'table[td-data-table]',\n styleUrls: ['./data-table-table.component.scss' ],\n templateUrl: './data-table-table.component.html',\n})\nexport class TdDataTableTableComponent {\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table');\n }\n\n}\n","import { Injectable, Provider, SkipSelf, Optional } from '@angular/core';\n\nimport { TdDataTableSortingOrder, ITdDataTableColumn } from '../data-table.component';\n\n@Injectable()\nexport class TdDataTableService {\n\n /**\n * params:\n * - data: any[]\n * - searchTerm: string\n * - ignoreCase: boolean = false\n * - excludedColumns: string[] = []\n *\n * Searches [data] parameter for [searchTerm] matches and returns a new array with them.\n */\n filterData(data: any[], searchTerm: string, ignoreCase: boolean = false, excludedColumns?: string[]): any[] {\n let filter: string = searchTerm ? (ignoreCase ? searchTerm.toLowerCase() : searchTerm) : '';\n if (filter) {\n data = data.filter((item: any) => {\n const res: any = Object.keys(item).find((key: string) => {\n if (!excludedColumns || excludedColumns.indexOf(key) === -1) {\n const preItemValue: string = ('' + item[key]);\n const itemValue: string = ignoreCase ? preItemValue.toLowerCase() : preItemValue;\n return itemValue.indexOf(filter) > -1;\n }\n });\n return !(typeof res === 'undefined');\n });\n }\n return data;\n }\n\n /**\n * params:\n * - data: any[]\n * - sortBy: string\n * - sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending\n *\n * Sorts [data] parameter by [sortBy] and [sortOrder] and returns the sorted data.\n */\n sortData(data: any[], sortBy: string, sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending): any[] {\n if (sortBy) {\n data = Array.from(data); // Change the array reference to trigger OnPush and not mutate original array\n data.sort((a: any, b: any) => {\n let compA: any = a[sortBy];\n let compB: any = b[sortBy];\n let direction: number = 0;\n if (!Number.isNaN(Number.parseFloat(compA)) && !Number.isNaN(Number.parseFloat(compB))) {\n direction = Number.parseFloat(compA) - Number.parseFloat(compB);\n } else {\n if (compA < compB) {\n direction = -1;\n } else if (compA > compB) {\n direction = 1;\n }\n }\n return direction * (sortOrder === TdDataTableSortingOrder.Descending ? -1 : 1);\n });\n }\n return data;\n }\n\n /**\n * params:\n * - data: any[]\n * - fromRow: number\n * - toRow: : number\n *\n * Returns a section of the [data] parameter starting from [fromRow] and ending in [toRow].\n */\n pageData(data: any[], fromRow: number, toRow: number): any[] {\n if (fromRow >= 1) {\n data = data.slice(fromRow - 1, toRow);\n }\n return data;\n }\n}\n\nexport function DATA_TABLE_PROVIDER_FACTORY(\n parent: TdDataTableService): TdDataTableService {\n return parent || new TdDataTableService();\n}\n\nexport const DATA_TABLE_PROVIDER: Provider = {\n // If there is already a service available, use that. Otherwise, provide a new one.\n provide: TdDataTableService,\n deps: [[new Optional(), new SkipSelf(), TdDataTableService]],\n useFactory: DATA_TABLE_PROVIDER_FACTORY,\n};\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatPseudoCheckboxModule } from '@angular/material/core';\n\nimport { TdDataTableComponent } from './data-table.component';\nimport { TdDataTableColumnComponent } from './data-table-column/data-table-column.component';\nimport { TdDataTableCellComponent } from './data-table-cell/data-table-cell.component';\nimport { TdDataTableRowComponent, TdDataTableColumnRowComponent } from './data-table-row/data-table-row.component';\nimport { TdDataTableTableComponent } from './data-table-table/data-table-table.component';\nimport { TdDataTableTemplateDirective } from './directives/data-table-template.directive';\n\nimport { DATA_TABLE_PROVIDER } from './services/data-table.service';\n\nconst TD_DATA_TABLE: Type<any>[] = [\n TdDataTableComponent,\n TdDataTableTemplateDirective,\n\n TdDataTableColumnComponent,\n TdDataTableCellComponent,\n TdDataTableRowComponent,\n TdDataTableColumnRowComponent,\n TdDataTableTableComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n MatCheckboxModule,\n MatTooltipModule,\n MatIconModule,\n MatPseudoCheckboxModule,\n ],\n declarations: [\n TD_DATA_TABLE,\n ],\n exports: [\n TD_DATA_TABLE,\n ],\n providers: [\n DATA_TABLE_PROVIDER,\n ],\n})\nexport class CovalentDataTableModule {\n\n}\n"]}
|
1
|
+
{"version":3,"sources":["node_modules/tslib/tslib.es6.js","ng://@covalent/core/data-table/data-table-row/data-table-row.component.ts","ng://@covalent/core/data-table/directives/data-table-template.directive.ts","ng://@covalent/core/data-table/data-table.component.ts","ng://@covalent/core/data-table/data-table-column/data-table-column.component.ts","ng://@covalent/core/data-table/data-table-cell/data-table-cell.component.ts","ng://@covalent/core/data-table/data-table-table/data-table-table.component.ts","ng://@covalent/core/data-table/services/data-table.service.ts","ng://@covalent/core/data-table/data-table.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","TdDataTableColumnRowComponent","Component","args","selector","template","ElementRef","Renderer2","_elementRef","_renderer","addClass","nativeElement","defineProperty","TdDataTableRowComponent","_selected","selected","removeClass","height","getBoundingClientRect","clickListener","focus","Input","HostListener","tslib_1.__extends","TemplatePortalDirective","Directive","TemplateRef","ViewContainerRef","TdDataTableTemplateDirective","templateRef","viewContainerRef","_super","call","TdDataTableBase","_changeDetectorRef","Ascending","Descending","_TdDataTableMixinBase","mixinControlValueAccessor","TdDataTableComponent","_resizingColumn","selectable","_hostWidth","_offsetTransform","_totalHeight","_fromRow","_toRow","_scrollHorizontalOffset","_allSelected","_indeterminate","_data","data","_this","_rowHeightCache","Promise","resolve","then","refresh","_scrollableDiv","scrollTop","_virtualData","_columns","hasData","row","keys","forEach","k","find","c","name","push","label","cols","_resizableColumns","resizableColumns","coerceBooleanProperty","_selectable","_clickable","clickable","_multiple","multiple","_sortable","sortable","columnName","column","columns","Error","_sortBy","order","sortOrder","toUpperCase","_sortOrder","TdDataTableSortingOrder","length","ngOnInit","_resizeSubs","_onResize","asObservable","subscribe","_rows","toArray","index","fromRow","_calculateWidths","_calculateVirtualRows","_columnResizeSubs","_onColumnResize","pipe","debounceTime","clientX","_columnClientX","markForCheck","_horizontalScrollSubs","_onHorizontalScroll","horizontalScroll","_verticalScrollSubs","_onVerticalScroll","verticalScroll","_scrollVerticalOffset","_valueChangesSubs","valueChanges","value","ngAfterContentInit","i","_templates","_templateMap","set","tdDataTableTemplate","ngAfterContentChecked","next","newHostWidth_1","width","setTimeout","newHostHeight","_hostHeight","ngAfterViewInit","_rowsChangedSubs","changes","ngOnDestroy","unsubscribe","handleScroll","event","element","scrollLeft","getColumnWidth","_widths","undefined","getCellValue","nested","_getNestedValue","getTemplateRef","get","clearModel","splice","_calculateCheckboxState","selectAll","checked","toggledRows","isRowSelected","modelRow","filter","val","compareWith","indexOf","onSelectAll","emit","rows","onChange","select","currentSelected","blockEvent","mouseEvent","shiftKey","_lastSelectedIndex","firstIndex","lastIndex","_firstSelectedIndex","_doSelection","rowSelected","_firstCheckboxValue","_shiftPreviouslyPressed","disableTextSelection","_document","onselectstart","enableTextSelection","handleRowClick","srcElement","currentTarget","getAttribute","tagName","toLowerCase","onRowClick","handleSort","onSortChange","_rowKeyup","keyCode","ENTER","SPACE","UP_ARROW","DOWN_ARROW","_handleStartColumnDrag","_handleColumnDrag","xPosition","proposedManualWidth","_colElements","projectedWidth","_handleEndColumnDrag","preventDefault","splitName","split","rowIndex","wasSelected","onRowSelect","_b","__values","o","m","Symbol","iterator","done","tslib_1.__values","_c","col","_adjustColumnWidth","_calculateWidth","_adjustColumnWidhts","fixedTotalWidth","flexibleWidths","hidden","limit","max","min","recalculateHostWidth","hostWidth","newValue_1","Math","floor","adjustedNumber_1","colWidth","newFlexibleWidths","skipMinWidthProjection","widthOpts","renderedColumns","scrolledRows","rowHeightSum_1","hostHeight","toRow","isFinite","offset","_domSanitizer","bypassSecurityTrustStyle","totalHeight","slice","providers","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","inputs","changeDetection","ChangeDetectionStrategy","OnPush","Optional","type","Inject","DOCUMENT","DomSanitizer","ChangeDetectorRef","ContentChildren","ViewChild","ViewChildren","Output","Subject","Map","EventEmitter","model","TdDataTableColumnComponent","_columnContent","active","numeric","handleClick","isAscending","isDescending","read","HostBinding","TdDataTableCellComponent","_align","align","TdDataTableTableComponent","TdDataTableService","filterData","searchTerm","ignoreCase","excludedColumns","item","key","preItemValue","sortData","sortBy","from","sort","a","compA","compB","direction","Number","isNaN","parseFloat","pageData","Injectable","DATA_TABLE_PROVIDER_FACTORY","parent","DATA_TABLE_PROVIDER","deps","SkipSelf","useFactory","TD_DATA_TABLE","CovalentDataTableModule","NgModule","imports","CommonModule","MatCheckboxModule","MatTooltipModule","MatIconModule","MatPseudoCheckboxModule","declarations","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Component, Input, Output, Renderer2, ElementRef, ContentChildren, QueryList, HostListener } from '@angular/core';\n\nimport { TdDataTableCellComponent } from '../data-table-cell/data-table-cell.component';\nimport { TdDataTableColumnComponent } from '../data-table-column/data-table-column.component';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'tr[td-data-table-column-row]',\n styleUrls: ['./data-table-row.component.scss' ],\n templateUrl: './data-table-row.component.html',\n})\nexport class TdDataTableColumnRowComponent {\n\n constructor(protected _elementRef: ElementRef, protected _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-column-row');\n }\n\n}\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'tr[td-data-table-row]',\n styleUrls: ['./data-table-row.component.scss' ],\n templateUrl: './data-table-row.component.html',\n})\nexport class TdDataTableRowComponent {\n\n private _selected: boolean = false;\n\n @Input('selected')\n set selected(selected: boolean) {\n if (selected) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-selected');\n } else {\n this._renderer.removeClass(this._elementRef.nativeElement, 'td-selected');\n }\n this._selected = selected;\n }\n get selected(): boolean {\n return this._selected;\n }\n\n get height(): number {\n let height: number = 48;\n if (this._elementRef.nativeElement) {\n height = (<HTMLElement>this._elementRef.nativeElement).getBoundingClientRect().height;\n }\n return height;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-row');\n }\n\n /**\n * Listening to click event to explicitly focus the row element.\n */\n @HostListener('click')\n clickListener(): void {\n this.focus();\n }\n\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n}\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\n\n@Directive({selector: '[tdDataTableTemplate]ng-template'})\nexport class TdDataTableTemplateDirective extends TemplatePortalDirective {\n\n @Input() tdDataTableTemplate: string;\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n","import { Component, Input, Output, EventEmitter, forwardRef, ChangeDetectionStrategy,\n ChangeDetectorRef, ViewChild, OnDestroy, AfterViewInit,\n ContentChildren, TemplateRef, AfterContentInit, QueryList, Inject,\n Optional, ViewChildren, ElementRef, OnInit, AfterContentChecked } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ENTER, SPACE, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';\n\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { TdDataTableRowComponent } from './data-table-row/data-table-row.component';\nimport { ITdDataTableSortChangeEvent, TdDataTableColumnComponent } from './data-table-column/data-table-column.component';\nimport { TdDataTableTemplateDirective } from './directives/data-table-template.directive';\n\nimport { IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\nexport enum TdDataTableSortingOrder {\n Ascending = 'ASC',\n Descending = 'DESC',\n}\n\nexport interface ITdDataTableColumnWidth {\n min?: number;\n max?: number;\n}\n\nexport interface ITdDataTableColumn {\n name: string;\n label: string;\n tooltip?: string;\n numeric?: boolean;\n format?: (value: any) => any;\n nested?: boolean;\n sortable?: boolean;\n hidden?: boolean;\n filter?: boolean;\n width?: ITdDataTableColumnWidth | number;\n}\n\nexport interface ITdDataTableSelectEvent {\n row: any;\n selected: boolean;\n index: number;\n}\n\nexport interface ITdDataTableSelectAllEvent {\n rows: any[];\n selected: boolean;\n}\n\nexport interface ITdDataTableRowClickEvent {\n row: any;\n index: number;\n}\n\nexport interface IInternalColumnWidth {\n value: number;\n limit: boolean;\n index: number;\n min?: boolean;\n max?: boolean;\n}\n\n/**\n * Constant to set the rows offset before and after the viewport\n */\nconst TD_VIRTUAL_OFFSET: number = 2;\n\n/**\n * Constant to set default row height if none is provided\n */\nconst TD_VIRTUAL_DEFAULT_ROW_HEIGHT: number = 48;\n\nexport class TdDataTableBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdDataTableMixinBase = mixinControlValueAccessor(TdDataTableBase, []);\n\n@Component({\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdDataTableComponent),\n multi: true,\n }],\n selector: 'td-data-table',\n styleUrls: ['./data-table.component.scss' ],\n templateUrl: './data-table.component.html',\n inputs: ['value'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdDataTableComponent extends _TdDataTableMixinBase implements IControlValueAccessor, OnInit,\n AfterContentInit, AfterContentChecked, AfterViewInit, OnDestroy {\n\n /** responsive width calculations */\n private _resizeSubs: Subscription;\n private _rowsChangedSubs: Subscription;\n private _hostWidth: number = 0;\n\n /** manually resizable columns */\n private _resizableColumns: boolean = false;\n private _columnClientX: number = 0;\n private _columnResizeSubs: Subscription;\n private _resizingColumn: number;\n private _onColumnResize: Subject<number> = new Subject<number>();\n\n get resizingColumn(): number {\n return this._resizingColumn;\n }\n\n get hostWidth(): number {\n // if the checkboxes are rendered, we need to remove their width\n // from the total width to calculate properly\n if (this.selectable) {\n return this._hostWidth - 42;\n }\n return this._hostWidth;\n }\n\n private _widths: IInternalColumnWidth[] = [];\n private _onResize: Subject<void> = new Subject<void>();\n\n /** column header reposition and viewpoort */\n private _verticalScrollSubs: Subscription;\n private _horizontalScrollSubs: Subscription;\n private _scrollHorizontalOffset: number = 0;\n\n private _onHorizontalScroll: Subject<number> = new Subject<number>();\n private _onVerticalScroll: Subject<number> = new Subject<number>();\n\n // Array of cached row heights to allow dynamic row heights\n private _rowHeightCache: number[] = [];\n // Total pseudo height of all the elements\n private _totalHeight: number = 0;\n // Total host height for the viewport\n private _hostHeight: number = 0;\n // Scrolled vertical pixels\n private _scrollVerticalOffset: number = 0;\n // Style to move the content a certain offset depending on scrolled offset\n private _offsetTransform: SafeStyle;\n\n // Variables that set from and to which rows will be rendered\n private _fromRow: number = 0;\n private _toRow: number = 0;\n\n /**\n * Returns the offset style with a proper calculation on how much it should move\n * over the y axis of the total height\n */\n get offsetTransform(): SafeStyle {\n return this._offsetTransform;\n }\n\n /**\n * Returns the assumed total height of the rows\n */\n get totalHeight(): number {\n return this._totalHeight;\n }\n\n /**\n * Returns the initial row to render in the viewport\n */\n get fromRow(): number {\n return this._fromRow;\n }\n\n /**\n * Returns the last row to render in the viewport\n */\n get toRow(): number {\n return this._toRow;\n }\n\n private _valueChangesSubs: Subscription;\n /** internal attributes */\n private _data: any[];\n // data virtually iterated by component\n private _virtualData: any[];\n private _columns: ITdDataTableColumn[];\n private _selectable: boolean = false;\n private _clickable: boolean = false;\n private _multiple: boolean = true;\n private _allSelected: boolean = false;\n private _indeterminate: boolean = false;\n\n /** sorting */\n private _sortable: boolean = false;\n private _sortBy: ITdDataTableColumn;\n private _sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending;\n\n /** shift select */\n private _shiftPreviouslyPressed: boolean = false;\n private _lastSelectedIndex: number = -1;\n private _firstSelectedIndex: number = -1;\n private _firstCheckboxValue: boolean = false;\n\n /** template fetching support */\n private _templateMap: Map<string, TemplateRef<any>> = new Map<string, TemplateRef<any>>();\n @ContentChildren(TdDataTableTemplateDirective) _templates: QueryList<TdDataTableTemplateDirective>;\n\n @ViewChild('scrollableDiv') _scrollableDiv: ElementRef;\n\n @ViewChildren('columnElement') _colElements: QueryList<TdDataTableColumnComponent>;\n\n @ViewChildren(TdDataTableRowComponent) _rows: QueryList<TdDataTableRowComponent>;\n\n /**\n * Returns scroll position to reposition column headers\n */\n get columnsLeftScroll(): number {\n return this._scrollHorizontalOffset * -1;\n }\n\n /**\n * Returns true if all values are selected.\n */\n get allSelected(): boolean {\n return this._allSelected;\n }\n\n /**\n * Returns true if all values are not deselected\n * and at least one is.\n */\n get indeterminate(): boolean {\n return this._indeterminate;\n }\n\n /**\n * data?: {[key: string]: any}[]\n * Sets the data to be rendered as rows.\n */\n @Input('data')\n set data(data: any[]) {\n this._data = data;\n this._rowHeightCache = [];\n Promise.resolve().then(() => {\n this.refresh();\n // scroll back to the top if the data has changed\n this._scrollableDiv.nativeElement.scrollTop = 0;\n });\n }\n get data(): any[] {\n return this._data;\n }\n\n get virtualData(): any[] {\n return this._virtualData;\n }\n\n /**\n * columns?: ITdDataTableColumn[]\n * Sets additional column configuration. [ITdDataTableColumn.name] has to exist in [data] as key.\n * Defaults to [data] keys.\n */\n @Input('columns')\n set columns(cols: ITdDataTableColumn[]) {\n this._columns = cols;\n }\n get columns(): ITdDataTableColumn[] {\n if (this._columns) {\n return this._columns;\n }\n\n if (this.hasData) {\n this._columns = [];\n // if columns is undefined, use key in [data] rows as name and label for column headers.\n let row: any = this._data[0];\n Object.keys(row).forEach((k: string) => {\n if (!this._columns.find((c: any) => c.name === k)) {\n this._columns.push({ name: k, label: k });\n }\n });\n return this._columns;\n } else {\n return [];\n }\n }\n\n /**\n * resizableColumns?: boolean\n * Enables manual column resize.\n * Defaults to 'false'\n */\n @Input('resizableColumns')\n set resizableColumns(resizableColumns: boolean) {\n this._resizableColumns = coerceBooleanProperty(resizableColumns);\n }\n get resizableColumns(): boolean {\n return this._resizableColumns;\n }\n\n /**\n * selectable?: boolean\n * Enables row selection events, hover and selected row states.\n * Defaults to 'false'\n */\n @Input('selectable')\n set selectable(selectable: boolean) {\n this._selectable = coerceBooleanProperty(selectable);\n }\n get selectable(): boolean {\n return this._selectable;\n }\n\n /**\n * clickable?: boolean\n * Enables row click events, hover.\n * Defaults to 'false'\n */\n @Input('clickable')\n set clickable(clickable: boolean) {\n this._clickable = coerceBooleanProperty(clickable);\n }\n get clickable(): boolean {\n return this._clickable;\n }\n\n /**\n * multiple?: boolean\n * Enables multiple row selection. [selectable] needs to be enabled.\n * Defaults to 'false'\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * sortable?: boolean\n * Enables sorting events, sort icons and active column states.\n * Defaults to 'false'\n */\n @Input('sortable')\n set sortable(sortable: boolean) {\n this._sortable = coerceBooleanProperty(sortable);\n }\n get sortable(): boolean {\n return this._sortable;\n }\n\n /**\n * sortBy?: string\n * Sets the active sort column. [sortable] needs to be enabled.\n */\n @Input('sortBy')\n set sortBy(columnName: string) {\n if (!columnName) {\n return;\n }\n const column: ITdDataTableColumn = this.columns.find((c: any) => c.name === columnName);\n if (!column) {\n throw new Error('[sortBy] must be a valid column name');\n }\n\n this._sortBy = column;\n }\n get sortByColumn(): ITdDataTableColumn {\n return this._sortBy;\n }\n\n /**\n * sortOrder?: ['ASC' | 'DESC'] or TdDataTableSortingOrder\n * Sets the sort order of the [sortBy] column. [sortable] needs to be enabled.\n * Defaults to 'ASC' or TdDataTableSortingOrder.Ascending\n */\n @Input('sortOrder')\n set sortOrder(order: 'ASC' | 'DESC') {\n let sortOrder: string = order ? order.toUpperCase() : 'ASC';\n if (sortOrder !== 'DESC' && sortOrder !== 'ASC') {\n throw new Error('[sortOrder] must be empty, ASC or DESC');\n }\n\n this._sortOrder = sortOrder === 'ASC' ?\n TdDataTableSortingOrder.Ascending : TdDataTableSortingOrder.Descending;\n }\n get sortOrderEnum(): TdDataTableSortingOrder {\n return this._sortOrder;\n }\n\n get hasData(): boolean {\n return this._data && this._data.length > 0;\n }\n\n /**\n * sortChange?: function\n * Event emitted when the column headers are clicked. [sortable] needs to be enabled.\n * Emits an [ITdDataTableSortChangeEvent] implemented object.\n */\n @Output('sortChange') onSortChange: EventEmitter<ITdDataTableSortChangeEvent> =\n new EventEmitter<ITdDataTableSortChangeEvent>();\n\n /**\n * rowSelect?: function\n * Event emitted when a row is selected/deselected. [selectable] needs to be enabled.\n * Emits an [ITdDataTableSelectEvent] implemented object.\n */\n @Output('rowSelect') onRowSelect: EventEmitter<ITdDataTableSelectEvent> = new EventEmitter<ITdDataTableSelectEvent>();\n\n /**\n * rowClick?: function\n * Event emitted when a row is clicked.\n * Emits an [ITdDataTableRowClickEvent] implemented object.\n */\n @Output('rowClick') onRowClick: EventEmitter<ITdDataTableRowClickEvent> = new EventEmitter<ITdDataTableRowClickEvent>();\n\n /**\n * selectAll?: function\n * Event emitted when all rows are selected/deselected by the all checkbox. [selectable] needs to be enabled.\n * Emits an [ITdDataTableSelectAllEvent] implemented object.\n */\n @Output('selectAll') onSelectAll: EventEmitter<ITdDataTableSelectAllEvent> =\n new EventEmitter<ITdDataTableSelectAllEvent>();\n\n constructor(@Optional() @Inject(DOCUMENT) private _document: any,\n private _elementRef: ElementRef,\n private _domSanitizer: DomSanitizer,\n _changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n }\n\n /**\n * compareWith?: function(row, model): boolean\n * Allows custom comparison between row and model to see if row is selected or not\n * Default comparation is by reference\n */\n @Input('compareWith') compareWith: (row: any, model: any) => boolean = (row: any, model: any) => {\n return row === model;\n }\n\n /**\n * Initialize observable for resize and scroll events\n */\n ngOnInit(): void {\n // initialize observable for resize calculations\n this._resizeSubs = this._onResize.asObservable().subscribe(() => {\n if (this._rows) {\n this._rows.toArray().forEach((row: TdDataTableRowComponent, index: number) => {\n this._rowHeightCache[this.fromRow + index] = row.height + 1;\n });\n }\n this._calculateWidths();\n this._calculateVirtualRows();\n });\n\n // initialize observable for column resize calculations\n this._columnResizeSubs = this._onColumnResize.asObservable().pipe(\n debounceTime(0),\n ).subscribe((clientX: number) => {\n this._columnClientX = clientX;\n this._calculateWidths();\n this._changeDetectorRef.markForCheck();\n });\n // initialize observable for scroll column header reposition\n this._horizontalScrollSubs = this._onHorizontalScroll.asObservable()\n .subscribe((horizontalScroll: number) => {\n this._scrollHorizontalOffset = horizontalScroll;\n this._changeDetectorRef.markForCheck();\n });\n // initialize observable for virtual scroll rendering\n this._verticalScrollSubs = this._onVerticalScroll.asObservable()\n .subscribe((verticalScroll: number) => {\n this._scrollVerticalOffset = verticalScroll;\n this._calculateVirtualRows();\n this._changeDetectorRef.markForCheck();\n });\n this._valueChangesSubs = this.valueChanges.subscribe((value: any) => {\n this.refresh();\n });\n }\n\n /**\n * Loads templates and sets them in a map for faster access.\n */\n ngAfterContentInit(): void {\n for (let i: number = 0; i < this._templates.toArray().length; i++) {\n this._templateMap.set(\n this._templates.toArray()[i].tdDataTableTemplate,\n this._templates.toArray()[i].templateRef,\n );\n }\n }\n\n /**\n * Checks hosts native elements widths to see if it has changed (resize check)\n */\n ngAfterContentChecked(): void {\n // check if the scroll has been reset when element is hidden\n if (this._scrollVerticalOffset - this._scrollableDiv.nativeElement.scrollTop > 5) {\n // scroll back to the top if element has been reset\n this._onVerticalScroll.next(0);\n }\n if (this._elementRef.nativeElement) {\n let newHostWidth: number = this._elementRef.nativeElement.getBoundingClientRect().width;\n // if the width has changed then we throw a resize event.\n if (this._hostWidth !== newHostWidth) {\n setTimeout(() => {\n this._hostWidth = newHostWidth;\n this._onResize.next();\n }, 0);\n }\n }\n if (this._scrollableDiv.nativeElement) {\n let newHostHeight: number = this._scrollableDiv.nativeElement.getBoundingClientRect().height;\n // if the height of the viewport has changed, then we mark for check\n if (this._hostHeight !== newHostHeight) {\n this._hostHeight = newHostHeight;\n this._calculateVirtualRows();\n this._changeDetectorRef.markForCheck();\n }\n }\n }\n\n /**\n * Registers to an observable that checks if all rows have been rendered\n * so we can start calculating the widths\n */\n ngAfterViewInit(): void {\n this._rowsChangedSubs = this._rows.changes.pipe(\n debounceTime(0),\n ).subscribe(() => {\n this._onResize.next();\n });\n this._calculateVirtualRows();\n }\n\n /**\n * Unsubscribes observables when data table is destroyed\n */\n ngOnDestroy(): void {\n if (this._resizeSubs) {\n this._resizeSubs.unsubscribe();\n }\n if (this._columnResizeSubs) {\n this._columnResizeSubs.unsubscribe();\n }\n if (this._horizontalScrollSubs) {\n this._horizontalScrollSubs.unsubscribe();\n }\n if (this._verticalScrollSubs) {\n this._verticalScrollSubs.unsubscribe();\n }\n if (this._rowsChangedSubs) {\n this._rowsChangedSubs.unsubscribe();\n }\n if (this._valueChangesSubs) {\n this._valueChangesSubs.unsubscribe();\n }\n }\n\n /**\n * Method that gets executed every time there is a scroll event\n * Calls the scroll observable\n */\n handleScroll(event: Event): void {\n let element: HTMLElement = (<HTMLElement>event.target);\n if (element) {\n let horizontalScroll: number = element.scrollLeft;\n if (this._scrollHorizontalOffset !== horizontalScroll) {\n this._onHorizontalScroll.next(horizontalScroll);\n }\n let verticalScroll: number = element.scrollTop;\n if (this._scrollVerticalOffset !== verticalScroll) {\n this._onVerticalScroll.next(verticalScroll);\n }\n }\n }\n\n /**\n * Returns the width needed for the columns via index\n */\n getColumnWidth(index: number): number {\n if (this._widths[index]) {\n return this._widths[index].value;\n }\n return undefined;\n }\n\n getCellValue(column: ITdDataTableColumn, value: any): string {\n if (column.nested === undefined || column.nested) {\n return this._getNestedValue(column.name, value);\n }\n return value[column.name];\n }\n\n /**\n * Getter method for template references\n */\n getTemplateRef(name: string): TemplateRef<any> {\n return this._templateMap.get(name);\n }\n\n /**\n * Clears model (ngModel) of component by removing all values in array.\n */\n clearModel(): void {\n this.value.splice(0, this.value.length);\n }\n\n /**\n * Refreshes data table and rerenders [data] and [columns]\n */\n refresh(): void {\n this._calculateVirtualRows();\n this._calculateWidths();\n this._calculateCheckboxState();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Selects or clears all rows depending on 'checked' value.\n */\n selectAll(checked: boolean): void {\n let toggledRows: any[] = [];\n if (checked) {\n this._data.forEach((row: any) => {\n // skiping already selected rows\n if (!this.isRowSelected(row)) {\n this.value.push(row);\n // checking which ones are being toggled\n toggledRows.push(row);\n }\n });\n this._allSelected = true;\n this._indeterminate = true;\n } else {\n this._data.forEach((row: any) => {\n // checking which ones are being toggled\n if (this.isRowSelected(row)) {\n toggledRows.push(row);\n let modelRow: any = this.value.filter((val: any) => {\n return this.compareWith(row, val);\n })[0];\n let index: number = this.value.indexOf(modelRow);\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n });\n this._allSelected = false;\n this._indeterminate = false;\n }\n this.onSelectAll.emit({rows: toggledRows, selected: checked});\n this.onChange(this.value);\n }\n\n /**\n * Checks if row is selected\n */\n isRowSelected(row: any): boolean {\n // compare items by [compareWith] function\n return this.value ? this.value.filter((val: any) => {\n return this.compareWith(row, val);\n }).length > 0 : false;\n }\n\n /**\n * Selects or clears a row depending on 'checked' value if the row 'isSelectable'\n * handles cntrl clicks and shift clicks for multi-select\n */\n select(row: any, event: Event, currentSelected: number): void {\n if (this.selectable) {\n this.blockEvent(event);\n // Check to see if Shift key is selected and need to select everything in between\n let mouseEvent: MouseEvent = event as MouseEvent;\n if (this.multiple && mouseEvent && mouseEvent.shiftKey && this._lastSelectedIndex > -1) {\n let firstIndex: number = currentSelected;\n let lastIndex: number = this._lastSelectedIndex;\n if (currentSelected > this._lastSelectedIndex) {\n firstIndex = this._lastSelectedIndex;\n lastIndex = currentSelected;\n }\n // if clicking a checkbox behind the initial check, then toggle all selections expect the initial checkbox\n // else the checkboxes clicked are all after the initial one\n if ((this._firstSelectedIndex >= currentSelected && this._lastSelectedIndex > this._firstSelectedIndex) ||\n (this._firstSelectedIndex <= currentSelected && this._lastSelectedIndex < this._firstSelectedIndex)) {\n for (let i: number = firstIndex; i <= lastIndex; i++) {\n if (this._firstSelectedIndex !== i) {\n this._doSelection(this._data[i], i);\n }\n }\n } else if ((this._firstSelectedIndex > currentSelected) || (this._firstSelectedIndex < currentSelected)) {\n // change indexes depending on where the next checkbox is selected (before or after)\n if (this._firstSelectedIndex > currentSelected) {\n lastIndex--;\n } else if (this._firstSelectedIndex < currentSelected) {\n firstIndex++;\n }\n for (let i: number = firstIndex; i <= lastIndex; i++) {\n let rowSelected: boolean = this.isRowSelected(this._data[i]);\n // if row is selected and first checkbox was selected\n // or if row was unselected and first checkbox was unselected\n // we ignore the toggle\n if ((this._firstCheckboxValue && !rowSelected) ||\n (!this._firstCheckboxValue && rowSelected)) {\n this._doSelection(this._data[i], i);\n } else if (this._shiftPreviouslyPressed) {\n // else if the checkbox selected was in the middle of the last selection and the first selection\n // then we undo the selections\n if ((currentSelected >= this._firstSelectedIndex && currentSelected <= this._lastSelectedIndex) ||\n (currentSelected <= this._firstSelectedIndex && currentSelected >= this._lastSelectedIndex)) {\n this._doSelection(this._data[i], i);\n }\n }\n }\n }\n this._shiftPreviouslyPressed = true;\n // if shift wasnt pressed, then we take the element checked as the first row\n // incase the next click uses shift\n } else if (mouseEvent && !mouseEvent.shiftKey) {\n this._firstCheckboxValue = this._doSelection(row, currentSelected);\n this._shiftPreviouslyPressed = false;\n this._firstSelectedIndex = currentSelected;\n }\n this._lastSelectedIndex = currentSelected;\n }\n }\n\n /**\n * Overrides the onselectstart method of the document so other text on the page\n * doesn't get selected when doing shift selections.\n */\n disableTextSelection(): void {\n if (this._document) {\n this._document.onselectstart = function(): boolean {\n return false;\n };\n }\n }\n\n /**\n * Resets the original onselectstart method.\n */\n enableTextSelection(): void {\n if (this._document) {\n this._document.onselectstart = undefined;\n }\n }\n\n /**\n * emits the onRowClickEvent when a row is clicked\n * if clickable is true and selectable is false then select the row\n */\n handleRowClick(row: any, index: number, event: Event): void {\n if (this.clickable) {\n // ignoring linting rules here because attribute it actually null or not there\n // can't check for undefined\n const srcElement: any = event.srcElement || event.currentTarget;\n let element: HTMLElement = event.target as HTMLElement;\n /* tslint:disable-next-line */\n if (srcElement.getAttribute('stopRowClick') === null && element.tagName.toLowerCase() !== 'mat-pseudo-checkbox') {\n this.onRowClick.emit({\n row: row,\n index: index,\n });\n }\n }\n }\n\n /**\n * Method handle for sort click event in column headers.\n */\n handleSort(column: ITdDataTableColumn): void {\n if (this._sortBy === column) {\n this._sortOrder = this._sortOrder === TdDataTableSortingOrder.Ascending ?\n TdDataTableSortingOrder.Descending : TdDataTableSortingOrder.Ascending;\n } else {\n this._sortBy = column;\n this._sortOrder = TdDataTableSortingOrder.Ascending;\n }\n this.onSortChange.next({ name: this._sortBy.name, order: this._sortOrder });\n }\n\n /**\n * Handle all keyup events when focusing a data table row\n */\n _rowKeyup(event: KeyboardEvent, row: any, index: number): void {\n switch (event.keyCode) {\n case ENTER:\n case SPACE:\n /** if user presses enter or space, the row should be selected */\n if (this.selectable) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n case UP_ARROW:\n /**\n * if users presses the up arrow, we focus the prev row\n * unless its the first row\n */\n if (index > 0) {\n this._rows.toArray()[index - 1].focus();\n }\n this.blockEvent(event);\n if (this.selectable && this.multiple && event.shiftKey && this.fromRow + index >= 0) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n case DOWN_ARROW:\n /**\n * if users presses the down arrow, we focus the next row\n * unless its the last row\n */\n if (index < (this._rows.toArray().length - 1)) {\n this._rows.toArray()[index + 1].focus();\n }\n this.blockEvent(event);\n if (this.selectable && this.multiple && event.shiftKey && this.fromRow + index < this._data.length) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n default:\n // default\n }\n }\n\n /**\n * Sets column index of the dragged column and initial clientX of column\n */\n _handleStartColumnDrag(index: number, event: MouseEvent): void {\n this._columnClientX = event.clientX;\n this._resizingColumn = index;\n }\n\n /**\n * Calculates new width depending on new clientX of dragger column\n */\n _handleColumnDrag(event: MouseEvent | DragEvent): void {\n // check if there was been a separator clicked for resize\n if (this._resizingColumn !== undefined && event.clientX > 0) {\n let xPosition: number = event.clientX;\n // checks if the separator is being moved to try and resize the column, else dont do anything\n if (xPosition > 0 && this._columnClientX > 0 && (xPosition - this._columnClientX) !== 0) {\n // calculate the new width depending if making the column bigger or smaller\n let proposedManualWidth: number = this._widths[this._resizingColumn].value + (xPosition - this._columnClientX);\n // if the proposed new width is less than the projected min width of the column, use projected min width\n if (proposedManualWidth < this._colElements.toArray()[this._resizingColumn].projectedWidth) {\n proposedManualWidth = this._colElements.toArray()[this._resizingColumn].projectedWidth;\n }\n this.columns[this._resizingColumn].width = proposedManualWidth;\n // update new x position for the resized column\n this._onColumnResize.next(xPosition);\n }\n }\n }\n\n /**\n * Ends dragged flags\n */\n _handleEndColumnDrag(): void {\n this._columnClientX = undefined;\n this._resizingColumn = undefined;\n }\n\n /**\n * Method to prevent the default events\n */\n blockEvent(event: Event): void {\n event.preventDefault();\n }\n\n private _getNestedValue(name: string, value: any): string {\n if (!(value instanceof Object) || !name) {\n return value;\n }\n if (name.indexOf('.') > -1) {\n let splitName: string[] = name.split(/\\.(.+)/, 2);\n return this._getNestedValue(splitName[1], value[splitName[0]]);\n } else {\n return value[name];\n }\n }\n\n /**\n * Does the actual Row Selection\n */\n private _doSelection(row: any, rowIndex: number): boolean {\n let wasSelected: boolean = this.isRowSelected(row);\n if (!wasSelected) {\n if (!this._multiple) {\n this.clearModel();\n }\n this.value.push(row);\n } else {\n // compare items by [compareWith] function\n row = this.value.filter((val: any) => {\n return this.compareWith(row, val);\n })[0];\n let index: number = this.value.indexOf(row);\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n this._calculateCheckboxState();\n this.onRowSelect.emit({row: row, index: rowIndex, selected: !wasSelected});\n this.onChange(this.value);\n return !wasSelected;\n }\n\n /**\n * Calculate all the state of all checkboxes\n */\n private _calculateCheckboxState(): void {\n if (this._data) {\n this._allSelected = typeof this._data.find((d: any) => !this.isRowSelected(d)) === 'undefined';\n this._indeterminate = false;\n for (let row of this._data) {\n if (!this.isRowSelected(row)) {\n continue;\n }\n this._indeterminate = true;\n break;\n }\n }\n }\n\n /**\n * Calculates the widths for columns and cells depending on content\n */\n private _calculateWidths(): void {\n if (this._colElements && this._colElements.length) {\n this._widths = [];\n this._colElements.forEach((col: TdDataTableColumnComponent, index: number) => {\n this._adjustColumnWidth(index, this._calculateWidth());\n });\n this._adjustColumnWidhts();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Adjusts columns after calculation to see if they need to be recalculated.\n */\n private _adjustColumnWidhts(): void {\n let fixedTotalWidth: number = 0;\n // get the number of total columns that have flexible widths (not fixed or hidden)\n let flexibleWidths: number = this._widths.filter((width: IInternalColumnWidth, index: number) => {\n if (this.columns[index].hidden) {\n return false;\n }\n if (width.limit || width.max || width.min) {\n fixedTotalWidth += width.value;\n }\n return !width.limit && !width.max && !width.min;\n }).length;\n // calculate how much pixes are left that could be spread across\n // the flexible columns\n let recalculateHostWidth: number = 0;\n if (fixedTotalWidth < this.hostWidth) {\n recalculateHostWidth = this.hostWidth - fixedTotalWidth;\n }\n // if we have flexible columns and pixels to spare on them\n // we try and spread the pixels across them\n if (flexibleWidths && recalculateHostWidth) {\n let newValue: number = Math.floor(recalculateHostWidth / flexibleWidths);\n let adjustedNumber: number = 0;\n // adjust the column widths with the spread pixels\n this._widths.forEach((colWidth: IInternalColumnWidth) => {\n if (this._widths[colWidth.index].max && this._widths[colWidth.index].value > newValue ||\n this._widths[colWidth.index].min && this._widths[colWidth.index].value < newValue ||\n !this._widths[colWidth.index].limit) {\n this._adjustColumnWidth(colWidth.index, newValue);\n adjustedNumber++;\n }\n });\n // if there are still columns that need to be recalculated, we start over\n let newFlexibleWidths: number = this._widths.filter((width: IInternalColumnWidth) => {\n return !width.limit && !width.max;\n }).length;\n if (newFlexibleWidths !== adjustedNumber && newFlexibleWidths !== flexibleWidths) {\n this._adjustColumnWidhts();\n }\n }\n }\n\n /**\n * Adjusts a single column to see if it can be recalculated\n */\n private _adjustColumnWidth(index: number, value: number): void {\n this._widths[index] = {\n value: value,\n index: index,\n limit: false,\n min: false,\n max: false,\n };\n // flag to see if we need to skip the min width projection\n // depending if a width or min width has been provided\n let skipMinWidthProjection: boolean = false;\n if (this.columns[index]) {\n // if the provided width has min/max, then we check to see if we need to set it\n if (typeof this.columns[index].width === 'object') {\n let widthOpts: ITdDataTableColumnWidth = <ITdDataTableColumnWidth>this.columns[index].width;\n // if the column width is less than the configured min, we override it\n skipMinWidthProjection = (widthOpts && !!widthOpts.min);\n if (widthOpts && widthOpts.min >= this._widths[index].value) {\n this._widths[index].value = widthOpts.min;\n this._widths[index].min = true;\n // if the column width is more than the configured max, we override it\n } else if (widthOpts && widthOpts.max <= this._widths[index].value) {\n this._widths[index].value = widthOpts.max;\n this._widths[index].max = true;\n }\n // if it has a fixed width, then we just set it\n } else if (typeof this.columns[index].width === 'number') {\n this._widths[index].value = <number>this.columns[index].width;\n skipMinWidthProjection = this._widths[index].limit = true;\n }\n }\n // if there wasn't any width or min width provided, we set a min to what the column width min should be\n if (!skipMinWidthProjection &&\n this._widths[index].value < this._colElements.toArray()[index].projectedWidth) {\n this._widths[index].value = this._colElements.toArray()[index].projectedWidth;\n this._widths[index].min = true;\n this._widths[index].limit = false;\n }\n }\n\n /**\n * Generic method to calculate column width\n */\n private _calculateWidth(): number {\n let renderedColumns: ITdDataTableColumn[] = this.columns.filter((col: ITdDataTableColumn) => !col.hidden);\n return Math.floor(this.hostWidth / renderedColumns.length);\n }\n\n /**\n * Method to calculate the rows to be rendered in the viewport\n */\n private _calculateVirtualRows(): void {\n let scrolledRows: number = 0;\n if (this._data) {\n this._totalHeight = 0;\n let rowHeightSum: number = 0;\n // loop through all rows to see if we have their height cached\n // and sum them all to calculate the total height\n this._data.forEach((d: any, i: number) => {\n // iterate through all rows at first and assume all\n // rows are the same height as the first one\n if (!this._rowHeightCache[i]) {\n this._rowHeightCache[i] = this._rowHeightCache[0] || TD_VIRTUAL_DEFAULT_ROW_HEIGHT;\n }\n rowHeightSum += this._rowHeightCache[i];\n // check how many rows have been scrolled\n if (this._scrollVerticalOffset - rowHeightSum > 0) {\n scrolledRows++;\n }\n });\n this._totalHeight = rowHeightSum;\n // set the initial row to be rendered taking into account the row offset\n let fromRow: number = scrolledRows - TD_VIRTUAL_OFFSET;\n this._fromRow = fromRow > 0 ? fromRow : 0;\n\n let hostHeight: number = this._hostHeight;\n let index: number = 0;\n // calculate how many rows can fit in the viewport\n while (hostHeight > 0) {\n hostHeight -= this._rowHeightCache[this.fromRow + index];\n index++;\n }\n // set the last row to be rendered taking into account the row offset\n let range: number = (index - 1) + (TD_VIRTUAL_OFFSET * 2);\n let toRow: number = range + this.fromRow;\n // if last row is greater than the total length, then we use the total length\n if (isFinite(toRow) && toRow > this._data.length) {\n toRow = this._data.length;\n } else if (!isFinite(toRow)) {\n toRow = TD_VIRTUAL_OFFSET;\n }\n this._toRow = toRow;\n } else {\n this._totalHeight = 0;\n this._fromRow = 0;\n this._toRow = 0;\n }\n\n let offset: number = 0;\n // calculate the proper offset depending on how many rows have been scrolled\n if (scrolledRows > TD_VIRTUAL_OFFSET) {\n for (let index: number = 0; index < this.fromRow; index++) {\n offset += this._rowHeightCache[index];\n }\n }\n\n this._offsetTransform = this._domSanitizer.bypassSecurityTrustStyle('translateY(' + (offset - this.totalHeight) + 'px)');\n if (this._data) {\n this._virtualData = this.data.slice(this.fromRow, this.toRow);\n }\n // mark for check at the end of the queue so we are sure\n // that the changes will be marked\n Promise.resolve().then(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","import { Component, Input, Output, EventEmitter, Renderer2, ElementRef, HostBinding, HostListener, ViewChild } from '@angular/core';\n\nimport { TdDataTableSortingOrder } from '../data-table.component';\n\nexport interface ITdDataTableSortChangeEvent {\n order: TdDataTableSortingOrder;\n name: string;\n}\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'th[td-data-table-column]',\n styleUrls: ['./data-table-column.component.scss' ],\n templateUrl: './data-table-column.component.html',\n})\nexport class TdDataTableColumnComponent {\n\n private _sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending;\n\n @ViewChild('columnContent', {read: ElementRef}) _columnContent: ElementRef;\n\n get projectedWidth(): number {\n if (this._columnContent && this._columnContent.nativeElement) {\n return (<HTMLElement>this._columnContent.nativeElement).getBoundingClientRect().width;\n }\n return 100;\n }\n\n /**\n * name?: string\n * Sets unique column [name] for [sortable] events.\n */\n @Input('name') name: string = '';\n\n /**\n * sortable?: boolean\n * Enables sorting events, sort icons and active column states.\n * Defaults to 'false'\n */\n @Input('sortable') sortable: boolean = false;\n\n /**\n * active?: boolean\n * Sets column to active state when 'true'.\n * Defaults to 'false'\n */\n @Input('active') active: boolean = false;\n\n /**\n * numeric?: boolean\n * Makes column follow the numeric data-table specs and sort icon.\n * Defaults to 'false'\n */\n @Input('numeric') numeric: boolean = false;\n\n /**\n * sortOrder?: ['ASC' | 'DESC'] or TdDataTableSortingOrder\n * Sets the sort order of column.\n * Defaults to 'ASC' or TdDataTableSortingOrder.Ascending\n */\n @Input('sortOrder')\n set sortOrder(order: 'ASC' | 'DESC') {\n let sortOrder: string = order ? order.toUpperCase() : 'ASC';\n if (sortOrder !== 'DESC' && sortOrder !== 'ASC') {\n throw new Error('[sortOrder] must be empty, ASC or DESC');\n }\n\n this._sortOrder = sortOrder === 'ASC' ?\n TdDataTableSortingOrder.Ascending : TdDataTableSortingOrder.Descending;\n }\n\n /**\n * sortChange?: function\n * Event emitted when the column headers are clicked. [sortable] needs to be enabled.\n * Emits an [ITdDataTableSortChangeEvent] implemented object.\n */\n @Output('sortChange') onSortChange: EventEmitter<ITdDataTableSortChangeEvent> =\n new EventEmitter<ITdDataTableSortChangeEvent>();\n\n @HostBinding('class.mat-clickable')\n get bindClickable(): boolean {\n return this.sortable;\n }\n\n @HostBinding('class.mat-sortable')\n get bingSortable(): boolean {\n return this.sortable;\n }\n\n @HostBinding('class.mat-active')\n get bindActive(): boolean {\n return this.active;\n }\n\n @HostBinding('class.mat-numeric')\n get bindNumeric(): boolean {\n return this.numeric;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-column');\n }\n\n /**\n * Listening to click event on host to throw a sort event\n */\n @HostListener('click')\n handleClick(): void {\n if (this.sortable) {\n this.onSortChange.emit({name: this.name, order: this._sortOrder});\n }\n }\n\n isAscending(): boolean {\n return this._sortOrder === TdDataTableSortingOrder.Ascending;\n }\n\n isDescending(): boolean {\n return this._sortOrder === TdDataTableSortingOrder.Descending;\n }\n\n}\n","import { Component, Input, Renderer2, ElementRef, HostBinding } from '@angular/core';\n\nexport type TdDataTableCellAlign = 'start' | 'center' | 'end';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'td[td-data-table-cell]',\n styleUrls: ['./data-table-cell.component.scss' ],\n templateUrl: './data-table-cell.component.html',\n})\nexport class TdDataTableCellComponent {\n\n private _align: TdDataTableCellAlign;\n\n /**\n * numeric?: boolean\n * Makes cell follow the numeric data-table specs.\n * Defaults to 'false'\n */\n @Input('numeric') numeric: boolean = false;\n\n /**\n * align?: 'start' | 'center' | 'end'\n * Makes cell content align on demand\n * Defaults to 'left', overrides numeric\n */\n @Input() \n set align(align: TdDataTableCellAlign) {\n this._align = align;\n }\n get align(): TdDataTableCellAlign {\n return this._align; \n }\n\n @HostBinding('class.mat-numeric')\n get bindNumeric(): boolean {\n return this.numeric;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-cell');\n }\n\n}\n","import { Component, Renderer2, ElementRef } from '@angular/core';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'table[td-data-table]',\n styleUrls: ['./data-table-table.component.scss' ],\n templateUrl: './data-table-table.component.html',\n})\nexport class TdDataTableTableComponent {\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table');\n }\n\n}\n","import { Injectable, Provider, SkipSelf, Optional } from '@angular/core';\n\nimport { TdDataTableSortingOrder, ITdDataTableColumn } from '../data-table.component';\n\n@Injectable()\nexport class TdDataTableService {\n\n /**\n * params:\n * - data: any[]\n * - searchTerm: string\n * - ignoreCase: boolean = false\n * - excludedColumns: string[] = []\n *\n * Searches [data] parameter for [searchTerm] matches and returns a new array with them.\n */\n filterData(data: any[], searchTerm: string, ignoreCase: boolean = false, excludedColumns?: string[]): any[] {\n let filter: string = searchTerm ? (ignoreCase ? searchTerm.toLowerCase() : searchTerm) : '';\n if (filter) {\n data = data.filter((item: any) => {\n const res: any = Object.keys(item).find((key: string) => {\n if (!excludedColumns || excludedColumns.indexOf(key) === -1) {\n const preItemValue: string = ('' + item[key]);\n const itemValue: string = ignoreCase ? preItemValue.toLowerCase() : preItemValue;\n return itemValue.indexOf(filter) > -1;\n }\n });\n return !(typeof res === 'undefined');\n });\n }\n return data;\n }\n\n /**\n * params:\n * - data: any[]\n * - sortBy: string\n * - sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending\n *\n * Sorts [data] parameter by [sortBy] and [sortOrder] and returns the sorted data.\n */\n sortData(data: any[], sortBy: string, sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending): any[] {\n if (sortBy) {\n data = Array.from(data); // Change the array reference to trigger OnPush and not mutate original array\n data.sort((a: any, b: any) => {\n let compA: any = a[sortBy];\n let compB: any = b[sortBy];\n let direction: number = 0;\n if (!Number.isNaN(Number.parseFloat(compA)) && !Number.isNaN(Number.parseFloat(compB))) {\n direction = Number.parseFloat(compA) - Number.parseFloat(compB);\n } else {\n if (compA < compB) {\n direction = -1;\n } else if (compA > compB) {\n direction = 1;\n }\n }\n return direction * (sortOrder === TdDataTableSortingOrder.Descending ? -1 : 1);\n });\n }\n return data;\n }\n\n /**\n * params:\n * - data: any[]\n * - fromRow: number\n * - toRow: : number\n *\n * Returns a section of the [data] parameter starting from [fromRow] and ending in [toRow].\n */\n pageData(data: any[], fromRow: number, toRow: number): any[] {\n if (fromRow >= 1) {\n data = data.slice(fromRow - 1, toRow);\n }\n return data;\n }\n}\n\nexport function DATA_TABLE_PROVIDER_FACTORY(\n parent: TdDataTableService): TdDataTableService {\n return parent || new TdDataTableService();\n}\n\nexport const DATA_TABLE_PROVIDER: Provider = {\n // If there is already a service available, use that. Otherwise, provide a new one.\n provide: TdDataTableService,\n deps: [[new Optional(), new SkipSelf(), TdDataTableService]],\n useFactory: DATA_TABLE_PROVIDER_FACTORY,\n};\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatPseudoCheckboxModule } from '@angular/material/core';\n\nimport { TdDataTableComponent } from './data-table.component';\nimport { TdDataTableColumnComponent } from './data-table-column/data-table-column.component';\nimport { TdDataTableCellComponent } from './data-table-cell/data-table-cell.component';\nimport { TdDataTableRowComponent, TdDataTableColumnRowComponent } from './data-table-row/data-table-row.component';\nimport { TdDataTableTableComponent } from './data-table-table/data-table-table.component';\nimport { TdDataTableTemplateDirective } from './directives/data-table-template.directive';\n\nimport { DATA_TABLE_PROVIDER } from './services/data-table.service';\n\nconst TD_DATA_TABLE: Type<any>[] = [\n TdDataTableComponent,\n TdDataTableTemplateDirective,\n\n TdDataTableColumnComponent,\n TdDataTableCellComponent,\n TdDataTableRowComponent,\n TdDataTableColumnRowComponent,\n TdDataTableTableComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n MatCheckboxModule,\n MatTooltipModule,\n MatIconModule,\n MatPseudoCheckboxModule,\n ],\n declarations: [\n TD_DATA_TABLE,\n ],\n exports: [\n TD_DATA_TABLE,\n ],\n providers: [\n DATA_TABLE_PROVIDER,\n ],\n})\nexport class CovalentDataTableModule {\n\n}\n"]}
|
@@ -56,7 +56,7 @@
|
|
56
56
|
{ type: core.Component, args: [{
|
57
57
|
selector: 'td-dialog',
|
58
58
|
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>",
|
59
|
-
styles: [".td-dialog-title{margin-top:0;margin-bottom:20px}.td-dialog-content{margin-bottom:16px}.td-dialog-actions{position:relative;top:16px;left:16px}::ng-deep [dir=rtl] .td-dialog-actions{right:16px;left:auto}:host{display:block}:host .td-dialog-actions{-ms-flex-direction:row;flex-direction:row;box-sizing:border-box;display:-ms-flexbox;display:flex}:host .td-dialog-actions .td-dialog-spacer{-ms-flex:1;flex:1}:host .td-dialog-actions ::ng-deep button{text-transform:uppercase;margin-left:8px;padding-left:8px;padding-right:8px;min-width:64px}[dir=rtl] :host .td-dialog-actions ::ng-deep button{margin-right:8px;margin-left:inherit}"]
|
59
|
+
styles: [".td-dialog-title{margin-top:0;margin-bottom:20px}.td-dialog-content{margin-bottom:16px}.td-dialog-actions{position:relative;top:16px;left:16px}::ng-deep [dir=rtl] .td-dialog-actions{right:16px;left:auto}:host{display:block}:host .td-dialog-actions{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-sizing:border-box;box-sizing:border-box;display:-webkit-box;display:-ms-flexbox;display:flex}:host .td-dialog-actions .td-dialog-spacer{-webkit-box-flex:1;-ms-flex:1;flex:1}:host .td-dialog-actions ::ng-deep button{text-transform:uppercase;margin-left:8px;padding-left:8px;padding-right:8px;min-width:64px}[dir=rtl] :host .td-dialog-actions ::ng-deep button{margin-right:8px;margin-left:inherit}"]
|
60
60
|
}] }
|
61
61
|
];
|
62
62
|
TdDialogComponent.propDecorators = {
|
@@ -207,7 +207,7 @@
|
|
207
207
|
{ type: core.Component, args: [{
|
208
208
|
selector: 'td-prompt-dialog',
|
209
209
|
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>",
|
210
|
-
styles: [".td-dialog-input-wrapper{-ms-flex-direction:row;flex-direction:row;box-sizing:border-box;display:-ms-flexbox;display:flex}.td-dialog-input-wrapper .td-dialog-input{-ms-flex:1;flex:1;box-sizing:border-box}.td-dialog-message{word-break:break-word}"]
|
210
|
+
styles: [".td-dialog-input-wrapper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-sizing:border-box;box-sizing:border-box;display:-webkit-box;display:-ms-flexbox;display:flex}.td-dialog-input-wrapper .td-dialog-input{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-sizing:border-box;box-sizing:border-box}.td-dialog-message{word-break:break-word}"]
|
211
211
|
}] }
|
212
212
|
];
|
213
213
|
/** @nocollapse */
|
@@ -483,21 +483,6 @@
|
|
483
483
|
};
|
484
484
|
return TdDialogService;
|
485
485
|
}());
|
486
|
-
/**
|
487
|
-
* @param {?} parent
|
488
|
-
* @param {?} dialog
|
489
|
-
* @return {?}
|
490
|
-
*/
|
491
|
-
function DIALOG_PROVIDER_FACTORY(parent, dialog$$1) {
|
492
|
-
return parent || new TdDialogService(dialog$$1);
|
493
|
-
}
|
494
|
-
/** @type {?} */
|
495
|
-
var DIALOG_PROVIDER = {
|
496
|
-
// If there is already service available, use that. Otherwise, provide a new one.
|
497
|
-
provide: TdDialogService,
|
498
|
-
deps: [[new core.Optional(), new core.SkipSelf(), TdDialogService], dialog.MatDialog],
|
499
|
-
useFactory: DIALOG_PROVIDER_FACTORY,
|
500
|
-
};
|
501
486
|
|
502
487
|
/**
|
503
488
|
* @fileoverview added by tsickle
|
@@ -538,7 +523,7 @@
|
|
538
523
|
TD_DIALOGS,
|
539
524
|
],
|
540
525
|
providers: [
|
541
|
-
|
526
|
+
TdDialogService,
|
542
527
|
],
|
543
528
|
entryComponents: [
|
544
529
|
TD_DIALOGS_ENTRY_COMPONENTS,
|
@@ -571,9 +556,7 @@
|
|
571
556
|
exports.TdAlertDialogComponent = TdAlertDialogComponent;
|
572
557
|
exports.TdConfirmDialogComponent = TdConfirmDialogComponent;
|
573
558
|
exports.TdPromptDialogComponent = TdPromptDialogComponent;
|
574
|
-
exports.DIALOG_PROVIDER_FACTORY = DIALOG_PROVIDER_FACTORY;
|
575
559
|
exports.TdDialogService = TdDialogService;
|
576
|
-
exports.DIALOG_PROVIDER = DIALOG_PROVIDER;
|
577
560
|
|
578
561
|
Object.defineProperty(exports, '__esModule', { value: true });
|
579
562
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"covalent-core-dialogs.umd.js.map","sources":["ng://@covalent/core/dialogs/dialog.component.ts","ng://@covalent/core/dialogs/alert-dialog/alert-dialog.component.ts","ng://@covalent/core/dialogs/confirm-dialog/confirm-dialog.component.ts","ng://@covalent/core/dialogs/prompt-dialog/prompt-dialog.component.ts","ng://@covalent/core/dialogs/services/dialog.service.ts","ng://@covalent/core/dialogs/dialogs.module.ts"],"sourcesContent":["import { Component, Directive, ContentChildren, QueryList, AfterContentInit } from '@angular/core';\n\n@Directive({selector: 'td-dialog-title'})\nexport class TdDialogTitleDirective {}\n\n@Directive({selector: 'td-dialog-content'})\nexport class TdDialogContentDirective {}\n\n@Directive({selector: 'td-dialog-actions'})\nexport class TdDialogActionsDirective {}\n\n@Component({\n selector: 'td-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss' ],\n})\nexport class TdDialogComponent implements AfterContentInit {\n\n @ContentChildren(TdDialogTitleDirective) dialogTitle: QueryList<TdDialogTitleDirective>;\n @ContentChildren(TdDialogContentDirective) dialogContent: QueryList<TdDialogContentDirective>;\n @ContentChildren(TdDialogActionsDirective) dialogActions: QueryList<TdDialogActionsDirective>;\n\n ngAfterContentInit(): void {\n if (this.dialogTitle.length > 1) {\n throw new Error('Duplicate td-dialog-title component at in td-dialog.');\n }\n if (this.dialogContent.length > 1) {\n throw new Error('Duplicate td-dialog-content component at in td-dialog.');\n }\n if (this.dialogActions.length > 1) {\n throw new Error('Duplicate td-dialog-actions component at in td-dialog.');\n }\n }\n\n}\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-alert-dialog',\n templateUrl: './alert-dialog.component.html',\n styleUrls: ['./alert-dialog.component.scss' ],\n})\nexport class TdAlertDialogComponent {\n title: string;\n message: string;\n closeButton: string = 'CLOSE';\n\n constructor(private _dialogRef: MatDialogRef<TdAlertDialogComponent>) {}\n\n close(): void {\n this._dialogRef.close();\n }\n}\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss' ],\n})\nexport class TdConfirmDialogComponent {\n title: string;\n message: string;\n cancelButton: string = 'CANCEL';\n acceptButton: string = 'ACCEPT';\n\n constructor(private _dialogRef: MatDialogRef<TdConfirmDialogComponent>) {}\n\n cancel(): void {\n this._dialogRef.close(false);\n }\n\n accept(): void {\n this._dialogRef.close(true);\n }\n}\n","import { Component, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-prompt-dialog',\n templateUrl: './prompt-dialog.component.html',\n styleUrls: ['./prompt-dialog.component.scss' ],\n})\nexport class TdPromptDialogComponent implements AfterViewInit {\n title: string;\n message: string;\n value: string;\n cancelButton: string = 'CANCEL';\n acceptButton: string = 'ACCEPT';\n\n @ViewChild('input') _input: ElementRef;\n\n constructor(private _dialogRef: MatDialogRef<TdPromptDialogComponent>) {}\n\n ngAfterViewInit(): void {\n // focus input once everything is rendered and good to go\n Promise.resolve().then(() => {\n (<HTMLInputElement>this._input.nativeElement).focus();\n });\n }\n\n /**\n * Method executed when input is focused\n * Selects all text\n */\n handleInputFocus(): void {\n (<HTMLInputElement>this._input.nativeElement).select();\n }\n\n cancel(): void {\n this._dialogRef.close(undefined);\n }\n\n accept(): void {\n this._dialogRef.close(this.value);\n }\n}\n","import { Injectable, ViewContainerRef, Provider, SkipSelf, Optional } from '@angular/core';\nimport { MatDialog, MatDialogRef, MatDialogConfig } from '@angular/material/dialog';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { TdAlertDialogComponent } from '../alert-dialog/alert-dialog.component';\nimport { TdConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';\nimport { TdPromptDialogComponent } from '../prompt-dialog/prompt-dialog.component';\n\nexport interface IDialogConfig extends MatDialogConfig {\n title?: string;\n message: string;\n}\n\nexport interface IAlertConfig extends IDialogConfig {\n closeButton?: string;\n}\n\nexport interface IConfirmConfig extends IDialogConfig {\n acceptButton?: string;\n cancelButton?: string;\n}\n\nexport interface IPromptConfig extends IConfirmConfig {\n value?: string;\n}\n\n@Injectable()\nexport class TdDialogService {\n\n constructor(private _dialogService: MatDialog) {}\n\n /**\n * params:\n * - component: ComponentType<T>\n * - config: MatDialogConfig\n * Wrapper function over the open() method in MatDialog.\n * Opens a modal dialog containing the given component.\n */\n public open<T>(component: ComponentType<T>, config?: MatDialogConfig): MatDialogRef<T> {\n return this._dialogService.open(component, config);\n }\n\n /**\n * Wrapper function over the closeAll() method in MatDialog.\n * Closes all of the currently-open dialogs.\n */\n public closeAll(): void {\n this._dialogService.closeAll();\n }\n\n /**\n * params:\n * - config: IAlertConfig {\n * message: string;\n * title?: string;\n * viewContainerRef?: ViewContainerRef;\n * closeButton?: string;\n * }\n *\n * Opens an alert dialog with the provided config.\n * Returns an MatDialogRef<TdAlertDialogComponent> object.\n */\n public openAlert(config: IAlertConfig): MatDialogRef<TdAlertDialogComponent> {\n let dialogConfig: MatDialogConfig = this._createConfig(config);\n let dialogRef: MatDialogRef<TdAlertDialogComponent> =\n this._dialogService.open(TdAlertDialogComponent, dialogConfig);\n let alertDialogComponent: TdAlertDialogComponent = dialogRef.componentInstance;\n alertDialogComponent.title = config.title;\n alertDialogComponent.message = config.message;\n if (config.closeButton) {\n alertDialogComponent.closeButton = config.closeButton;\n }\n return dialogRef;\n }\n\n /**\n * params:\n * - config: IConfirmConfig {\n * message: string;\n * title?: string;\n * viewContainerRef?: ViewContainerRef;\n * acceptButton?: string;\n * cancelButton?: string;\n * }\n *\n * Opens a confirm dialog with the provided config.\n * Returns an MatDialogRef<TdConfirmDialogComponent> object.\n */\n public openConfirm(config: IConfirmConfig): MatDialogRef<TdConfirmDialogComponent> {\n let dialogConfig: MatDialogConfig = this._createConfig(config);\n let dialogRef: MatDialogRef<TdConfirmDialogComponent> =\n this._dialogService.open(TdConfirmDialogComponent, dialogConfig);\n let confirmDialogComponent: TdConfirmDialogComponent = dialogRef.componentInstance;\n confirmDialogComponent.title = config.title;\n confirmDialogComponent.message = config.message;\n if (config.acceptButton) {\n confirmDialogComponent.acceptButton = config.acceptButton;\n }\n if (config.cancelButton) {\n confirmDialogComponent.cancelButton = config.cancelButton;\n }\n return dialogRef;\n }\n\n /**\n * params:\n * - config: IPromptConfig {\n * message: string;\n * title?: string;\n * value?: string;\n * viewContainerRef?: ViewContainerRef;\n * acceptButton?: string;\n * cancelButton?: string;\n * }\n *\n * Opens a prompt dialog with the provided config.\n * Returns an MatDialogRef<TdPromptDialogComponent> object.\n */\n public openPrompt(config: IPromptConfig): MatDialogRef<TdPromptDialogComponent> {\n let dialogConfig: MatDialogConfig = this._createConfig(config);\n let dialogRef: MatDialogRef<TdPromptDialogComponent> =\n this._dialogService.open(TdPromptDialogComponent, dialogConfig);\n let promptDialogComponent: TdPromptDialogComponent = dialogRef.componentInstance;\n promptDialogComponent.title = config.title;\n promptDialogComponent.message = config.message;\n promptDialogComponent.value = config.value;\n if (config.acceptButton) {\n promptDialogComponent.acceptButton = config.acceptButton;\n }\n if (config.cancelButton) {\n promptDialogComponent.cancelButton = config.cancelButton;\n }\n return dialogRef;\n }\n\n private _createConfig(config: IDialogConfig): MatDialogConfig {\n let dialogConfig: MatDialogConfig = new MatDialogConfig();\n dialogConfig.width = '400px';\n Object.assign(dialogConfig, config);\n return dialogConfig;\n }\n\n}\n\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 { 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"],"names":["Directive","Component","ContentChildren","MatDialogRef","ViewChild","MatDialogConfig","Injectable","MatDialog","dialog","Optional","SkipSelf","NgModule","FormsModule","CommonModule","MatDialogModule","MatInputModule","MatButtonModule"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"covalent-core-dialogs.umd.js.map","sources":["ng://@covalent/core/dialogs/dialog.component.ts","ng://@covalent/core/dialogs/alert-dialog/alert-dialog.component.ts","ng://@covalent/core/dialogs/confirm-dialog/confirm-dialog.component.ts","ng://@covalent/core/dialogs/prompt-dialog/prompt-dialog.component.ts","ng://@covalent/core/dialogs/services/dialog.service.ts","ng://@covalent/core/dialogs/dialogs.module.ts"],"sourcesContent":["import { Component, Directive, ContentChildren, QueryList, AfterContentInit } from '@angular/core';\n\n@Directive({selector: 'td-dialog-title'})\nexport class TdDialogTitleDirective {}\n\n@Directive({selector: 'td-dialog-content'})\nexport class TdDialogContentDirective {}\n\n@Directive({selector: 'td-dialog-actions'})\nexport class TdDialogActionsDirective {}\n\n@Component({\n selector: 'td-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss' ],\n})\nexport class TdDialogComponent implements AfterContentInit {\n\n @ContentChildren(TdDialogTitleDirective) dialogTitle: QueryList<TdDialogTitleDirective>;\n @ContentChildren(TdDialogContentDirective) dialogContent: QueryList<TdDialogContentDirective>;\n @ContentChildren(TdDialogActionsDirective) dialogActions: QueryList<TdDialogActionsDirective>;\n\n ngAfterContentInit(): void {\n if (this.dialogTitle.length > 1) {\n throw new Error('Duplicate td-dialog-title component at in td-dialog.');\n }\n if (this.dialogContent.length > 1) {\n throw new Error('Duplicate td-dialog-content component at in td-dialog.');\n }\n if (this.dialogActions.length > 1) {\n throw new Error('Duplicate td-dialog-actions component at in td-dialog.');\n }\n }\n\n}\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-alert-dialog',\n templateUrl: './alert-dialog.component.html',\n styleUrls: ['./alert-dialog.component.scss' ],\n})\nexport class TdAlertDialogComponent {\n title: string;\n message: string;\n closeButton: string = 'CLOSE';\n\n constructor(private _dialogRef: MatDialogRef<TdAlertDialogComponent>) {}\n\n close(): void {\n this._dialogRef.close();\n }\n}\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss' ],\n})\nexport class TdConfirmDialogComponent {\n title: string;\n message: string;\n cancelButton: string = 'CANCEL';\n acceptButton: string = 'ACCEPT';\n\n constructor(private _dialogRef: MatDialogRef<TdConfirmDialogComponent>) {}\n\n cancel(): void {\n this._dialogRef.close(false);\n }\n\n accept(): void {\n this._dialogRef.close(true);\n }\n}\n","import { Component, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-prompt-dialog',\n templateUrl: './prompt-dialog.component.html',\n styleUrls: ['./prompt-dialog.component.scss' ],\n})\nexport class TdPromptDialogComponent implements AfterViewInit {\n title: string;\n message: string;\n value: string;\n cancelButton: string = 'CANCEL';\n acceptButton: string = 'ACCEPT';\n\n @ViewChild('input') _input: ElementRef;\n\n constructor(private _dialogRef: MatDialogRef<TdPromptDialogComponent>) {}\n\n ngAfterViewInit(): void {\n // focus input once everything is rendered and good to go\n Promise.resolve().then(() => {\n (<HTMLInputElement>this._input.nativeElement).focus();\n });\n }\n\n /**\n * Method executed when input is focused\n * Selects all text\n */\n handleInputFocus(): void {\n (<HTMLInputElement>this._input.nativeElement).select();\n }\n\n cancel(): void {\n this._dialogRef.close(undefined);\n }\n\n accept(): void {\n this._dialogRef.close(this.value);\n }\n}\n","import { Injectable, ViewContainerRef, Provider, SkipSelf, Optional } from '@angular/core';\nimport { MatDialog, MatDialogRef, MatDialogConfig } from '@angular/material/dialog';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { TdAlertDialogComponent } from '../alert-dialog/alert-dialog.component';\nimport { TdConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';\nimport { TdPromptDialogComponent } from '../prompt-dialog/prompt-dialog.component';\n\nexport interface IDialogConfig extends MatDialogConfig {\n title?: string;\n message: string;\n}\n\nexport interface IAlertConfig extends IDialogConfig {\n closeButton?: string;\n}\n\nexport interface IConfirmConfig extends IDialogConfig {\n acceptButton?: string;\n cancelButton?: string;\n}\n\nexport interface IPromptConfig extends IConfirmConfig {\n value?: string;\n}\n\n@Injectable()\nexport class TdDialogService {\n\n constructor(private _dialogService: MatDialog) {}\n\n /**\n * params:\n * - component: ComponentType<T>\n * - config: MatDialogConfig\n * Wrapper function over the open() method in MatDialog.\n * Opens a modal dialog containing the given component.\n */\n public open<T>(component: ComponentType<T>, config?: MatDialogConfig): MatDialogRef<T> {\n return this._dialogService.open(component, config);\n }\n\n /**\n * Wrapper function over the closeAll() method in MatDialog.\n * Closes all of the currently-open dialogs.\n */\n public closeAll(): void {\n this._dialogService.closeAll();\n }\n\n /**\n * params:\n * - config: IAlertConfig {\n * message: string;\n * title?: string;\n * viewContainerRef?: ViewContainerRef;\n * closeButton?: string;\n * }\n *\n * Opens an alert dialog with the provided config.\n * Returns an MatDialogRef<TdAlertDialogComponent> object.\n */\n public openAlert(config: IAlertConfig): MatDialogRef<TdAlertDialogComponent> {\n let dialogConfig: MatDialogConfig = this._createConfig(config);\n let dialogRef: MatDialogRef<TdAlertDialogComponent> =\n this._dialogService.open(TdAlertDialogComponent, dialogConfig);\n let alertDialogComponent: TdAlertDialogComponent = dialogRef.componentInstance;\n alertDialogComponent.title = config.title;\n alertDialogComponent.message = config.message;\n if (config.closeButton) {\n alertDialogComponent.closeButton = config.closeButton;\n }\n return dialogRef;\n }\n\n /**\n * params:\n * - config: IConfirmConfig {\n * message: string;\n * title?: string;\n * viewContainerRef?: ViewContainerRef;\n * acceptButton?: string;\n * cancelButton?: string;\n * }\n *\n * Opens a confirm dialog with the provided config.\n * Returns an MatDialogRef<TdConfirmDialogComponent> object.\n */\n public openConfirm(config: IConfirmConfig): MatDialogRef<TdConfirmDialogComponent> {\n let dialogConfig: MatDialogConfig = this._createConfig(config);\n let dialogRef: MatDialogRef<TdConfirmDialogComponent> =\n this._dialogService.open(TdConfirmDialogComponent, dialogConfig);\n let confirmDialogComponent: TdConfirmDialogComponent = dialogRef.componentInstance;\n confirmDialogComponent.title = config.title;\n confirmDialogComponent.message = config.message;\n if (config.acceptButton) {\n confirmDialogComponent.acceptButton = config.acceptButton;\n }\n if (config.cancelButton) {\n confirmDialogComponent.cancelButton = config.cancelButton;\n }\n return dialogRef;\n }\n\n /**\n * params:\n * - config: IPromptConfig {\n * message: string;\n * title?: string;\n * value?: string;\n * viewContainerRef?: ViewContainerRef;\n * acceptButton?: string;\n * cancelButton?: string;\n * }\n *\n * Opens a prompt dialog with the provided config.\n * Returns an MatDialogRef<TdPromptDialogComponent> object.\n */\n public openPrompt(config: IPromptConfig): MatDialogRef<TdPromptDialogComponent> {\n let dialogConfig: MatDialogConfig = this._createConfig(config);\n let dialogRef: MatDialogRef<TdPromptDialogComponent> =\n this._dialogService.open(TdPromptDialogComponent, dialogConfig);\n let promptDialogComponent: TdPromptDialogComponent = dialogRef.componentInstance;\n promptDialogComponent.title = config.title;\n promptDialogComponent.message = config.message;\n promptDialogComponent.value = config.value;\n if (config.acceptButton) {\n promptDialogComponent.acceptButton = config.acceptButton;\n }\n if (config.cancelButton) {\n promptDialogComponent.cancelButton = config.cancelButton;\n }\n return dialogRef;\n }\n\n private _createConfig(config: IDialogConfig): MatDialogConfig {\n let dialogConfig: MatDialogConfig = new MatDialogConfig();\n dialogConfig.width = '400px';\n Object.assign(dialogConfig, config);\n return dialogConfig;\n }\n\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TdDialogComponent, TdDialogTitleDirective,\n TdDialogActionsDirective, TdDialogContentDirective } from './dialog.component';\nimport { TdAlertDialogComponent } from './alert-dialog/alert-dialog.component';\nimport { TdConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\nimport { TdPromptDialogComponent } from './prompt-dialog/prompt-dialog.component';\nimport { TdDialogService } from './services/dialog.service';\n\nconst TD_DIALOGS: Type<any>[] = [\n TdAlertDialogComponent,\n TdConfirmDialogComponent,\n TdPromptDialogComponent,\n TdDialogComponent,\n TdDialogTitleDirective,\n TdDialogActionsDirective,\n TdDialogContentDirective,\n];\n\nconst TD_DIALOGS_ENTRY_COMPONENTS: Type<any>[] = [\n TdAlertDialogComponent,\n TdConfirmDialogComponent,\n TdPromptDialogComponent,\n];\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n MatDialogModule,\n MatInputModule,\n MatButtonModule,\n ],\n declarations: [\n TD_DIALOGS,\n ],\n exports: [\n TD_DIALOGS,\n ],\n providers: [\n TdDialogService,\n ],\n entryComponents: [\n TD_DIALOGS_ENTRY_COMPONENTS,\n ],\n})\nexport class CovalentDialogsModule {\n\n}\n"],"names":["Directive","Component","ContentChildren","MatDialogRef","ViewChild","MatDialogConfig","Injectable","MatDialog","NgModule","FormsModule","CommonModule","MatDialogModule","MatInputModule","MatButtonModule"],"mappings":";;;;;;;;;;AAAA;QAEA;SACsC;;oBADrCA,cAAS,SAAC,EAAC,QAAQ,EAAE,iBAAiB,EAAC;;QACH,6BAAC;KADtC,IACsC;;QAEtC;SACwC;;oBADvCA,cAAS,SAAC,EAAC,QAAQ,EAAE,mBAAmB,EAAC;;QACH,+BAAC;KADxC,IACwC;;QAExC;SACwC;;oBADvCA,cAAS,SAAC,EAAC,QAAQ,EAAE,mBAAmB,EAAC;;QACH,+BAAC;KADxC,IACwC;;QAExC;SAuBC;;;;QAZC,8CAAkB;;;YAAlB;gBACE,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC/B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;iBACzE;gBACD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;iBAC3E;gBACD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;iBAC3E;aACF;;oBArBFC,cAAS,SAAC;wBACT,QAAQ,EAAE,WAAW;wBACrB,qgBAAsC;;qBAEvC;;;kCAGEC,oBAAe,SAAC,sBAAsB;oCACtCA,oBAAe,SAAC,wBAAwB;oCACxCA,oBAAe,SAAC,wBAAwB;;QAc3C,wBAAC;KAvBD;;;;;;ACXA;QAaE,gCAAoB,UAAgD;YAAhD,eAAU,GAAV,UAAU,CAAsC;YAFpE,gBAAW,GAAW,OAAO,CAAC;SAE0C;;;;QAExE,sCAAK;;;YAAL;gBACE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;aACzB;;oBAdFD,cAAS,SAAC;wBACT,QAAQ,EAAE,iBAAiB;wBAC3B,6VAA4C;;qBAE7C;;;;;wBANQE,mBAAY;;;QAiBrB,6BAAC;KAfD;;;;;;ACHA;QAcE,kCAAoB,UAAkD;YAAlD,eAAU,GAAV,UAAU,CAAwC;YAHtE,iBAAY,GAAW,QAAQ,CAAC;YAChC,iBAAY,GAAW,QAAQ,CAAC;SAE0C;;;;QAE1E,yCAAM;;;YAAN;gBACE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC9B;;;;QAED,yCAAM;;;YAAN;gBACE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC7B;;oBAnBFF,cAAS,SAAC;wBACT,QAAQ,EAAE,mBAAmB;wBAC7B,2mBAA8C;;qBAE/C;;;;;wBANQE,mBAAY;;;QAsBrB,+BAAC;KApBD;;;;;;ACHA;QAiBE,iCAAoB,UAAiD;YAAjD,eAAU,GAAV,UAAU,CAAuC;YALrE,iBAAY,GAAW,QAAQ,CAAC;YAChC,iBAAY,GAAW,QAAQ,CAAC;SAIyC;;;;QAEzE,iDAAe;;;YAAf;gBAAA,iBAKC;;gBAHC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;oBACrB,oBAAmB,KAAI,CAAC,MAAM,CAAC,aAAa,IAAE,KAAK,EAAE,CAAC;iBACvD,CAAC,CAAC;aACJ;;;;;;;;;;QAMD,kDAAgB;;;;;YAAhB;gBACE,oBAAmB,IAAI,CAAC,MAAM,CAAC,aAAa,IAAE,MAAM,EAAE,CAAC;aACxD;;;;QAED,wCAAM;;;YAAN;gBACE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;aAClC;;;;QAED,wCAAM;;;YAAN;gBACE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACnC;;oBArCFF,cAAS,SAAC;wBACT,QAAQ,EAAE,kBAAkB;wBAC5B,+mCAA6C;;qBAE9C;;;;;wBANQE,mBAAY;;;;6BAclBC,cAAS,SAAC,OAAO;;QA0BpB,8BAAC;KAtCD;;;;;;ACHA;QA6BE,yBAAoB,cAAyB;YAAzB,mBAAc,GAAd,cAAc,CAAW;SAAI;;;;;;;;;;;;;;;;;;;QAS1C,8BAAI;;;;;;;;;;;YAAX,UAAe,SAA2B,EAAE,MAAwB;gBAClE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;aACpD;;;;;;;;;;QAMM,kCAAQ;;;;;YAAf;gBACE,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;aAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;QAcM,mCAAS;;;;;;;;;;;;;;YAAhB,UAAiB,MAAoB;;oBAC/B,YAAY,GAAoB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;;oBAC1D,SAAS,GACX,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,EAAE,YAAY,CAAC;;oBAC5D,oBAAoB,GAA2B,SAAS,CAAC,iBAAiB;gBAC9E,oBAAoB,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC1C,oBAAoB,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC9C,IAAI,MAAM,CAAC,WAAW,EAAE;oBACtB,oBAAoB,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;iBACvD;gBACD,OAAO,SAAS,CAAC;aAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAeM,qCAAW;;;;;;;;;;;;;;;YAAlB,UAAmB,MAAsB;;oBACnC,YAAY,GAAoB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;;oBAC1D,SAAS,GACX,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,YAAY,CAAC;;oBAC9D,sBAAsB,GAA6B,SAAS,CAAC,iBAAiB;gBAClF,sBAAsB,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC5C,sBAAsB,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;gBAChD,IAAI,MAAM,CAAC,YAAY,EAAE;oBACvB,sBAAsB,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;iBAC3D;gBACD,IAAI,MAAM,CAAC,YAAY,EAAE;oBACvB,sBAAsB,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;iBAC3D;gBACD,OAAO,SAAS,CAAC;aAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAgBM,oCAAU;;;;;;;;;;;;;;;;YAAjB,UAAkB,MAAqB;;oBACjC,YAAY,GAAoB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;;oBAC1D,SAAS,GACX,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC;;oBAC7D,qBAAqB,GAA4B,SAAS,CAAC,iBAAiB;gBAChF,qBAAqB,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC3C,qBAAqB,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC/C,qBAAqB,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC3C,IAAI,MAAM,CAAC,YAAY,EAAE;oBACvB,qBAAqB,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;iBAC1D;gBACD,IAAI,MAAM,CAAC,YAAY,EAAE;oBACvB,qBAAqB,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;iBAC1D;gBACD,OAAO,SAAS,CAAC;aAClB;;;;;QAEO,uCAAa;;;;YAArB,UAAsB,MAAqB;;oBACrC,YAAY,GAAoB,IAAIC,sBAAe,EAAE;gBACzD,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC;gBAC7B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBACpC,OAAO,YAAY,CAAC;aACrB;;oBAlHFC,eAAU;;;;;wBAzBFC,gBAAS;;;QA6IlB,sBAAC;KApHD;;;;;;ACzBA;QAeM,UAAU,GAAgB;QAC9B,sBAAsB;QACtB,wBAAwB;QACxB,uBAAuB;QACvB,iBAAiB;QACjB,sBAAsB;QACtB,wBAAwB;QACxB,wBAAwB;KACzB;;QAEK,2BAA2B,GAAgB;QAC/C,sBAAsB;QACtB,wBAAwB;QACxB,uBAAuB;KACxB;AAED;QAAA;SAuBC;;oBAvBAC,aAAQ,SAAC;wBACR,OAAO,EAAE;4BACPC,iBAAW;4BACXC,mBAAY;4BACZC,sBAAe;4BACfC,oBAAc;4BACdC,sBAAe;yBAChB;wBACD,YAAY,EAAE;4BACZ,UAAU;yBACX;wBACD,OAAO,EAAE;4BACP,UAAU;yBACX;wBACD,SAAS,EAAE;4BACT,eAAe;yBAChB;wBACD,eAAe,EAAE;4BACf,2BAA2B;yBAC5B;qBACF;;QAGD,4BAAC;KAvBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|