@covalent/core 3.1.2 → 4.0.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/bundles/covalent-core-user-profile.umd.js +1 -9
- package/bundles/covalent-core-user-profile.umd.js.map +1 -1
- package/bundles/covalent-core-user-profile.umd.min.js.map +1 -1
- package/esm2015/user-profile/user-profile.module.js +3 -11
- package/fesm2015/covalent-core-user-profile.js +1 -9
- package/fesm2015/covalent-core-user-profile.js.map +1 -1
- package/package.json +1 -1
- package/schematics/components.js +1 -14
- package/schematics/components.js.map +1 -1
- package/theming/_all-theme.scss +0 -14
- package/theming/prebuilt/blue-grey-deep-orange.css +0 -248
- package/theming/prebuilt/blue-grey-deep-orange.css.map +1 -1
- package/theming/prebuilt/blue-orange.css +0 -248
- package/theming/prebuilt/blue-orange.css.map +1 -1
- package/theming/prebuilt/indigo-pink.css +0 -248
- package/theming/prebuilt/indigo-pink.css.map +1 -1
- package/theming/prebuilt/orange-light-blue.css +0 -248
- package/theming/prebuilt/orange-light-blue.css.map +1 -1
- package/theming/prebuilt/teal-orange.css +0 -248
- package/theming/prebuilt/teal-orange.css.map +1 -1
- package/typography/_all-typography.scss +0 -10
- package/user-profile/covalent-core-user-profile.metadata.json +1 -1
- package/bundles/covalent-core-chips.umd.js +0 -1507
- package/bundles/covalent-core-chips.umd.js.map +0 -1
- package/bundles/covalent-core-chips.umd.min.js +0 -16
- package/bundles/covalent-core-chips.umd.min.js.map +0 -1
- package/bundles/covalent-core-data-table.umd.js +0 -2756
- package/bundles/covalent-core-data-table.umd.js.map +0 -1
- package/bundles/covalent-core-data-table.umd.min.js +0 -16
- package/bundles/covalent-core-data-table.umd.min.js.map +0 -1
- package/bundles/covalent-core-expansion-panel.umd.js +0 -853
- package/bundles/covalent-core-expansion-panel.umd.js.map +0 -1
- package/bundles/covalent-core-expansion-panel.umd.min.js +0 -16
- package/bundles/covalent-core-expansion-panel.umd.min.js.map +0 -1
- package/bundles/covalent-core-loading.umd.js +0 -1534
- package/bundles/covalent-core-loading.umd.js.map +0 -1
- package/bundles/covalent-core-loading.umd.min.js +0 -16
- package/bundles/covalent-core-loading.umd.min.js.map +0 -1
- package/bundles/covalent-core-media.umd.js +0 -749
- package/bundles/covalent-core-media.umd.js.map +0 -1
- package/bundles/covalent-core-media.umd.min.js +0 -16
- package/bundles/covalent-core-media.umd.min.js.map +0 -1
- package/bundles/covalent-core-nav-links.umd.js +0 -197
- package/bundles/covalent-core-nav-links.umd.js.map +0 -1
- package/bundles/covalent-core-nav-links.umd.min.js +0 -2
- package/bundles/covalent-core-nav-links.umd.min.js.map +0 -1
- package/bundles/covalent-core-notifications.umd.js +0 -275
- package/bundles/covalent-core-notifications.umd.js.map +0 -1
- package/bundles/covalent-core-notifications.umd.min.js +0 -2
- package/bundles/covalent-core-notifications.umd.min.js.map +0 -1
- package/bundles/covalent-core-paging.umd.js +0 -491
- package/bundles/covalent-core-paging.umd.js.map +0 -1
- package/bundles/covalent-core-paging.umd.min.js +0 -2
- package/bundles/covalent-core-paging.umd.min.js.map +0 -1
- package/bundles/covalent-core-sidesheet.umd.js +0 -145
- package/bundles/covalent-core-sidesheet.umd.js.map +0 -1
- package/bundles/covalent-core-sidesheet.umd.min.js +0 -2
- package/bundles/covalent-core-sidesheet.umd.min.js.map +0 -1
- package/bundles/covalent-core-steps.umd.js +0 -1756
- package/bundles/covalent-core-steps.umd.js.map +0 -1
- package/bundles/covalent-core-steps.umd.min.js +0 -16
- package/bundles/covalent-core-steps.umd.min.js.map +0 -1
- package/bundles/covalent-core-tab-select.umd.js +0 -732
- package/bundles/covalent-core-tab-select.umd.js.map +0 -1
- package/bundles/covalent-core-tab-select.umd.min.js +0 -16
- package/bundles/covalent-core-tab-select.umd.min.js.map +0 -1
- package/bundles/covalent-core-virtual-scroll.umd.js +0 -785
- package/bundles/covalent-core-virtual-scroll.umd.js.map +0 -1
- package/bundles/covalent-core-virtual-scroll.umd.min.js +0 -16
- package/bundles/covalent-core-virtual-scroll.umd.min.js.map +0 -1
- package/chips/README.md +0 -99
- package/chips/_chips-theme.scss +0 -87
- package/chips/chips.component.d.ts +0 -287
- package/chips/chips.component.scss +0 -147
- package/chips/chips.module.d.ts +0 -2
- package/chips/covalent-core-chips.d.ts +0 -4
- package/chips/covalent-core-chips.metadata.json +0 -1
- package/chips/index.d.ts +0 -1
- package/chips/package.json +0 -11
- package/chips/public-api.d.ts +0 -2
- package/data-table/README.md +0 -134
- package/data-table/_data-table-theme.scss +0 -115
- package/data-table/covalent-core-data-table.d.ts +0 -4
- package/data-table/covalent-core-data-table.metadata.json +0 -1
- package/data-table/data-table-cell/data-table-cell.component.d.ts +0 -22
- package/data-table/data-table-cell/data-table-cell.component.scss +0 -58
- package/data-table/data-table-column/data-table-column.component.d.ts +0 -63
- package/data-table/data-table-column/data-table-column.component.scss +0 -80
- package/data-table/data-table-row/data-table-row.component.d.ts +0 -20
- package/data-table/data-table-row/data-table-row.component.scss +0 -12
- package/data-table/data-table-table/data-table-table.component.d.ts +0 -6
- package/data-table/data-table-table/data-table-table.component.scss +0 -7
- package/data-table/data-table.component.d.ts +0 -356
- package/data-table/data-table.component.scss +0 -93
- package/data-table/data-table.module.d.ts +0 -2
- package/data-table/directives/data-table-template.directive.d.ts +0 -6
- package/data-table/index.d.ts +0 -1
- package/data-table/package.json +0 -11
- package/data-table/public-api.d.ts +0 -8
- package/data-table/services/data-table.service.d.ts +0 -31
- package/esm2015/chips/chips.component.js +0 -1115
- package/esm2015/chips/chips.module.js +0 -23
- package/esm2015/chips/covalent-core-chips.js +0 -10
- package/esm2015/chips/index.js +0 -7
- package/esm2015/chips/public-api.js +0 -8
- package/esm2015/data-table/covalent-core-data-table.js +0 -10
- package/esm2015/data-table/data-table-cell/data-table-cell.component.js +0 -88
- package/esm2015/data-table/data-table-column/data-table-column.component.js +0 -218
- package/esm2015/data-table/data-table-row/data-table-row.component.js +0 -132
- package/esm2015/data-table/data-table-table/data-table-table.component.js +0 -43
- package/esm2015/data-table/data-table.component.js +0 -1640
- package/esm2015/data-table/data-table.module.js +0 -39
- package/esm2015/data-table/directives/data-table-template.directive.js +0 -32
- package/esm2015/data-table/index.js +0 -7
- package/esm2015/data-table/public-api.js +0 -14
- package/esm2015/data-table/services/data-table.service.js +0 -116
- package/esm2015/expansion-panel/covalent-core-expansion-panel.js +0 -10
- package/esm2015/expansion-panel/expansion-panel-group.component.js +0 -212
- package/esm2015/expansion-panel/expansion-panel.component.js +0 -272
- package/esm2015/expansion-panel/expansion-panel.module.js +0 -31
- package/esm2015/expansion-panel/index.js +0 -7
- package/esm2015/expansion-panel/public-api.js +0 -9
- package/esm2015/loading/covalent-core-loading.js +0 -10
- package/esm2015/loading/directives/loading.directive.js +0 -231
- package/esm2015/loading/index.js +0 -7
- package/esm2015/loading/loading.component.js +0 -302
- package/esm2015/loading/loading.module.js +0 -30
- package/esm2015/loading/public-api.js +0 -11
- package/esm2015/loading/services/loading.factory.js +0 -297
- package/esm2015/loading/services/loading.service.js +0 -319
- package/esm2015/media/covalent-core-media.js +0 -10
- package/esm2015/media/directives/media-toggle.directive.js +0 -207
- package/esm2015/media/index.js +0 -7
- package/esm2015/media/media.module.js +0 -20
- package/esm2015/media/public-api.js +0 -9
- package/esm2015/media/services/media.service.js +0 -169
- package/esm2015/nav-links/covalent-core-nav-links.js +0 -10
- package/esm2015/nav-links/index.js +0 -7
- package/esm2015/nav-links/nav-links.component.js +0 -138
- package/esm2015/nav-links/nav-links.module.js +0 -37
- package/esm2015/nav-links/public-api.js +0 -8
- package/esm2015/notifications/covalent-core-notifications.js +0 -10
- package/esm2015/notifications/index.js +0 -7
- package/esm2015/notifications/notification-count.component.js +0 -191
- package/esm2015/notifications/notifications.module.js +0 -20
- package/esm2015/notifications/public-api.js +0 -8
- package/esm2015/paging/covalent-core-paging.js +0 -10
- package/esm2015/paging/index.js +0 -7
- package/esm2015/paging/paging-bar.component.js +0 -412
- package/esm2015/paging/paging.module.js +0 -20
- package/esm2015/paging/public-api.js +0 -8
- package/esm2015/sidesheet/covalent-core-sidesheet.js +0 -10
- package/esm2015/sidesheet/index.js +0 -7
- package/esm2015/sidesheet/public-api.js +0 -8
- package/esm2015/sidesheet/sidesheet.component.js +0 -72
- package/esm2015/sidesheet/sidesheet.module.js +0 -27
- package/esm2015/steps/covalent-core-steps.js +0 -10
- package/esm2015/steps/index.js +0 -7
- package/esm2015/steps/nav/nav-step-link/nav-step-link.component.js +0 -144
- package/esm2015/steps/nav/nav-steps-horizontal/nav-steps-horizontal.component.js +0 -371
- package/esm2015/steps/nav/nav-steps-vertical/nav-steps-vertical.component.js +0 -130
- package/esm2015/steps/public-api.js +0 -14
- package/esm2015/steps/step-body/step-body.component.js +0 -83
- package/esm2015/steps/step-header/step-header.component.js +0 -79
- package/esm2015/steps/step.component.js +0 -312
- package/esm2015/steps/steps.component.js +0 -234
- package/esm2015/steps/steps.module.js +0 -44
- package/esm2015/tab-select/covalent-core-tab-select.js +0 -10
- package/esm2015/tab-select/index.js +0 -7
- package/esm2015/tab-select/public-api.js +0 -9
- package/esm2015/tab-select/tab-option.component.js +0 -82
- package/esm2015/tab-select/tab-select.component.js +0 -291
- package/esm2015/tab-select/tab-select.module.js +0 -31
- package/esm2015/virtual-scroll/covalent-core-virtual-scroll.js +0 -10
- package/esm2015/virtual-scroll/index.js +0 -7
- package/esm2015/virtual-scroll/public-api.js +0 -9
- package/esm2015/virtual-scroll/virtual-scroll-container.component.js +0 -391
- package/esm2015/virtual-scroll/virtual-scroll-row.directive.js +0 -25
- package/esm2015/virtual-scroll/virtual-scroll.module.js +0 -21
- package/expansion-panel/README.md +0 -116
- package/expansion-panel/_expansion-panel-theme.scss +0 -80
- package/expansion-panel/covalent-core-expansion-panel.d.ts +0 -4
- package/expansion-panel/covalent-core-expansion-panel.metadata.json +0 -1
- package/expansion-panel/expansion-panel-group.component.d.ts +0 -31
- package/expansion-panel/expansion-panel-group.component.scss +0 -0
- package/expansion-panel/expansion-panel.component.d.ts +0 -82
- package/expansion-panel/expansion-panel.component.scss +0 -50
- package/expansion-panel/expansion-panel.module.d.ts +0 -2
- package/expansion-panel/index.d.ts +0 -1
- package/expansion-panel/package.json +0 -11
- package/expansion-panel/public-api.d.ts +0 -3
- package/fesm2015/covalent-core-chips.js +0 -1151
- package/fesm2015/covalent-core-chips.js.map +0 -1
- package/fesm2015/covalent-core-data-table.js +0 -2309
- package/fesm2015/covalent-core-data-table.js.map +0 -1
- package/fesm2015/covalent-core-expansion-panel.js +0 -528
- package/fesm2015/covalent-core-expansion-panel.js.map +0 -1
- package/fesm2015/covalent-core-loading.js +0 -1179
- package/fesm2015/covalent-core-loading.js.map +0 -1
- package/fesm2015/covalent-core-media.js +0 -411
- package/fesm2015/covalent-core-media.js.map +0 -1
- package/fesm2015/covalent-core-nav-links.js +0 -193
- package/fesm2015/covalent-core-nav-links.js.map +0 -1
- package/fesm2015/covalent-core-notifications.js +0 -228
- package/fesm2015/covalent-core-notifications.js.map +0 -1
- package/fesm2015/covalent-core-paging.js +0 -451
- package/fesm2015/covalent-core-paging.js.map +0 -1
- package/fesm2015/covalent-core-sidesheet.js +0 -118
- package/fesm2015/covalent-core-sidesheet.js.map +0 -1
- package/fesm2015/covalent-core-steps.js +0 -1384
- package/fesm2015/covalent-core-steps.js.map +0 -1
- package/fesm2015/covalent-core-tab-select.js +0 -416
- package/fesm2015/covalent-core-tab-select.js.map +0 -1
- package/fesm2015/covalent-core-virtual-scroll.js +0 -453
- package/fesm2015/covalent-core-virtual-scroll.js.map +0 -1
- package/loading/README.md +0 -180
- package/loading/_loading-theme.scss +0 -10
- package/loading/covalent-core-loading.d.ts +0 -4
- package/loading/covalent-core-loading.metadata.json +0 -1
- package/loading/directives/loading.directive.d.ts +0 -71
- package/loading/index.d.ts +0 -1
- package/loading/loading.component.d.ts +0 -87
- package/loading/loading.component.scss +0 -42
- package/loading/loading.module.d.ts +0 -2
- package/loading/package.json +0 -11
- package/loading/public-api.d.ts +0 -5
- package/loading/services/loading.factory.d.ts +0 -66
- package/loading/services/loading.service.d.ts +0 -118
- package/media/covalent-core-media.d.ts +0 -4
- package/media/covalent-core-media.metadata.json +0 -1
- package/media/directives/media-toggle.directive.d.ts +0 -42
- package/media/index.d.ts +0 -1
- package/media/media.module.d.ts +0 -2
- package/media/package.json +0 -11
- package/media/public-api.d.ts +0 -3
- package/media/services/media.service.d.ts +0 -31
- package/nav-links/README.md +0 -1
- package/nav-links/covalent-core-nav-links.d.ts +0 -4
- package/nav-links/covalent-core-nav-links.metadata.json +0 -1
- package/nav-links/index.d.ts +0 -1
- package/nav-links/nav-links.component.d.ts +0 -51
- package/nav-links/nav-links.component.scss +0 -15
- package/nav-links/nav-links.module.d.ts +0 -2
- package/nav-links/package.json +0 -11
- package/nav-links/public-api.d.ts +0 -2
- package/notifications/README.md +0 -69
- package/notifications/_notification-count-theme.scss +0 -27
- package/notifications/covalent-core-notifications.d.ts +0 -4
- package/notifications/covalent-core-notifications.metadata.json +0 -1
- package/notifications/index.d.ts +0 -1
- package/notifications/notification-count.component.d.ts +0 -74
- package/notifications/notification-count.component.scss +0 -90
- package/notifications/notifications.module.d.ts +0 -2
- package/notifications/package.json +0 -11
- package/notifications/public-api.d.ts +0 -2
- package/paging/README.md +0 -141
- package/paging/_paging-bar-theme.scss +0 -26
- package/paging/covalent-core-paging.d.ts +0 -4
- package/paging/covalent-core-paging.metadata.json +0 -1
- package/paging/index.d.ts +0 -1
- package/paging/package.json +0 -11
- package/paging/paging-bar.component.d.ts +0 -115
- package/paging/paging-bar.component.scss +0 -23
- package/paging/paging.module.d.ts +0 -2
- package/paging/public-api.d.ts +0 -2
- package/sidesheet/README.md +0 -68
- package/sidesheet/covalent-core-sidesheet.d.ts +0 -4
- package/sidesheet/covalent-core-sidesheet.metadata.json +0 -1
- package/sidesheet/index.d.ts +0 -1
- package/sidesheet/package.json +0 -11
- package/sidesheet/public-api.d.ts +0 -2
- package/sidesheet/sidesheet.component.d.ts +0 -13
- package/sidesheet/sidesheet.component.scss +0 -101
- package/sidesheet/sidesheet.module.d.ts +0 -2
- package/steps/README.md +0 -159
- package/steps/_steps-theme.scss +0 -108
- package/steps/covalent-core-steps.d.ts +0 -4
- package/steps/covalent-core-steps.metadata.json +0 -1
- package/steps/index.d.ts +0 -1
- package/steps/nav/README.md +0 -90
- package/steps/nav/nav-step-link/nav-step-link.component.d.ts +0 -42
- package/steps/nav/nav-step-link/nav-step-link.component.scss +0 -17
- package/steps/nav/nav-steps-horizontal/nav-steps-horizontal.component.d.ts +0 -79
- package/steps/nav/nav-steps-horizontal/nav-steps-horizontal.component.scss +0 -83
- package/steps/nav/nav-steps-vertical/nav-steps-vertical.component.d.ts +0 -18
- package/steps/nav/nav-steps-vertical/nav-steps-vertical.component.scss +0 -18
- package/steps/package.json +0 -11
- package/steps/public-api.d.ts +0 -8
- package/steps/step-body/step-body.component.d.ts +0 -25
- package/steps/step-body/step-body.component.scss +0 -29
- package/steps/step-header/step-header.component.d.ts +0 -35
- package/steps/step-header/step-header.component.scss +0 -90
- package/steps/step.component.d.ts +0 -97
- package/steps/steps.component.d.ts +0 -60
- package/steps/steps.component.scss +0 -55
- package/steps/steps.module.d.ts +0 -2
- package/tab-select/README.md +0 -93
- package/tab-select/covalent-core-tab-select.d.ts +0 -4
- package/tab-select/covalent-core-tab-select.metadata.json +0 -1
- package/tab-select/index.d.ts +0 -1
- package/tab-select/package.json +0 -11
- package/tab-select/public-api.d.ts +0 -3
- package/tab-select/tab-option.component.d.ts +0 -20
- package/tab-select/tab-option.component.scss +0 -0
- package/tab-select/tab-select.component.d.ts +0 -62
- package/tab-select/tab-select.component.scss +0 -3
- package/tab-select/tab-select.module.d.ts +0 -2
- package/virtual-scroll/README.md +0 -68
- package/virtual-scroll/covalent-core-virtual-scroll.d.ts +0 -4
- package/virtual-scroll/covalent-core-virtual-scroll.metadata.json +0 -1
- package/virtual-scroll/index.d.ts +0 -1
- package/virtual-scroll/package.json +0 -11
- package/virtual-scroll/public-api.d.ts +0 -3
- package/virtual-scroll/virtual-scroll-container.component.d.ts +0 -73
- package/virtual-scroll/virtual-scroll-container.component.scss +0 -7
- package/virtual-scroll/virtual-scroll-row.directive.d.ts +0 -5
- package/virtual-scroll/virtual-scroll.module.d.ts +0 -2
@@ -1,391 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview added by tsickle
|
3
|
-
* Generated from: virtual-scroll-container.component.ts
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
5
|
-
*/
|
6
|
-
import { Component, Input, Output, EventEmitter, ContentChild, ChangeDetectionStrategy, ChangeDetectorRef, QueryList, ViewChildren, ElementRef, HostListener, Renderer2, } from '@angular/core';
|
7
|
-
import { DomSanitizer } from '@angular/platform-browser';
|
8
|
-
import { Subject } from 'rxjs';
|
9
|
-
import { debounceTime } from 'rxjs/operators';
|
10
|
-
import { TdVirtualScrollRowDirective } from './virtual-scroll-row.directive';
|
11
|
-
/** @type {?} */
|
12
|
-
const TD_VIRTUAL_OFFSET = 2;
|
13
|
-
/** @type {?} */
|
14
|
-
const SCROLL_DEBOUNCE = 200;
|
15
|
-
/**
|
16
|
-
* @record
|
17
|
-
*/
|
18
|
-
export function ITdVirtualScrollBottomEvent() { }
|
19
|
-
if (false) {
|
20
|
-
/** @type {?} */
|
21
|
-
ITdVirtualScrollBottomEvent.prototype.lastRow;
|
22
|
-
/** @type {?} */
|
23
|
-
ITdVirtualScrollBottomEvent.prototype.lastIndex;
|
24
|
-
}
|
25
|
-
export class TdVirtualScrollContainerComponent {
|
26
|
-
/**
|
27
|
-
* @param {?} _elementRef
|
28
|
-
* @param {?} _domSanitizer
|
29
|
-
* @param {?} _renderer
|
30
|
-
* @param {?} _changeDetectorRef
|
31
|
-
*/
|
32
|
-
constructor(_elementRef, _domSanitizer, _renderer, _changeDetectorRef) {
|
33
|
-
this._elementRef = _elementRef;
|
34
|
-
this._domSanitizer = _domSanitizer;
|
35
|
-
this._renderer = _renderer;
|
36
|
-
this._changeDetectorRef = _changeDetectorRef;
|
37
|
-
this._subs = [];
|
38
|
-
this._bottom = new Subject();
|
39
|
-
this._initialized = false;
|
40
|
-
this._totalHeight = 0;
|
41
|
-
this._hostHeight = 0;
|
42
|
-
this._scrollVerticalOffset = 0;
|
43
|
-
this._fromRow = 0;
|
44
|
-
this._toRow = 0;
|
45
|
-
/**
|
46
|
-
* bottom: function
|
47
|
-
* Method to be executed when user scrolled to the last item of the list.
|
48
|
-
* An [ITdVirtualScrollBottomEvent] event is emitted
|
49
|
-
*/
|
50
|
-
this.bottom = new EventEmitter();
|
51
|
-
/**
|
52
|
-
* trackBy?: TrackByFunction
|
53
|
-
* This accepts the same trackBy function [ngFor] does.
|
54
|
-
* https://angular.io/api/core/TrackByFunction
|
55
|
-
*/
|
56
|
-
this.trackBy = (/**
|
57
|
-
* @param {?} index
|
58
|
-
* @param {?} item
|
59
|
-
* @return {?}
|
60
|
-
*/
|
61
|
-
(index, item) => {
|
62
|
-
return item;
|
63
|
-
});
|
64
|
-
}
|
65
|
-
/**
|
66
|
-
* data: any[]
|
67
|
-
* List of items to virtually iterate on.
|
68
|
-
* @param {?} data
|
69
|
-
* @return {?}
|
70
|
-
*/
|
71
|
-
set data(data) {
|
72
|
-
this._data = data;
|
73
|
-
if (this._initialized) {
|
74
|
-
this._calculateVirtualRows();
|
75
|
-
}
|
76
|
-
this._changeDetectorRef.markForCheck();
|
77
|
-
}
|
78
|
-
/**
|
79
|
-
* @return {?}
|
80
|
-
*/
|
81
|
-
get data() {
|
82
|
-
return this._data;
|
83
|
-
}
|
84
|
-
/**
|
85
|
-
* @return {?}
|
86
|
-
*/
|
87
|
-
get virtualData() {
|
88
|
-
return this._virtualData;
|
89
|
-
}
|
90
|
-
/**
|
91
|
-
* @return {?}
|
92
|
-
*/
|
93
|
-
get rowHeight() {
|
94
|
-
if (this._rows && this._rows.toArray()[0]) {
|
95
|
-
return this._rows.toArray()[0].nativeElement.getBoundingClientRect().height;
|
96
|
-
}
|
97
|
-
return 0;
|
98
|
-
}
|
99
|
-
/**
|
100
|
-
* @return {?}
|
101
|
-
*/
|
102
|
-
get totalHeight() {
|
103
|
-
return this._totalHeight;
|
104
|
-
}
|
105
|
-
/**
|
106
|
-
* @return {?}
|
107
|
-
*/
|
108
|
-
get fromRow() {
|
109
|
-
return this._fromRow;
|
110
|
-
}
|
111
|
-
/**
|
112
|
-
* @return {?}
|
113
|
-
*/
|
114
|
-
get toRow() {
|
115
|
-
return this._toRow;
|
116
|
-
}
|
117
|
-
/**
|
118
|
-
* @return {?}
|
119
|
-
*/
|
120
|
-
get offsetTransform() {
|
121
|
-
return this._offsetTransform;
|
122
|
-
}
|
123
|
-
/**
|
124
|
-
* @return {?}
|
125
|
-
*/
|
126
|
-
ngAfterViewInit() {
|
127
|
-
this._subs.push(this._rows.changes.subscribe((/**
|
128
|
-
* @return {?}
|
129
|
-
*/
|
130
|
-
() => {
|
131
|
-
this._calculateVirtualRows();
|
132
|
-
})));
|
133
|
-
this._initialized = true;
|
134
|
-
this._calculateVirtualRows();
|
135
|
-
this._subs.push(this._bottom.pipe(debounceTime(SCROLL_DEBOUNCE)).subscribe((/**
|
136
|
-
* @return {?}
|
137
|
-
*/
|
138
|
-
() => {
|
139
|
-
this.bottom.emit({
|
140
|
-
lastRow: this._data[this._data.length - 1],
|
141
|
-
lastIndex: this.toRow,
|
142
|
-
});
|
143
|
-
})));
|
144
|
-
}
|
145
|
-
/**
|
146
|
-
* @return {?}
|
147
|
-
*/
|
148
|
-
ngAfterViewChecked() {
|
149
|
-
/** @type {?} */
|
150
|
-
const newHostHeight = this._elementRef.nativeElement.getBoundingClientRect().height;
|
151
|
-
if (this._hostHeight !== newHostHeight) {
|
152
|
-
this._hostHeight = newHostHeight;
|
153
|
-
if (this._initialized) {
|
154
|
-
this._calculateVirtualRows();
|
155
|
-
}
|
156
|
-
}
|
157
|
-
}
|
158
|
-
/**
|
159
|
-
* @return {?}
|
160
|
-
*/
|
161
|
-
ngOnDestroy() {
|
162
|
-
if (this._subs) {
|
163
|
-
this._subs.forEach((/**
|
164
|
-
* @param {?} sub
|
165
|
-
* @return {?}
|
166
|
-
*/
|
167
|
-
(sub) => {
|
168
|
-
sub.unsubscribe();
|
169
|
-
}));
|
170
|
-
}
|
171
|
-
}
|
172
|
-
/**
|
173
|
-
* @param {?} event
|
174
|
-
* @return {?}
|
175
|
-
*/
|
176
|
-
handleScroll(event) {
|
177
|
-
/** @type {?} */
|
178
|
-
const element = (/** @type {?} */ (event.target));
|
179
|
-
if (element) {
|
180
|
-
/** @type {?} */
|
181
|
-
const verticalScroll = element.scrollTop;
|
182
|
-
if (this._scrollVerticalOffset !== verticalScroll) {
|
183
|
-
this._scrollVerticalOffset = verticalScroll;
|
184
|
-
if (this._initialized) {
|
185
|
-
this._calculateVirtualRows();
|
186
|
-
}
|
187
|
-
}
|
188
|
-
if (this._initialized && this._data.length * this.rowHeight - (verticalScroll + this._hostHeight) === 0) {
|
189
|
-
// check to see if bottom was hit to throw the bottom event
|
190
|
-
this._bottom.next();
|
191
|
-
}
|
192
|
-
}
|
193
|
-
}
|
194
|
-
/**
|
195
|
-
* Method to refresh and recalculate the virtual rows
|
196
|
-
* e.g. after changing the [data] content
|
197
|
-
* @return {?}
|
198
|
-
*/
|
199
|
-
refresh() {
|
200
|
-
this._calculateVirtualRows();
|
201
|
-
}
|
202
|
-
/**
|
203
|
-
* Method to scroll to a specific row of the list.
|
204
|
-
* @param {?} row
|
205
|
-
* @return {?}
|
206
|
-
*/
|
207
|
-
scrollTo(row) {
|
208
|
-
this._elementRef.nativeElement.scrollTop = row * this.rowHeight;
|
209
|
-
this._changeDetectorRef.markForCheck();
|
210
|
-
}
|
211
|
-
/**
|
212
|
-
* Method to scroll to the start of the list.
|
213
|
-
* @return {?}
|
214
|
-
*/
|
215
|
-
scrollToStart() {
|
216
|
-
this.scrollTo(0);
|
217
|
-
this._changeDetectorRef.markForCheck();
|
218
|
-
}
|
219
|
-
/**
|
220
|
-
* Method to scroll to the end of the list.
|
221
|
-
* @return {?}
|
222
|
-
*/
|
223
|
-
scrollToEnd() {
|
224
|
-
this.scrollTo(this.totalHeight / this.rowHeight);
|
225
|
-
this._changeDetectorRef.markForCheck();
|
226
|
-
}
|
227
|
-
/**
|
228
|
-
* @private
|
229
|
-
* @return {?}
|
230
|
-
*/
|
231
|
-
_calculateVirtualRows() {
|
232
|
-
if (this._data) {
|
233
|
-
this._totalHeight = this._data.length * this.rowHeight;
|
234
|
-
/** @type {?} */
|
235
|
-
const fromRow = Math.floor(this._scrollVerticalOffset / this.rowHeight) - TD_VIRTUAL_OFFSET;
|
236
|
-
this._fromRow = fromRow > 0 ? fromRow : 0;
|
237
|
-
/** @type {?} */
|
238
|
-
const range = Math.floor(this._hostHeight / this.rowHeight) + TD_VIRTUAL_OFFSET * 2;
|
239
|
-
/** @type {?} */
|
240
|
-
let toRow = range + this.fromRow;
|
241
|
-
if (isFinite(toRow) && toRow > this._data.length) {
|
242
|
-
toRow = this._data.length;
|
243
|
-
}
|
244
|
-
else if (!isFinite(toRow)) {
|
245
|
-
toRow = TD_VIRTUAL_OFFSET;
|
246
|
-
}
|
247
|
-
this._toRow = toRow;
|
248
|
-
}
|
249
|
-
else {
|
250
|
-
this._totalHeight = 0;
|
251
|
-
this._fromRow = 0;
|
252
|
-
this._toRow = 0;
|
253
|
-
}
|
254
|
-
/** @type {?} */
|
255
|
-
let offset = 0;
|
256
|
-
if (this._scrollVerticalOffset > TD_VIRTUAL_OFFSET * this.rowHeight) {
|
257
|
-
offset = this.fromRow * this.rowHeight;
|
258
|
-
}
|
259
|
-
this._offsetTransform = this._domSanitizer.bypassSecurityTrustStyle('translateY(' + (offset - this.totalHeight) + 'px)');
|
260
|
-
if (this._data) {
|
261
|
-
this._virtualData = this.data.slice(this.fromRow, this.toRow);
|
262
|
-
}
|
263
|
-
// mark for check at the end of the queue so we are sure
|
264
|
-
// that the changes will be marked
|
265
|
-
Promise.resolve().then((/**
|
266
|
-
* @return {?}
|
267
|
-
*/
|
268
|
-
() => {
|
269
|
-
this._changeDetectorRef.markForCheck();
|
270
|
-
}));
|
271
|
-
}
|
272
|
-
}
|
273
|
-
TdVirtualScrollContainerComponent.decorators = [
|
274
|
-
{ type: Component, args: [{
|
275
|
-
selector: 'td-virtual-scroll-container',
|
276
|
-
template: "<div [style.height.px]=\"totalHeight\"></div>\n<div [style.transform]=\"offsetTransform\" [style.position]=\"'absolute'\" [style.width.%]=\"100\">\n <ng-template let-row let-index=\"index\" ngFor [ngForOf]=\"virtualData\" [ngForTrackBy]=\"trackBy\">\n <div #rowElement [style.width.%]=\"100\">\n <ng-template\n *ngIf=\"_rowTemplate\"\n [ngTemplateOutlet]=\"_rowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{\n row: row,\n index: fromRow + index,\n first: fromRow + index === 0,\n last: fromRow + index === data.length - 1,\n odd: (fromRow + index + 1) % 2 === 1,\n even: (fromRow + index + 1) % 2 === 0\n }\"\n ></ng-template>\n </div>\n </ng-template>\n</div>\n",
|
277
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
278
|
-
styles: [":host{display:block;height:100%;overflow:auto;position:relative;width:100%}"]
|
279
|
-
}] }
|
280
|
-
];
|
281
|
-
/** @nocollapse */
|
282
|
-
TdVirtualScrollContainerComponent.ctorParameters = () => [
|
283
|
-
{ type: ElementRef },
|
284
|
-
{ type: DomSanitizer },
|
285
|
-
{ type: Renderer2 },
|
286
|
-
{ type: ChangeDetectorRef }
|
287
|
-
];
|
288
|
-
TdVirtualScrollContainerComponent.propDecorators = {
|
289
|
-
data: [{ type: Input, args: ['data',] }],
|
290
|
-
bottom: [{ type: Output }],
|
291
|
-
_rows: [{ type: ViewChildren, args: ['rowElement',] }],
|
292
|
-
_rowTemplate: [{ type: ContentChild, args: [TdVirtualScrollRowDirective,] }],
|
293
|
-
trackBy: [{ type: Input }],
|
294
|
-
handleScroll: [{ type: HostListener, args: ['scroll', ['$event'],] }]
|
295
|
-
};
|
296
|
-
if (false) {
|
297
|
-
/**
|
298
|
-
* @type {?}
|
299
|
-
* @private
|
300
|
-
*/
|
301
|
-
TdVirtualScrollContainerComponent.prototype._subs;
|
302
|
-
/**
|
303
|
-
* @type {?}
|
304
|
-
* @private
|
305
|
-
*/
|
306
|
-
TdVirtualScrollContainerComponent.prototype._bottom;
|
307
|
-
/**
|
308
|
-
* @type {?}
|
309
|
-
* @private
|
310
|
-
*/
|
311
|
-
TdVirtualScrollContainerComponent.prototype._initialized;
|
312
|
-
/**
|
313
|
-
* @type {?}
|
314
|
-
* @private
|
315
|
-
*/
|
316
|
-
TdVirtualScrollContainerComponent.prototype._totalHeight;
|
317
|
-
/**
|
318
|
-
* @type {?}
|
319
|
-
* @private
|
320
|
-
*/
|
321
|
-
TdVirtualScrollContainerComponent.prototype._hostHeight;
|
322
|
-
/**
|
323
|
-
* @type {?}
|
324
|
-
* @private
|
325
|
-
*/
|
326
|
-
TdVirtualScrollContainerComponent.prototype._scrollVerticalOffset;
|
327
|
-
/**
|
328
|
-
* @type {?}
|
329
|
-
* @private
|
330
|
-
*/
|
331
|
-
TdVirtualScrollContainerComponent.prototype._offsetTransform;
|
332
|
-
/**
|
333
|
-
* @type {?}
|
334
|
-
* @private
|
335
|
-
*/
|
336
|
-
TdVirtualScrollContainerComponent.prototype._fromRow;
|
337
|
-
/**
|
338
|
-
* @type {?}
|
339
|
-
* @private
|
340
|
-
*/
|
341
|
-
TdVirtualScrollContainerComponent.prototype._toRow;
|
342
|
-
/**
|
343
|
-
* @type {?}
|
344
|
-
* @private
|
345
|
-
*/
|
346
|
-
TdVirtualScrollContainerComponent.prototype._data;
|
347
|
-
/**
|
348
|
-
* @type {?}
|
349
|
-
* @private
|
350
|
-
*/
|
351
|
-
TdVirtualScrollContainerComponent.prototype._virtualData;
|
352
|
-
/**
|
353
|
-
* bottom: function
|
354
|
-
* Method to be executed when user scrolled to the last item of the list.
|
355
|
-
* An [ITdVirtualScrollBottomEvent] event is emitted
|
356
|
-
* @type {?}
|
357
|
-
*/
|
358
|
-
TdVirtualScrollContainerComponent.prototype.bottom;
|
359
|
-
/** @type {?} */
|
360
|
-
TdVirtualScrollContainerComponent.prototype._rows;
|
361
|
-
/** @type {?} */
|
362
|
-
TdVirtualScrollContainerComponent.prototype._rowTemplate;
|
363
|
-
/**
|
364
|
-
* trackBy?: TrackByFunction
|
365
|
-
* This accepts the same trackBy function [ngFor] does.
|
366
|
-
* https://angular.io/api/core/TrackByFunction
|
367
|
-
* @type {?}
|
368
|
-
*/
|
369
|
-
TdVirtualScrollContainerComponent.prototype.trackBy;
|
370
|
-
/**
|
371
|
-
* @type {?}
|
372
|
-
* @private
|
373
|
-
*/
|
374
|
-
TdVirtualScrollContainerComponent.prototype._elementRef;
|
375
|
-
/**
|
376
|
-
* @type {?}
|
377
|
-
* @private
|
378
|
-
*/
|
379
|
-
TdVirtualScrollContainerComponent.prototype._domSanitizer;
|
380
|
-
/**
|
381
|
-
* @type {?}
|
382
|
-
* @private
|
383
|
-
*/
|
384
|
-
TdVirtualScrollContainerComponent.prototype._renderer;
|
385
|
-
/**
|
386
|
-
* @type {?}
|
387
|
-
* @private
|
388
|
-
*/
|
389
|
-
TdVirtualScrollContainerComponent.prototype._changeDetectorRef;
|
390
|
-
}
|
391
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1zY3JvbGwtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi9zcmMvcGxhdGZvcm0vY29yZS92aXJ0dWFsLXNjcm9sbC8iLCJzb3VyY2VzIjpbInZpcnR1YWwtc2Nyb2xsLWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFlBQVksRUFHWix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixTQUFTLEdBSVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBYSxNQUFNLDJCQUEyQixDQUFDO0FBRXBFLE9BQU8sRUFBZ0IsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7TUFFdkUsaUJBQWlCLEdBQVcsQ0FBQzs7TUFDN0IsZUFBZSxHQUFXLEdBQUc7Ozs7QUFFbkMsaURBR0M7OztJQUZDLDhDQUFhOztJQUNiLGdEQUFrQjs7QUFTcEIsTUFBTSxPQUFPLGlDQUFpQzs7Ozs7OztJQXNFNUMsWUFDVSxXQUF1QixFQUN2QixhQUEyQixFQUMzQixTQUFvQixFQUNwQixrQkFBcUM7UUFIckMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBekV2QyxVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUMzQixZQUFPLEdBQWlCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDdEMsaUJBQVksR0FBWSxL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SyxTQUFDLE1BQU07cUJBcUJaLE1BQU07b0JBRU4sWUFBWSxTQUFDLFlBQVk7MkJBRXpCLFlBQVksU0FBQywyQkFBMkI7c0JBMEV4QyxLQUFLOzJCQUlMLFlBQVksU0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7Ozs7Ozs7SUExSGxDLGtEQUFtQzs7Ozs7SUFDbkMsb0RBQThDOzs7OztJQUM5Qyx5REFBc0M7Ozs7O0lBRXRDLHlEQUFpQzs7Ozs7SUFDakMsd0RBQWdDOzs7OztJQUNoQyxrRUFBMEM7Ozs7O0lBQzFDLDZEQUFvQzs7Ozs7SUFFcEMscURBQTZCOzs7OztJQUM3QixtREFBMkI7Ozs7O0lBRTNCLGtEQUFxQjs7Ozs7SUFDckIseURBQTRCOzs7Ozs7O0lBMkI1QixtREFBOEc7O0lBRTlHLGtEQUF5RDs7SUFFekQseURBQXFGOzs7Ozs7O0lBMEVyRixvREFFRTs7Ozs7SUFsREEsd0RBQStCOzs7OztJQUMvQiwwREFBbUM7Ozs7O0lBQ25DLHNEQUE0Qjs7Ozs7SUFDNUIsK0RBQTZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ29udGVudENoaWxkLFxuICBBZnRlclZpZXdJbml0LFxuICBWaWV3Q2hpbGQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgUmVuZGVyZXIyLFxuICBBZnRlclZpZXdDaGVja2VkLFxuICBPbkRlc3Ryb3ksXG4gIFRyYWNrQnlGdW5jdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVGRWaXJ0dWFsU2Nyb2xsUm93RGlyZWN0aXZlIH0gZnJvbSAnLi92aXJ0dWFsLXNjcm9sbC1yb3cuZGlyZWN0aXZlJztcblxuY29uc3QgVERfVklSVFVBTF9PRkZTRVQ6IG51bWJlciA9IDI7XG5jb25zdCBTQ1JPTExfREVCT1VOQ0U6IG51bWJlciA9IDIwMDtcblxuZXhwb3J0IGludGVyZmFjZSBJVGRWaXJ0dWFsU2Nyb2xsQm90dG9tRXZlbnQge1xuICBsYXN0Um93OiBhbnk7XG4gIGxhc3RJbmRleDogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZC12aXJ0dWFsLXNjcm9sbC1jb250YWluZXInLFxuICBzdHlsZVVybHM6IFsnLi92aXJ0dWFsLXNjcm9sbC1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpcnR1YWwtc2Nyb2xsLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUZFZpcnR1YWxTY3JvbGxDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIF9ib3R0b206IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2luaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfdG90YWxIZWlnaHQ6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX2hvc3RIZWlnaHQ6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX3Njcm9sbFZlcnRpY2FsT2Zmc2V0OiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9vZmZzZXRUcmFuc2Zvcm06IFNhZmVTdHlsZTtcblxuICBwcml2YXRlIF9mcm9tUm93OiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF90b1JvdzogbnVtYmVyID0gMDtcblxuICBwcml2YXRlIF9kYXRhOiBhbnlbXTtcbiAgcHJpdmF0ZSBfdmlydHVhbERhdGE6IGFueVtdO1xuXG4gIC8qKlxuICAgKiBkYXRhOiBhbnlbXVxuICAgKiBMaXN0IG9mIGl0ZW1zIHRvIHZpcnR1YWxseSBpdGVyYXRlIG9uLlxuICAgKi9cbiAgQElucHV0KCdkYXRhJylcbiAgc2V0IGRhdGEoZGF0YTogYW55W10pIHtcbiAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuX2NhbGN1bGF0ZVZpcnR1YWxSb3dzKCk7XG4gICAgfVxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG4gIGdldCBkYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuXG4gIGdldCB2aXJ0dWFsRGF0YSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpcnR1YWxEYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIGJvdHRvbTogZnVuY3Rpb25cbiAgICogTWV0aG9kIHRvIGJlIGV4ZWN1dGVkIHdoZW4gdXNlciBzY3JvbGxlZCB0byB0aGUgbGFzdCBpdGVtIG9mIHRoZSBsaXN0LlxuICAgKiBBbiBbSVRkVmlydHVhbFNjcm9sbEJvdHRvbUV2ZW50XSBldmVudCBpcyBlbWl0dGVkXG4gICAqL1xuICBAT3V0cHV0KCkgYm90dG9tOiBFdmVudEVtaXR0ZXI8SVRkVmlydHVhbFNjcm9sbEJvdHRvbUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SVRkVmlydHVhbFNjcm9sbEJvdHRvbUV2ZW50PigpO1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ3Jvd0VsZW1lbnQnKSBfcm93czogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gIEBDb250ZW50Q2hpbGQoVGRWaXJ0dWFsU2Nyb2xsUm93RGlyZWN0aXZlKSBfcm93VGVtcGxhdGU6IFRkVmlydHVhbFNjcm9sbFJvd0RpcmVjdGl2ZTtcblxuICBnZXQgcm93SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuX3Jvd3MgJiYgdGhpcy5fcm93cy50b0FycmF5KClbMF0pIHtcbiAgICAgIHJldHVybiB0aGlzLl9yb3dzLnRvQXJyYXkoKVswXS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBnZXQgdG90YWxIZWlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWxIZWlnaHQ7XG4gIH1cblxuICBnZXQgZnJvbVJvdygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9mcm9tUm93O1xuICB9XG5cbiAgZ2V0IHRvUm93KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RvUm93O1xuICB9XG5cbiAgZ2V0IG9mZnNldFRyYW5zZm9ybSgpOiBTYWZlU3R5bGUge1xuICAgIHJldHVybiB0aGlzLl9vZmZzZXRUcmFuc2Zvcm07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX2RvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgIHRoaXMuX3Jvd3MuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVWaXJ0dWFsUm93cygpO1xuICAgICAgfSksXG4gICAgKTtcbiAgICB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy5fY2FsY3VsYXRlVmlydHVhbFJvd3MoKTtcblxuICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgIHRoaXMuX2JvdHRvbS5waXBlKGRlYm91bmNlVGltZShTQ1JPTExfREVCT1VOQ0UpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmJvdHRvbS5lbWl0KHtcbiAgICAgICAgICBsYXN0Um93OiB0aGlzLl9kYXRhW3RoaXMuX2RhdGEubGVuZ3RoIC0gMV0sXG4gICAgICAgICAgbGFzdEluZGV4OiB0aGlzLnRvUm93LFxuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgY29uc3QgbmV3SG9zdEhlaWdodDogbnVtYmVyID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICBpZiAodGhpcy5faG9zdEhlaWdodCAhPT0gbmV3SG9zdEhlaWdodCkge1xuICAgICAgdGhpcy5faG9zdEhlaWdodCA9IG5ld0hvc3RIZWlnaHQ7XG4gICAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlVmlydHVhbFJvd3MoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc3Vicykge1xuICAgICAgdGhpcy5fc3Vicy5mb3JFYWNoKChzdWI6IFN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiB0cmFja0J5PzogVHJhY2tCeUZ1bmN0aW9uXG4gICAqIFRoaXMgYWNjZXB0cyB0aGUgc2FtZSB0cmFja0J5IGZ1bmN0aW9uIFtuZ0Zvcl0gZG9lcy5cbiAgICogaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb3JlL1RyYWNrQnlGdW5jdGlvblxuICAgKi9cbiAgQElucHV0KCkgdHJhY2tCeTogVHJhY2tCeUZ1bmN0aW9uPGFueT4gPSAoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSA9PiB7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH07XG5cbiAgQEhvc3RMaXN0ZW5lcignc2Nyb2xsJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlU2Nyb2xsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gPEhUTUxFbGVtZW50PmV2ZW50LnRhcmdldDtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgY29uc3QgdmVydGljYWxTY3JvbGw6IG51bWJlciA9IGVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgICAgaWYgKHRoaXMuX3Njcm9sbFZlcnRpY2FsT2Zmc2V0ICE9PSB2ZXJ0aWNhbFNjcm9sbCkge1xuICAgICAgICB0aGlzLl9zY3JvbGxWZXJ0aWNhbE9mZnNldCA9IHZlcnRpY2FsU2Nyb2xsO1xuICAgICAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVWaXJ0dWFsUm93cygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQgJiYgdGhpcy5fZGF0YS5sZW5ndGggKiB0aGlzLnJvd0hlaWdodCAtICh2ZXJ0aWNhbFNjcm9sbCArIHRoaXMuX2hvc3RIZWlnaHQpID09PSAwKSB7XG4gICAgICAgIC8vIGNoZWNrIHRvIHNlZSBpZiBib3R0b20gd2FzIGhpdCB0byB0aHJvdyB0aGUgYm90dG9tIGV2ZW50XG4gICAgICAgIHRoaXMuX2JvdHRvbS5uZXh0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byByZWZyZXNoIGFuZCByZWNhbGN1bGF0ZSB0aGUgdmlydHVhbCByb3dzXG4gICAqIGUuZy4gYWZ0ZXIgY2hhbmdpbmcgdGhlIFtkYXRhXSBjb250ZW50XG4gICAqL1xuICByZWZyZXNoKCk6IHZvaWQge1xuICAgIHRoaXMuX2NhbGN1bGF0ZVZpcnR1YWxSb3dzKCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIHNjcm9sbCB0byBhIHNwZWNpZmljIHJvdyBvZiB0aGUgbGlzdC5cbiAgICovXG4gIHNjcm9sbFRvKHJvdzogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHJvdyAqIHRoaXMucm93SGVpZ2h0O1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBzY3JvbGwgdG8gdGhlIHN0YXJ0IG9mIHRoZSBsaXN0LlxuICAgKi9cbiAgc2Nyb2xsVG9TdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbFRvKDApO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBzY3JvbGwgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC5cbiAgICovXG4gIHNjcm9sbFRvRW5kKCk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsVG8odGhpcy50b3RhbEhlaWdodCAvIHRoaXMucm93SGVpZ2h0KTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NhbGN1bGF0ZVZpcnR1YWxSb3dzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kYXRhKSB7XG4gICAgICB0aGlzLl90b3RhbEhlaWdodCA9IHRoaXMuX2RhdGEubGVuZ3RoICogdGhpcy5yb3dIZWlnaHQ7XG4gICAgICBjb25zdCBmcm9tUm93OiBudW1iZXIgPSBNYXRoLmZsb29yKHRoaXMuX3Njcm9sbFZlcnRpY2FsT2Zmc2V0IC8gdGhpcy5yb3dIZWlnaHQpIC0gVERfVklSVFVBTF9PRkZTRVQ7XG4gICAgICB0aGlzLl9mcm9tUm93ID0gZnJvbVJvdyA+IDAgPyBmcm9tUm93IDogMDtcbiAgICAgIGNvbnN0IHJhbmdlOiBudW1iZXIgPSBNYXRoLmZsb29yKHRoaXMuX2hvc3RIZWlnaHQgLyB0aGlzLnJvd0hlaWdodCkgKyBURF9WSVJUVUFMX09GRlNFVCAqIDI7XG4gICAgICBsZXQgdG9Sb3c6IG51bWJlciA9IHJhbmdlICsgdGhpcy5mcm9tUm93O1xuICAgICAgaWYgKGlzRmluaXRlKHRvUm93KSAmJiB0b1JvdyA+IHRoaXMuX2RhdGEubGVuZ3RoKSB7XG4gICAgICAgIHRvUm93ID0gdGhpcy5fZGF0YS5sZW5ndGg7XG4gICAgICB9IGVsc2UgaWYgKCFpc0Zpbml0ZSh0b1JvdykpIHtcbiAgICAgICAgdG9Sb3cgPSBURF9WSVJUVUFMX09GRlNFVDtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3RvUm93ID0gdG9Sb3c7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3RvdGFsSGVpZ2h0ID0gMDtcbiAgICAgIHRoaXMuX2Zyb21Sb3cgPSAwO1xuICAgICAgdGhpcy5fdG9Sb3cgPSAwO1xuICAgIH1cblxuICAgIGxldCBvZmZzZXQ6IG51bWJlciA9IDA7XG4gICAgaWYgKHRoaXMuX3Njcm9sbFZlcnRpY2FsT2Zmc2V0ID4gVERfVklSVFVBTF9PRkZTRVQgKiB0aGlzLnJvd0hlaWdodCkge1xuICAgICAgb2Zmc2V0ID0gdGhpcy5mcm9tUm93ICogdGhpcy5yb3dIZWlnaHQ7XG4gICAgfVxuXG4gICAgdGhpcy5fb2Zmc2V0VHJhbnNmb3JtID0gdGhpcy5fZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShcbiAgICAgICd0cmFuc2xhdGVZKCcgKyAob2Zmc2V0IC0gdGhpcy50b3RhbEhlaWdodCkgKyAncHgpJyxcbiAgICApO1xuICAgIGlmICh0aGlzLl9kYXRhKSB7XG4gICAgICB0aGlzLl92aXJ0dWFsRGF0YSA9IHRoaXMuZGF0YS5zbGljZSh0aGlzLmZyb21Sb3csIHRoaXMudG9Sb3cpO1xuICAgIH1cblxuICAgIC8vIG1hcmsgZm9yIGNoZWNrIGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVlIHNvIHdlIGFyZSBzdXJlXG4gICAgLy8gdGhhdCB0aGUgY2hhbmdlcyB3aWxsIGJlIG1hcmtlZFxuICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
@@ -1,25 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview added by tsickle
|
3
|
-
* Generated from: virtual-scroll-row.directive.ts
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
5
|
-
*/
|
6
|
-
import { Directive, TemplateRef, ViewContainerRef } from '@angular/core';
|
7
|
-
import { TemplatePortalDirective } from '@angular/cdk/portal';
|
8
|
-
export class TdVirtualScrollRowDirective extends TemplatePortalDirective {
|
9
|
-
/**
|
10
|
-
* @param {?} templateRef
|
11
|
-
* @param {?} viewContainerRef
|
12
|
-
*/
|
13
|
-
constructor(templateRef, viewContainerRef) {
|
14
|
-
super(templateRef, viewContainerRef);
|
15
|
-
}
|
16
|
-
}
|
17
|
-
TdVirtualScrollRowDirective.decorators = [
|
18
|
-
{ type: Directive, args: [{ selector: '[tdVirtualScrollRow]' },] }
|
19
|
-
];
|
20
|
-
/** @nocollapse */
|
21
|
-
TdVirtualScrollRowDirective.ctorParameters = () => [
|
22
|
-
{ type: TemplateRef },
|
23
|
-
{ type: ViewContainerRef }
|
24
|
-
];
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1zY3JvbGwtcm93LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi9zcmMvcGxhdGZvcm0vY29yZS92aXJ0dWFsLXNjcm9sbC8iLCJzb3VyY2VzIjpbInZpcnR1YWwtc2Nyb2xsLXJvdy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUc5RCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsdUJBQXVCOzs7OztJQUN0RSxZQUFZLFdBQTZCLEVBQUUsZ0JBQWtDO1FBQzNFLEtBQUssQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUN2QyxDQUFDOzs7WUFKRixTQUFTLFNBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7Ozs7WUFIM0IsV0FBVztZQUFFLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1t0ZFZpcnR1YWxTY3JvbGxSb3ddJyB9KVxuZXhwb3J0IGNsYXNzIFRkVmlydHVhbFNjcm9sbFJvd0RpcmVjdGl2ZSBleHRlbmRzIFRlbXBsYXRlUG9ydGFsRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICBzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XG4gIH1cbn1cbiJdfQ==
|
@@ -1,21 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview added by tsickle
|
3
|
-
* Generated from: virtual-scroll.module.ts
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
5
|
-
*/
|
6
|
-
import { NgModule } from '@angular/core';
|
7
|
-
import { CommonModule } from '@angular/common';
|
8
|
-
import { TdVirtualScrollRowDirective } from './virtual-scroll-row.directive';
|
9
|
-
import { TdVirtualScrollContainerComponent } from './virtual-scroll-container.component';
|
10
|
-
/** @type {?} */
|
11
|
-
const TD_VIRTUAL_SCROLL = [TdVirtualScrollRowDirective, TdVirtualScrollContainerComponent];
|
12
|
-
export class CovalentVirtualScrollModule {
|
13
|
-
}
|
14
|
-
CovalentVirtualScrollModule.decorators = [
|
15
|
-
{ type: NgModule, args: [{
|
16
|
-
imports: [CommonModule],
|
17
|
-
declarations: [TD_VIRTUAL_SCROLL],
|
18
|
-
exports: [TD_VIRTUAL_SCROLL],
|
19
|
-
},] }
|
20
|
-
];
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1zY3JvbGwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uL3NyYy9wbGF0Zm9ybS9jb3JlL3ZpcnR1YWwtc2Nyb2xsLyIsInNvdXJjZXMiOlsidmlydHVhbC1zY3JvbGwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7O01BRW5GLGlCQUFpQixHQUFnQixDQUFDLDJCQUEyQixFQUFFLGlDQUFpQyxDQUFDO0FBT3ZHLE1BQU0sT0FBTywyQkFBMkI7OztZQUx2QyxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2dCQUN2QixZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDakMsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7YUFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgVGRWaXJ0dWFsU2Nyb2xsUm93RGlyZWN0aXZlIH0gZnJvbSAnLi92aXJ0dWFsLXNjcm9sbC1yb3cuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRkVmlydHVhbFNjcm9sbENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vdmlydHVhbC1zY3JvbGwtY29udGFpbmVyLmNvbXBvbmVudCc7XG5cbmNvbnN0IFREX1ZJUlRVQUxfU0NST0xMOiBUeXBlPGFueT5bXSA9IFtUZFZpcnR1YWxTY3JvbGxSb3dEaXJlY3RpdmUsIFRkVmlydHVhbFNjcm9sbENvbnRhaW5lckNvbXBvbmVudF07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtURF9WSVJUVUFMX1NDUk9MTF0sXG4gIGV4cG9ydHM6IFtURF9WSVJUVUFMX1NDUk9MTF0sXG59KVxuZXhwb3J0IGNsYXNzIENvdmFsZW50VmlydHVhbFNjcm9sbE1vZHVsZSB7fVxuIl19
|
@@ -1,116 +0,0 @@
|
|
1
|
-
# td-expansion-panel
|
2
|
-
|
3
|
-
`td-expansion-panel` element adds expand/collapse features to your html blocks
|
4
|
-
|
5
|
-
It also contains an optional summary to display anything in collapsed state.
|
6
|
-
|
7
|
-
## API Summary
|
8
|
-
|
9
|
-
#### Inputs
|
10
|
-
|
11
|
-
+ label?: string
|
12
|
-
+ Sets label of component header.
|
13
|
-
+ sublabel?: string
|
14
|
-
+ Sets sublabel of component header.
|
15
|
-
+ expand?: boolean
|
16
|
-
+ Toggles component between expand/collapse state.
|
17
|
-
+ disableRipple?: boolean
|
18
|
-
+ Whether the ripple effect for this component is disabled.
|
19
|
-
|
20
|
-
#### Events
|
21
|
-
|
22
|
-
+ expanded: function
|
23
|
-
+ Event emitted when component is expanded.
|
24
|
-
+ collapsed: function
|
25
|
-
+ Event emitted when component is collapsed.
|
26
|
-
|
27
|
-
#### Methods
|
28
|
-
|
29
|
-
+ toggle: function
|
30
|
-
+ Toggle state of component. Returns "true" if successful, else "false".
|
31
|
-
+ open: function
|
32
|
-
+ Opens component and sets state to expanded. Returns "true" if successful, else "false".
|
33
|
-
+ close: function
|
34
|
-
+ Closes component and sets state to collapsed. Returns "true" if successful, else "false".
|
35
|
-
|
36
|
-
|
37
|
-
# td-expansion-panel-group
|
38
|
-
|
39
|
-
`td-expansion-panel-group` is used to group expansion panel components.
|
40
|
-
|
41
|
-
Setting the `multi` property to false allows for accordion mode, where only one panel is allowed to be open at a time.
|
42
|
-
|
43
|
-
Margin is added between the panels when expanded, following the material spec.
|
44
|
-
|
45
|
-
## API Summary
|
46
|
-
|
47
|
-
#### Inputs
|
48
|
-
|
49
|
-
+ multi?: boolean
|
50
|
-
+ Sets whether multiple panels can be opened at a given time.
|
51
|
-
+ Set to false for accordion mode.
|
52
|
-
+ Defaults to false.
|
53
|
-
|
54
|
-
#### Methods
|
55
|
-
|
56
|
-
+ openAll: function
|
57
|
-
+ Opens all expansion panels, only if multi set set to true.
|
58
|
-
+ closeAll: function
|
59
|
-
+ Closes all expansion panels.
|
60
|
-
|
61
|
-
## Setup
|
62
|
-
|
63
|
-
Import the [CovalentExpansionPanelModule] in your NgModule:
|
64
|
-
|
65
|
-
```typescript
|
66
|
-
import { CovalentExpansionPanelModule } from '@covalent/core/expansion-panel';
|
67
|
-
@NgModule({
|
68
|
-
imports: [
|
69
|
-
CovalentExpansionPanelModule,
|
70
|
-
...
|
71
|
-
],
|
72
|
-
...
|
73
|
-
})
|
74
|
-
export class MyModule {}
|
75
|
-
```
|
76
|
-
|
77
|
-
## Usage
|
78
|
-
|
79
|
-
Example for HTML usage:
|
80
|
-
|
81
|
-
```html
|
82
|
-
<td-expansion-panel
|
83
|
-
label="label"
|
84
|
-
sublabel="sublabel"
|
85
|
-
expand="true"
|
86
|
-
disabled="false"
|
87
|
-
(expanded)="expandedEvent()"
|
88
|
-
(collapsed)="collapsedEvent()"
|
89
|
-
[disableRipple]="false"
|
90
|
-
>
|
91
|
-
<ng-template td-expansion-panel-header>
|
92
|
-
... add header content (overrides label and sublabel)
|
93
|
-
</ng-template>
|
94
|
-
<ng-template td-expansion-panel-label>
|
95
|
-
... add label content (if not used, falls back to [label] input)
|
96
|
-
</ng-template>
|
97
|
-
<ng-template td-expansion-panel-sublabel>
|
98
|
-
... add sublabel content (if not used, falls back to [sublabel] input)
|
99
|
-
</ng-template>
|
100
|
-
<td-expansion-summary>
|
101
|
-
... add summary that will be shown when expansion-panel is "collapsed".
|
102
|
-
</td-expansion-summary>
|
103
|
-
... add content that
|
104
|
-
</td-expansion-panel>
|
105
|
-
```
|
106
|
-
|
107
|
-
```html
|
108
|
-
<td-expansion-panel-group [multi]="false">
|
109
|
-
<td-expansion-panel>
|
110
|
-
..content
|
111
|
-
</td-expansion-panel>
|
112
|
-
<td-expansion-panel>
|
113
|
-
..content
|
114
|
-
</td-expansion-panel>
|
115
|
-
</td-expansion-panel-group>
|
116
|
-
```
|
@@ -1,80 +0,0 @@
|
|
1
|
-
@import '../common/styles/variables';
|
2
|
-
@import '../common/styles/elevation';
|
3
|
-
@import '../common/styles/theme-functions';
|
4
|
-
@import '../common/styles/typography-functions';
|
5
|
-
|
6
|
-
@mixin td-expansion-panel-typography($config) {
|
7
|
-
.td-expansion-label {
|
8
|
-
font: {
|
9
|
-
family: td-font-family($config);
|
10
|
-
size: td-font-size($config, subheading-2);
|
11
|
-
weight: td-font-weight($config, subheading-2);
|
12
|
-
}
|
13
|
-
}
|
14
|
-
.td-expansion-sublabel {
|
15
|
-
font: {
|
16
|
-
family: td-font-family($config);
|
17
|
-
size: td-font-size($config, body-1);
|
18
|
-
weight: td-font-weight($config, body-1);
|
19
|
-
}
|
20
|
-
}
|
21
|
-
}
|
22
|
-
|
23
|
-
@mixin td-expansion-panel-theme($theme) {
|
24
|
-
$accent: map-get($theme, accent);
|
25
|
-
$warn: map-get($theme, warn);
|
26
|
-
$foreground: map-get($theme, foreground);
|
27
|
-
$background: map-get($theme, background);
|
28
|
-
|
29
|
-
.td-expansion-panel-group {
|
30
|
-
.td-expansion-panel {
|
31
|
-
transition: 120ms ease-in;
|
32
|
-
&:not(:last-of-type) {
|
33
|
-
&.td-expanded {
|
34
|
-
margin-bottom: $margin;
|
35
|
-
}
|
36
|
-
}
|
37
|
-
&:not(:first-of-type) {
|
38
|
-
&.td-expanded {
|
39
|
-
margin-top: $margin;
|
40
|
-
}
|
41
|
-
}
|
42
|
-
}
|
43
|
-
}
|
44
|
-
|
45
|
-
.td-expansion-panel {
|
46
|
-
@include mat-elevation(1);
|
47
|
-
|
48
|
-
background-color: mat-color($background, card);
|
49
|
-
.td-expansion-panel-header {
|
50
|
-
&:focus:not(.mat-disabled),
|
51
|
-
&:hover:not(.mat-disabled) {
|
52
|
-
background: mat-color($background, 'hover');
|
53
|
-
}
|
54
|
-
.td-expansion-panel-header-content {
|
55
|
-
mat-icon.td-expand-icon {
|
56
|
-
color: mat-color($foreground, icon);
|
57
|
-
}
|
58
|
-
&.mat-disabled {
|
59
|
-
&,
|
60
|
-
& * {
|
61
|
-
color: mat-color($foreground, disabled);
|
62
|
-
}
|
63
|
-
}
|
64
|
-
}
|
65
|
-
}
|
66
|
-
mat-icon.td-expand-icon {
|
67
|
-
color: mat-color($foreground, icon);
|
68
|
-
}
|
69
|
-
.td-expansion-label,
|
70
|
-
.td-expansion-sublabel {
|
71
|
-
&,
|
72
|
-
& * {
|
73
|
-
vertical-align: middle;
|
74
|
-
}
|
75
|
-
}
|
76
|
-
.td-expansion-sublabel {
|
77
|
-
color: mat-color($foreground, secondary-text);
|
78
|
-
}
|
79
|
-
}
|
80
|
-
}
|