@indice/ng-components 0.2.32 → 0.2.33
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/README.md +4 -4
- package/_styles.css +3457 -3457
- package/bundles/indice-ng-components.umd.js +3204 -3198
- package/bundles/indice-ng-components.umd.js.map +1 -1
- package/esm2015/indice-ng-components.js +6 -6
- package/esm2015/lib/controls/avatar-initials/avatar-initials.component.js +47 -47
- package/esm2015/lib/controls/collapsible-panel/collapsible-panel.component.js +20 -20
- package/esm2015/lib/controls/date-picker/date-picker.component.js +217 -217
- package/esm2015/lib/controls/drop-down-menu/drop-down-menu.component.js +62 -62
- package/esm2015/lib/controls/kpi-tile/kpi-tile.component.js +32 -32
- package/esm2015/lib/controls/list-view/list-column.component.js +19 -19
- package/esm2015/lib/controls/list-view/list-details-section.component.js +14 -14
- package/esm2015/lib/controls/list-view/list-tile.component.js +14 -14
- package/esm2015/lib/controls/list-view/list-view-empty-state.component.js +25 -25
- package/esm2015/lib/controls/list-view/list-view.component.js +133 -133
- package/esm2015/lib/controls/pager/pager.component.js +114 -114
- package/esm2015/lib/controls/side-pane/side-pane.component.js +71 -71
- package/esm2015/lib/controls/skeleton-loader/skeleton-loader.component.js +25 -25
- package/esm2015/lib/controls/toaster/toaster-container.component.js +28 -28
- package/esm2015/lib/controls/toaster/toaster.component.js +29 -29
- package/esm2015/lib/controls/toggle/toggle.component.js +56 -56
- package/esm2015/lib/directives/click-outside.directive.js +181 -181
- package/esm2015/lib/directives/dynamic-component-host.directive.js +17 -17
- package/esm2015/lib/helpers/base-list.component.js +182 -182
- package/esm2015/lib/icons.js +30 -30
- package/esm2015/lib/layouts/shell/shell-footer/shell-footer.component.js +17 -17
- package/esm2015/lib/layouts/shell/shell-header/shell-header.component.js +98 -98
- package/esm2015/lib/layouts/shell/shell-layout/shell-layout.component.js +92 -92
- package/esm2015/lib/layouts/views/form-layout/form-layout.component.js +72 -72
- package/esm2015/lib/layouts/views/model-view-layout/model-view-layout.component.js +47 -47
- package/esm2015/lib/layouts/views/side-view-layout/side-view-layout.component.js +73 -73
- package/esm2015/lib/layouts/views/view-layout/view-layout.component.js +87 -87
- package/esm2015/lib/ng-components.module.js +133 -133
- package/esm2015/lib/pages/auth/auth-callback/auth-callback.component.js +74 -74
- package/esm2015/lib/pages/auth/auth-renew/auth-renew.component.js +25 -25
- package/esm2015/lib/pages/auth/logged-out/logged-out.component.js +26 -26
- package/esm2015/lib/pages/http-status/error/error.component.js +15 -15
- package/esm2015/lib/pages/http-status/page-not-found/page-not-found.component.js +14 -14
- package/esm2015/lib/pages/http-status/unauthorized/unauthorized.component.js +22 -22
- package/esm2015/lib/pipes/address.pipe.js +17 -17
- package/esm2015/lib/pipes/duration-format.pipe.js +60 -60
- package/esm2015/lib/services/component-loader/component-loader-options.class.js +8 -8
- package/esm2015/lib/services/component-loader/component-loader.class.js +192 -192
- package/esm2015/lib/services/component-loader/component-loader.factory.js +35 -35
- package/esm2015/lib/services/component-loader/content-ref.class.js +13 -13
- package/esm2015/lib/services/modal-service/modal-backdrop-component.js +44 -44
- package/esm2015/lib/services/modal-service/modal-container-component.js +117 -117
- package/esm2015/lib/services/modal-service/modal-options.class.js +31 -31
- package/esm2015/lib/services/modal-service/modal-service.js +214 -214
- package/esm2015/lib/services/modal-service/modal-styles.class.js +11 -11
- package/esm2015/lib/services/modal-service/modal.class.js +24 -24
- package/esm2015/lib/services/toaster.service.js +23 -23
- package/esm2015/lib/tokens.js +4 -4
- package/esm2015/lib/types.js +104 -104
- package/esm2015/public-api.js +53 -53
- package/fesm2015/indice-ng-components.js +2758 -2758
- package/fesm2015/indice-ng-components.js.map +1 -1
- package/indice-ng-components.d.ts +6 -6
- package/indice-ng-components.metadata.json +1 -1
- package/lib/controls/avatar-initials/avatar-initials.component.d.ts +11 -11
- package/lib/controls/collapsible-panel/collapsible-panel.component.d.ts +7 -7
- package/lib/controls/date-picker/date-picker.component.d.ts +43 -43
- package/lib/controls/drop-down-menu/drop-down-menu.component.d.ts +22 -22
- package/lib/controls/kpi-tile/kpi-tile.component.d.ts +10 -10
- package/lib/controls/list-view/list-column.component.d.ts +6 -6
- package/lib/controls/list-view/list-details-section.component.d.ts +4 -4
- package/lib/controls/list-view/list-tile.component.d.ts +4 -4
- package/lib/controls/list-view/list-view-empty-state.component.d.ts +8 -8
- package/lib/controls/list-view/list-view.component.d.ts +50 -50
- package/lib/controls/pager/pager.component.d.ts +32 -32
- package/lib/controls/side-pane/side-pane.component.d.ts +15 -15
- package/lib/controls/skeleton-loader/skeleton-loader.component.d.ts +8 -8
- package/lib/controls/toaster/toaster-container.component.d.ts +10 -10
- package/lib/controls/toaster/toaster.component.d.ts +12 -12
- package/lib/controls/toggle/toggle.component.d.ts +16 -16
- package/lib/directives/click-outside.directive.d.ts +37 -37
- package/lib/directives/dynamic-component-host.directive.d.ts +6 -6
- package/lib/helpers/base-list.component.d.ts +39 -39
- package/lib/icons.d.ts +28 -28
- package/lib/layouts/shell/shell-footer/shell-footer.component.d.ts +5 -5
- package/lib/layouts/shell/shell-header/shell-header.component.d.ts +33 -33
- package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +23 -23
- package/lib/layouts/views/form-layout/form-layout.component.d.ts +21 -21
- package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +22 -22
- package/lib/layouts/views/side-view-layout/side-view-layout.component.d.ts +24 -24
- package/lib/layouts/views/view-layout/view-layout.component.d.ts +27 -27
- package/lib/ng-components.module.d.ts +7 -7
- package/lib/pages/auth/auth-callback/auth-callback.component.d.ts +11 -11
- package/lib/pages/auth/auth-renew/auth-renew.component.d.ts +9 -9
- package/lib/pages/auth/logged-out/logged-out.component.d.ts +9 -9
- package/lib/pages/http-status/error/error.component.d.ts +5 -5
- package/lib/pages/http-status/page-not-found/page-not-found.component.d.ts +5 -5
- package/lib/pages/http-status/unauthorized/unauthorized.component.d.ts +8 -8
- package/lib/pipes/address.pipe.d.ts +5 -5
- package/lib/pipes/duration-format.pipe.d.ts +5 -5
- package/lib/services/component-loader/component-loader-options.class.d.ts +30 -30
- package/lib/services/component-loader/component-loader.class.d.ts +92 -92
- package/lib/services/component-loader/component-loader.factory.d.ts +21 -21
- package/lib/services/component-loader/content-ref.class.d.ts +12 -12
- package/lib/services/modal-service/modal-backdrop-component.d.ts +17 -17
- package/lib/services/modal-service/modal-container-component.d.ts +30 -30
- package/lib/services/modal-service/modal-options.class.d.ts +77 -77
- package/lib/services/modal-service/modal-service.d.ts +55 -55
- package/lib/services/modal-service/modal-styles.class.d.ts +10 -10
- package/lib/services/modal-service/modal.class.d.ts +40 -40
- package/lib/services/toaster.service.d.ts +8 -8
- package/lib/tokens.d.ts +4 -4
- package/lib/types.d.ts +124 -124
- package/modal.css +157 -157
- package/package.json +1 -1
- package/public-api.d.ts +41 -41
|
@@ -1,133 +1,133 @@
|
|
|
1
|
-
import { Component, ContentChild, ContentChildren, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { ListViewType } from '../../types';
|
|
3
|
-
import { ListTileComponent } from './list-tile.component';
|
|
4
|
-
import { ListColumnComponent } from './list-column.component';
|
|
5
|
-
import { ListDetailsSectionComponent } from './list-details-section.component';
|
|
6
|
-
import { Icons } from '../../icons';
|
|
7
|
-
export class ListViewComponent {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.expandIcon = Icons.Expand;
|
|
10
|
-
this.collapseIcon = Icons.Collapse;
|
|
11
|
-
// tslint:disable-next-line:no-input-rename
|
|
12
|
-
this.showPager = true;
|
|
13
|
-
// PAGING - pass through for pager component
|
|
14
|
-
this.count = null;
|
|
15
|
-
this.page = 1;
|
|
16
|
-
// tslint:disable-next-line:no-input-rename
|
|
17
|
-
this.pageSize = 20;
|
|
18
|
-
// tslint:disable-next-line:no-input-rename
|
|
19
|
-
this.pageSizeOptions = [];
|
|
20
|
-
this.pageChanged = new EventEmitter();
|
|
21
|
-
this.pageSizeChanged = new EventEmitter();
|
|
22
|
-
this.detailsOpened = new EventEmitter();
|
|
23
|
-
this.tableViewSupported = false;
|
|
24
|
-
this.multipleFullWidth = false;
|
|
25
|
-
this.fullWidthTHClass = 'list-view-th-full';
|
|
26
|
-
this.fullWidthTDClass = 'list-view-td-full';
|
|
27
|
-
this.tilesViewSupported = false;
|
|
28
|
-
this.detailsSectionSupported = false;
|
|
29
|
-
// DETAILS SECTION
|
|
30
|
-
// Check if details section and button should be displayed according to the count of the value given
|
|
31
|
-
this.detailsSectionPropertyCount = null;
|
|
32
|
-
// SORTING - pass through for pager component
|
|
33
|
-
// tslint:disable-next-line:no-input-rename
|
|
34
|
-
this.sortOptions = [];
|
|
35
|
-
// tslint:disable-next-line:no-input-rename
|
|
36
|
-
this.sort = null;
|
|
37
|
-
// tslint:disable-next-line:no-input-rename
|
|
38
|
-
this.sortdir = '-';
|
|
39
|
-
this.sortChanged = new EventEmitter();
|
|
40
|
-
this.sortdirChanged = new EventEmitter();
|
|
41
|
-
this.view = ListViewType.Table;
|
|
42
|
-
// COLUMNS
|
|
43
|
-
this.columns = [];
|
|
44
|
-
this.tilesDeckClass = 'cards-deck-4';
|
|
45
|
-
// tslint:disable-next-line:no-input-rename
|
|
46
|
-
this.tilesCount = 4;
|
|
47
|
-
this.tileTemplate = null;
|
|
48
|
-
this.detailsTemplate = null;
|
|
49
|
-
}
|
|
50
|
-
set cols(refs) {
|
|
51
|
-
this.columns = refs === null || refs === void 0 ? void 0 : refs.toArray();
|
|
52
|
-
if (this.columns && this.columns.length > 0) {
|
|
53
|
-
this.tableViewSupported = true;
|
|
54
|
-
}
|
|
55
|
-
this.multipleFullWidth = this.columns.filter(c => c.fullWidth).length > 1;
|
|
56
|
-
this.fullWidthTHClass = this.multipleFullWidth ? 'list-view-th-half' : 'list-view-th-full';
|
|
57
|
-
this.fullWidthTDClass = this.multipleFullWidth ? 'list-view-td-half' : 'list-view-td-full';
|
|
58
|
-
}
|
|
59
|
-
set tiles(ref) {
|
|
60
|
-
this.tileTemplate = ref;
|
|
61
|
-
if (this.tileTemplate) {
|
|
62
|
-
this.tilesViewSupported = true;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
set details(ref) {
|
|
66
|
-
this.detailsTemplate = ref;
|
|
67
|
-
if (this.detailsTemplate) {
|
|
68
|
-
this.detailsSectionSupported = true;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
ngOnChanges(changes) {
|
|
72
|
-
const tilesCountChange = changes['tiles-count'] || changes.tilesCount;
|
|
73
|
-
if (tilesCountChange) {
|
|
74
|
-
this.setTilesDeckClass(tilesCountChange.currentValue);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
// events
|
|
78
|
-
emitPageChanged($event) {
|
|
79
|
-
this.pageChanged.emit($event);
|
|
80
|
-
}
|
|
81
|
-
emitPageSizeChanged($event) {
|
|
82
|
-
this.pageSizeChanged.emit($event);
|
|
83
|
-
}
|
|
84
|
-
emitSortChanged($event) {
|
|
85
|
-
this.sortChanged.emit($event);
|
|
86
|
-
}
|
|
87
|
-
emitSortdirChanged($event) {
|
|
88
|
-
this.sortdirChanged.emit($event);
|
|
89
|
-
}
|
|
90
|
-
toggleDetails(item) {
|
|
91
|
-
item.detailsExpanded = !item.detailsExpanded;
|
|
92
|
-
this.detailsOpened.emit({ item, open: item.detailsExpanded });
|
|
93
|
-
}
|
|
94
|
-
// helpers
|
|
95
|
-
setTilesDeckClass(tiles) {
|
|
96
|
-
if (tiles >= 1 && tiles <= 4) {
|
|
97
|
-
this.tilesDeckClass = `cards-deck-${tiles}`;
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
this.tilesDeckClass = 'cards-deck-3';
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
ListViewComponent.decorators = [
|
|
105
|
-
{ type: Component, args: [{
|
|
106
|
-
selector: 'lib-list-view',
|
|
107
|
-
template: "<div class=\"px-2\">\n\n <lib-pager *ngIf=\"showPager && items && items.length > 0\"\n [page]=\"page\"\n [page-size]=\"pageSize\"\n [count]=\"count\"\n [sort-options]=\"sortOptions\"\n [sort]=\"sort\"\n [sort-dir]=\"sortdir\"\n (pageChanged)=\"emitPageChanged($event)\"\n (pageSizeChanged)=\"emitPageSizeChanged($event)\"\n (sortChanged)=\"emitSortChanged($event)\"\n (sortdirChanged)=\"emitSortdirChanged($event)\">\n </lib-pager>\n</div>\n\n<ng-container [ngSwitch]=\"view\">\n <ng-container *ngSwitchCase=\"'tiles'\">\n <div [class]=\"tilesDeckClass\">\n <lib-skeleton-loader *ngIf=\"!items\"\n [count]=\"5\"\n [type]=\"'tiles'\"></lib-skeleton-loader>\n <ng-container *ngIf=\"items && items.length > 0\">\n <ng-container *ngFor=\"let item of items\">\n <span *ngIf=\"!tileTemplate || !tileTemplate.template\">template missing..</span>\n <ng-template [ngTemplateOutlet]=\"tileTemplate.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"items && items.length == 0\">\n <lib-list-view-empty-state></lib-list-view-empty-state>\n </ng-container>\n </div>\n </ng-container>\n\n <!-- *ngSwitchCase=\"'table'\" -->\n <ng-container *ngSwitchDefault>\n <lib-skeleton-loader *ngIf=\"(items == null || undefined) || items?.length == 0\"\n [count]=\"5\"\n [type]=\"'table'\"></lib-skeleton-loader>\n <div class=\"list-view-container\"\n *ngIf=\"items && items.length > 0\">\n <div class=\"list-view-container-inner\">\n <table class=\"list-view-table\">\n <thead class=\"list-view-thead\">\n <tr>\n <ng-container *ngIf=\"detailsSectionSupported\">\n <th class=\"list-view-th-details\"></th>\n </ng-container>\n <ng-container *ngFor=\"let col of columns\">\n <th scope=\"col\"\n [class]=\"col.fullWidth ? fullWidthTHClass : 'list-view-th'\">\n {{col.title}}\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody class=\"list-view-tbody\">\n <ng-container *ngFor=\"let item of items;let i=index\">\n <tr class=\"list-view-tr\">\n <ng-container *ngIf=\"detailsSectionSupported\">\n <td class=\"list-view-td-details\"\n *ngIf=\"detailsSectionPropertyCount !== null ? item[detailsSectionPropertyCount] !== 0 : true; else hiddenDetailsButton\">\n <button (click)=\"toggleDetails(item)\"\n type=\"button\"\n class=\"expand-collapse-button\">\n <!-- Heroicon name: solid/plus -->\n <i [class]=\"item.detailsExpanded ? collapseIcon : expandIcon\"></i>\n </button>\n </td>\n <ng-template #hiddenDetailsButton>\n <td class=\"list-view-td-details\"></td>\n </ng-template>\n </ng-container>\n <td *ngFor=\"let col of columns\"\n [class]=\"col.fullWidth ? fullWidthTDClass : 'list-view-td'\">\n <ng-template [ngTemplateOutlet]=\"col.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </td>\n </tr>\n <ng-container *ngIf=\"detailsSectionSupported\">\n <tr *ngIf=\"item.detailsExpanded\">\n <td [colSpan]=\"columns.length + 1\"\n class=\"list-view-td\">\n <ng-template [ngTemplateOutlet]=\"detailsTemplate.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n </div>\n </div>\n <ng-container *ngIf=\"(items == null || undefined) || items?.length == 0\">\n <lib-list-view-empty-state></lib-list-view-empty-state>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-content></ng-content>"
|
|
108
|
-
},] }
|
|
109
|
-
];
|
|
110
|
-
ListViewComponent.ctorParameters = () => [];
|
|
111
|
-
ListViewComponent.propDecorators = {
|
|
112
|
-
items: [{ type: Input }],
|
|
113
|
-
showPager: [{ type: Input, args: ['show-pager',] }],
|
|
114
|
-
count: [{ type: Input }],
|
|
115
|
-
page: [{ type: Input }],
|
|
116
|
-
pageSize: [{ type: Input, args: ['page-size',] }],
|
|
117
|
-
pageSizeOptions: [{ type: Input, args: ['page-size-options',] }],
|
|
118
|
-
pageChanged: [{ type: Output }],
|
|
119
|
-
pageSizeChanged: [{ type: Output }],
|
|
120
|
-
detailsOpened: [{ type: Output }],
|
|
121
|
-
detailsSectionPropertyCount: [{ type: Input, args: ['details-section-property-count',] }],
|
|
122
|
-
sortOptions: [{ type: Input, args: ['sort-options',] }],
|
|
123
|
-
sort: [{ type: Input, args: ['sort',] }],
|
|
124
|
-
sortdir: [{ type: Input, args: ['sort-dir',] }],
|
|
125
|
-
sortChanged: [{ type: Output }],
|
|
126
|
-
sortdirChanged: [{ type: Output }],
|
|
127
|
-
view: [{ type: Input }],
|
|
128
|
-
cols: [{ type: ContentChildren, args: [ListColumnComponent, { read: ListColumnComponent },] }],
|
|
129
|
-
tilesCount: [{ type: Input, args: ['tiles-count',] }],
|
|
130
|
-
tiles: [{ type: ContentChild, args: [ListTileComponent, { read: ListTileComponent },] }],
|
|
131
|
-
details: [{ type: ContentChild, args: [ListDetailsSectionComponent, { read: ListDetailsSectionComponent },] }]
|
|
132
|
-
};
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9saXN0LXZpZXcvbGlzdC12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQXVDLE1BQU0sZUFBZSxDQUFDO0FBQzNJLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQU1wQyxNQUFNLE9BQU8saUJBQWlCO0lBOEU1QjtRQTdFTyxlQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMxQixpQkFBWSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFHckMsMkNBQTJDO1FBQ3RCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFdEMsNENBQTRDO1FBQ25DLFVBQUssR0FBa0IsSUFBSSxDQUFDO1FBQzVCLFNBQUksR0FBRyxDQUFDLENBQUM7UUFDbEIsMkNBQTJDO1FBQ3ZCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbEMsMkNBQTJDO1FBQ2Ysb0JBQWUsR0FBaUIsRUFBRSxDQUFDO1FBQ3JELGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDL0Qsb0JBQWUsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNuRSxrQkFBYSxHQUErQyxJQUFJLFlBQVksRUFBZ0MsQ0FBQztR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QixFQUFFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFO3lCQWFsRSxLQUFLLFNBQUMsYUFBYTtvQkFHbkIsWUFBWSxTQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFO3NCQVMzRCxZQUFZLFNBQUMsMkJBQTJCLEVBQUUsRUFBRSxJQUFJLEVBQUUsMkJBQTJCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZW51T3B0aW9uLCBMaXN0Vmlld1R5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBMaXN0VGlsZUNvbXBvbmVudCB9IGZyb20gJy4vbGlzdC10aWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaXN0Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LWNvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGlzdERldGFpbHNTZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LWRldGFpbHMtc2VjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvbnMgfSBmcm9tICcuLi8uLi9pY29ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1saXN0LXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC12aWV3LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBMaXN0Vmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIHB1YmxpYyBleHBhbmRJY29uID0gSWNvbnMuRXhwYW5kO1xuICBwdWJsaWMgY29sbGFwc2VJY29uID0gSWNvbnMuQ29sbGFwc2U7XG4gIC8vIERBVEEgU09VUkNFIVxuICBASW5wdXQoKSBpdGVtczogYW55W10gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgnc2hvdy1wYWdlcicpIHNob3dQYWdlciA9IHRydWU7XG5cbiAgLy8gUEFHSU5HIC0gcGFzcyB0aHJvdWdoIGZvciBwYWdlciBjb21wb25lbnRcbiAgQElucHV0KCkgY291bnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBwYWdlID0gMTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3BhZ2Utc2l6ZScpIHBhZ2VTaXplID0gMjA7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdwYWdlLXNpemUtb3B0aW9ucycpIHBhZ2VTaXplT3B0aW9uczogTWVudU9wdGlvbltdID0gW107XG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIHBhZ2VTaXplQ2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIGRldGFpbHNPcGVuZWQ6IEV2ZW50RW1pdHRlcjx7IGl0ZW06IGFueSwgb3BlbjogYm9vbGVhbiB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpdGVtOiBhbnksIG9wZW46IGJvb2xlYW4gfT4oKTtcblxuICBwdWJsaWMgdGFibGVWaWV3U3VwcG9ydGVkID0gZmFsc2U7XG4gIHByaXZhdGUgbXVsdGlwbGVGdWxsV2lkdGggPSBmYWxzZTtcbiAgcHVibGljIGZ1bGxXaWR0aFRIQ2xhc3MgPSAnbGlzdC12aWV3LXRoLWZ1bGwnO1xuICBwdWJsaWMgZnVsbFdpZHRoVERDbGFzcyA9ICdsaXN0LXZpZXctdGQtZnVsbCc7XG4gIHB1YmxpYyB0aWxlc1ZpZXdTdXBwb3J0ZWQgPSBmYWxzZTtcbiAgcHVibGljIGRldGFpbHNTZWN0aW9uU3VwcG9ydGVkID0gZmFsc2U7XG5cbiAgLy8gREVUQUlMUyBTRUNUSU9OXG4gIC8vIENoZWNrIGlmIGRldGFpbHMgc2VjdGlvbiBhbmQgYnV0dG9uIHNob3VsZCBiZSBkaXNwbGF5ZWQgYWNjb3JkaW5nIHRvIHRoZSBjb3VudCBvZiB0aGUgdmFsdWUgZ2l2ZW5cbiAgQElucHV0KCdkZXRhaWxzLXNlY3Rpb24tcHJvcGVydHktY291bnQnKSBkZXRhaWxzU2VjdGlvblByb3BlcnR5Q291bnQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG5cbiAgLy8gU09SVElORyAtIHBhc3MgdGhyb3VnaCBmb3IgcGFnZXIgY29tcG9uZW50XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdzb3J0LW9wdGlvbnMnKSBzb3J0T3B0aW9uczogTWVudU9wdGlvbltdID0gW107XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdzb3J0Jykgc29ydDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdzb3J0LWRpcicpIHNvcnRkaXI6IHN0cmluZyB8IG51bGwgPSAnLSc7XG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHNvcnRkaXJDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBJbnB1dCgpIHZpZXcgPSBMaXN0Vmlld1R5cGUuVGFibGU7XG5cbiAgLy8gQ09MVU1OU1xuICBwdWJsaWMgY29sdW1uczogYW55W10gPSBbXTtcbiAgQENvbnRlbnRDaGlsZHJlbihMaXN0Q29sdW1uQ29tcG9uZW50LCB7IHJlYWQ6IExpc3RDb2x1bW5Db21wb25lbnQgfSlcbiAgc2V0IGNvbHMocmVmczogUXVlcnlMaXN0PExpc3RDb2x1bW5Db21wb25lbnQ+KSB7XG4gICAgdGhpcy5jb2x1bW5zID0gcmVmcz8udG9BcnJheSgpO1xuICAgIGlmICh0aGlzLmNvbHVtbnMgJiYgdGhpcy5jb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGFibGVWaWV3U3VwcG9ydGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5tdWx0aXBsZUZ1bGxXaWR0aCA9IHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLmZ1bGxXaWR0aCkubGVuZ3RoID4gMTtcbiAgICB0aGlzLmZ1bGxXaWR0aFRIQ2xhc3MgPSB0aGlzLm11bHRpcGxlRnVsbFdpZHRoID8gJ2xpc3Qtdmlldy10aC1oYWxmJyA6ICdsaXN0LXZpZXctdGgtZnVsbCc7XG4gICAgdGhpcy5mdWxsV2lkdGhURENsYXNzID0gdGhpcy5tdWx0aXBsZUZ1bGxXaWR0aCA/ICdsaXN0LXZpZXctdGQtaGFsZicgOiAnbGlzdC12aWV3LXRkLWZ1bGwnO1xuICB9XG5cbiAgcHVibGljIHRpbGVzRGVja0NsYXNzID0gJ2NhcmRzLWRlY2stNCc7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCd0aWxlcy1jb3VudCcpIHRpbGVzQ291bnQgPSA0O1xuXG4gIHB1YmxpYyB0aWxlVGVtcGxhdGU6IGFueSB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICBAQ29udGVudENoaWxkKExpc3RUaWxlQ29tcG9uZW50LCB7IHJlYWQ6IExpc3RUaWxlQ29tcG9uZW50IH0pXG4gIHNldCB0aWxlcyhyZWY6IExpc3RUaWxlQ29tcG9uZW50KSB7XG4gICAgdGhpcy50aWxlVGVtcGxhdGUgPSByZWY7XG4gICAgaWYgKHRoaXMudGlsZVRlbXBsYXRlKSB7XG4gICAgICB0aGlzLnRpbGVzVmlld1N1cHBvcnRlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRldGFpbHNUZW1wbGF0ZTogYW55IHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG4gIEBDb250ZW50Q2hpbGQoTGlzdERldGFpbHNTZWN0aW9uQ29tcG9uZW50LCB7IHJlYWQ6IExpc3REZXRhaWxzU2VjdGlvbkNvbXBvbmVudCB9KVxuICBzZXQgZGV0YWlscyhyZWY6IExpc3REZXRhaWxzU2VjdGlvbkNvbXBvbmVudCkge1xuICAgIHRoaXMuZGV0YWlsc1RlbXBsYXRlID0gcmVmO1xuICAgIGlmICh0aGlzLmRldGFpbHNUZW1wbGF0ZSkge1xuICAgICAgdGhpcy5kZXRhaWxzU2VjdGlvblN1cHBvcnRlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgdGlsZXNDb3VudENoYW5nZSA9IGNoYW5nZXNbJ3RpbGVzLWNvdW50J10gfHwgY2hhbmdlcy50aWxlc0NvdW50O1xuICAgIGlmICh0aWxlc0NvdW50Q2hhbmdlKSB7XG4gICAgICB0aGlzLnNldFRpbGVzRGVja0NsYXNzKHRpbGVzQ291bnRDaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvLyBldmVudHNcbiAgcHVibGljIGVtaXRQYWdlQ2hhbmdlZCgkZXZlbnQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdCgkZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIGVtaXRQYWdlU2l6ZUNoYW5nZWQoJGV2ZW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VTaXplQ2hhbmdlZC5lbWl0KCRldmVudCk7XG4gIH1cblxuICBwdWJsaWMgZW1pdFNvcnRDaGFuZ2VkKCRldmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zb3J0Q2hhbmdlZC5lbWl0KCRldmVudCk7XG4gIH1cbiAgcHVibGljIGVtaXRTb3J0ZGlyQ2hhbmdlZCgkZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc29ydGRpckNoYW5nZWQuZW1pdCgkZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZURldGFpbHMoaXRlbTogYW55KTogdm9pZCB7XG4gICAgaXRlbS5kZXRhaWxzRXhwYW5kZWQgPSAhaXRlbS5kZXRhaWxzRXhwYW5kZWQ7XG4gICAgdGhpcy5kZXRhaWxzT3BlbmVkLmVtaXQoeyBpdGVtLCBvcGVuOiBpdGVtLmRldGFpbHNFeHBhbmRlZCB9KTtcbiAgfVxuXG4gIC8vIGhlbHBlcnNcbiAgcHJpdmF0ZSBzZXRUaWxlc0RlY2tDbGFzcyh0aWxlczogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRpbGVzID49IDEgJiYgdGlsZXMgPD0gNCkge1xuICAgICAgdGhpcy50aWxlc0RlY2tDbGFzcyA9IGBjYXJkcy1kZWNrLSR7dGlsZXN9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50aWxlc0RlY2tDbGFzcyA9ICdjYXJkcy1kZWNrLTMnO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
|
|
1
|
+
import { Component, ContentChild, ContentChildren, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { ListViewType } from '../../types';
|
|
3
|
+
import { ListTileComponent } from './list-tile.component';
|
|
4
|
+
import { ListColumnComponent } from './list-column.component';
|
|
5
|
+
import { ListDetailsSectionComponent } from './list-details-section.component';
|
|
6
|
+
import { Icons } from '../../icons';
|
|
7
|
+
export class ListViewComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.expandIcon = Icons.Expand;
|
|
10
|
+
this.collapseIcon = Icons.Collapse;
|
|
11
|
+
// tslint:disable-next-line:no-input-rename
|
|
12
|
+
this.showPager = true;
|
|
13
|
+
// PAGING - pass through for pager component
|
|
14
|
+
this.count = null;
|
|
15
|
+
this.page = 1;
|
|
16
|
+
// tslint:disable-next-line:no-input-rename
|
|
17
|
+
this.pageSize = 20;
|
|
18
|
+
// tslint:disable-next-line:no-input-rename
|
|
19
|
+
this.pageSizeOptions = [];
|
|
20
|
+
this.pageChanged = new EventEmitter();
|
|
21
|
+
this.pageSizeChanged = new EventEmitter();
|
|
22
|
+
this.detailsOpened = new EventEmitter();
|
|
23
|
+
this.tableViewSupported = false;
|
|
24
|
+
this.multipleFullWidth = false;
|
|
25
|
+
this.fullWidthTHClass = 'list-view-th-full';
|
|
26
|
+
this.fullWidthTDClass = 'list-view-td-full';
|
|
27
|
+
this.tilesViewSupported = false;
|
|
28
|
+
this.detailsSectionSupported = false;
|
|
29
|
+
// DETAILS SECTION
|
|
30
|
+
// Check if details section and button should be displayed according to the count of the value given
|
|
31
|
+
this.detailsSectionPropertyCount = null;
|
|
32
|
+
// SORTING - pass through for pager component
|
|
33
|
+
// tslint:disable-next-line:no-input-rename
|
|
34
|
+
this.sortOptions = [];
|
|
35
|
+
// tslint:disable-next-line:no-input-rename
|
|
36
|
+
this.sort = null;
|
|
37
|
+
// tslint:disable-next-line:no-input-rename
|
|
38
|
+
this.sortdir = '-';
|
|
39
|
+
this.sortChanged = new EventEmitter();
|
|
40
|
+
this.sortdirChanged = new EventEmitter();
|
|
41
|
+
this.view = ListViewType.Table;
|
|
42
|
+
// COLUMNS
|
|
43
|
+
this.columns = [];
|
|
44
|
+
this.tilesDeckClass = 'cards-deck-4';
|
|
45
|
+
// tslint:disable-next-line:no-input-rename
|
|
46
|
+
this.tilesCount = 4;
|
|
47
|
+
this.tileTemplate = null;
|
|
48
|
+
this.detailsTemplate = null;
|
|
49
|
+
}
|
|
50
|
+
set cols(refs) {
|
|
51
|
+
this.columns = refs === null || refs === void 0 ? void 0 : refs.toArray();
|
|
52
|
+
if (this.columns && this.columns.length > 0) {
|
|
53
|
+
this.tableViewSupported = true;
|
|
54
|
+
}
|
|
55
|
+
this.multipleFullWidth = this.columns.filter(c => c.fullWidth).length > 1;
|
|
56
|
+
this.fullWidthTHClass = this.multipleFullWidth ? 'list-view-th-half' : 'list-view-th-full';
|
|
57
|
+
this.fullWidthTDClass = this.multipleFullWidth ? 'list-view-td-half' : 'list-view-td-full';
|
|
58
|
+
}
|
|
59
|
+
set tiles(ref) {
|
|
60
|
+
this.tileTemplate = ref;
|
|
61
|
+
if (this.tileTemplate) {
|
|
62
|
+
this.tilesViewSupported = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
set details(ref) {
|
|
66
|
+
this.detailsTemplate = ref;
|
|
67
|
+
if (this.detailsTemplate) {
|
|
68
|
+
this.detailsSectionSupported = true;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
ngOnChanges(changes) {
|
|
72
|
+
const tilesCountChange = changes['tiles-count'] || changes.tilesCount;
|
|
73
|
+
if (tilesCountChange) {
|
|
74
|
+
this.setTilesDeckClass(tilesCountChange.currentValue);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// events
|
|
78
|
+
emitPageChanged($event) {
|
|
79
|
+
this.pageChanged.emit($event);
|
|
80
|
+
}
|
|
81
|
+
emitPageSizeChanged($event) {
|
|
82
|
+
this.pageSizeChanged.emit($event);
|
|
83
|
+
}
|
|
84
|
+
emitSortChanged($event) {
|
|
85
|
+
this.sortChanged.emit($event);
|
|
86
|
+
}
|
|
87
|
+
emitSortdirChanged($event) {
|
|
88
|
+
this.sortdirChanged.emit($event);
|
|
89
|
+
}
|
|
90
|
+
toggleDetails(item) {
|
|
91
|
+
item.detailsExpanded = !item.detailsExpanded;
|
|
92
|
+
this.detailsOpened.emit({ item, open: item.detailsExpanded });
|
|
93
|
+
}
|
|
94
|
+
// helpers
|
|
95
|
+
setTilesDeckClass(tiles) {
|
|
96
|
+
if (tiles >= 1 && tiles <= 4) {
|
|
97
|
+
this.tilesDeckClass = `cards-deck-${tiles}`;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this.tilesDeckClass = 'cards-deck-3';
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
ListViewComponent.decorators = [
|
|
105
|
+
{ type: Component, args: [{
|
|
106
|
+
selector: 'lib-list-view',
|
|
107
|
+
template: "<div class=\"px-2\">\r\n\r\n <lib-pager *ngIf=\"showPager && items && items.length > 0\"\r\n [page]=\"page\"\r\n [page-size]=\"pageSize\"\r\n [count]=\"count\"\r\n [sort-options]=\"sortOptions\"\r\n [sort]=\"sort\"\r\n [sort-dir]=\"sortdir\"\r\n (pageChanged)=\"emitPageChanged($event)\"\r\n (pageSizeChanged)=\"emitPageSizeChanged($event)\"\r\n (sortChanged)=\"emitSortChanged($event)\"\r\n (sortdirChanged)=\"emitSortdirChanged($event)\">\r\n </lib-pager>\r\n</div>\r\n\r\n<ng-container [ngSwitch]=\"view\">\r\n <ng-container *ngSwitchCase=\"'tiles'\">\r\n <div [class]=\"tilesDeckClass\">\r\n <lib-skeleton-loader *ngIf=\"!items\"\r\n [count]=\"5\"\r\n [type]=\"'tiles'\"></lib-skeleton-loader>\r\n <ng-container *ngIf=\"items && items.length > 0\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <span *ngIf=\"!tileTemplate || !tileTemplate.template\">template missing..</span>\r\n <ng-template [ngTemplateOutlet]=\"tileTemplate.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"items && items.length == 0\">\r\n <lib-list-view-empty-state></lib-list-view-empty-state>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- *ngSwitchCase=\"'table'\" -->\r\n <ng-container *ngSwitchDefault>\r\n <lib-skeleton-loader *ngIf=\"(items == null || undefined) || items?.length == 0\"\r\n [count]=\"5\"\r\n [type]=\"'table'\"></lib-skeleton-loader>\r\n <div class=\"list-view-container\"\r\n *ngIf=\"items && items.length > 0\">\r\n <div class=\"list-view-container-inner\">\r\n <table class=\"list-view-table\">\r\n <thead class=\"list-view-thead\">\r\n <tr>\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <th class=\"list-view-th-details\"></th>\r\n </ng-container>\r\n <ng-container *ngFor=\"let col of columns\">\r\n <th scope=\"col\"\r\n [class]=\"col.fullWidth ? fullWidthTHClass : 'list-view-th'\">\r\n {{col.title}}\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody class=\"list-view-tbody\">\r\n <ng-container *ngFor=\"let item of items;let i=index\">\r\n <tr class=\"list-view-tr\">\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <td class=\"list-view-td-details\"\r\n *ngIf=\"detailsSectionPropertyCount !== null ? item[detailsSectionPropertyCount] !== 0 : true; else hiddenDetailsButton\">\r\n <button (click)=\"toggleDetails(item)\"\r\n type=\"button\"\r\n class=\"expand-collapse-button\">\r\n <!-- Heroicon name: solid/plus -->\r\n <i [class]=\"item.detailsExpanded ? collapseIcon : expandIcon\"></i>\r\n </button>\r\n </td>\r\n <ng-template #hiddenDetailsButton>\r\n <td class=\"list-view-td-details\"></td>\r\n </ng-template>\r\n </ng-container>\r\n <td *ngFor=\"let col of columns\"\r\n [class]=\"col.fullWidth ? fullWidthTDClass : 'list-view-td'\">\r\n <ng-template [ngTemplateOutlet]=\"col.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </td>\r\n </tr>\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <tr *ngIf=\"item.detailsExpanded\">\r\n <td [colSpan]=\"columns.length + 1\"\r\n class=\"list-view-td\">\r\n <ng-template [ngTemplateOutlet]=\"detailsTemplate.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"(items == null || undefined) || items?.length == 0\">\r\n <lib-list-view-empty-state></lib-list-view-empty-state>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-content></ng-content>"
|
|
108
|
+
},] }
|
|
109
|
+
];
|
|
110
|
+
ListViewComponent.ctorParameters = () => [];
|
|
111
|
+
ListViewComponent.propDecorators = {
|
|
112
|
+
items: [{ type: Input }],
|
|
113
|
+
showPager: [{ type: Input, args: ['show-pager',] }],
|
|
114
|
+
count: [{ type: Input }],
|
|
115
|
+
page: [{ type: Input }],
|
|
116
|
+
pageSize: [{ type: Input, args: ['page-size',] }],
|
|
117
|
+
pageSizeOptions: [{ type: Input, args: ['page-size-options',] }],
|
|
118
|
+
pageChanged: [{ type: Output }],
|
|
119
|
+
pageSizeChanged: [{ type: Output }],
|
|
120
|
+
detailsOpened: [{ type: Output }],
|
|
121
|
+
detailsSectionPropertyCount: [{ type: Input, args: ['details-section-property-count',] }],
|
|
122
|
+
sortOptions: [{ type: Input, args: ['sort-options',] }],
|
|
123
|
+
sort: [{ type: Input, args: ['sort',] }],
|
|
124
|
+
sortdir: [{ type: Input, args: ['sort-dir',] }],
|
|
125
|
+
sortChanged: [{ type: Output }],
|
|
126
|
+
sortdirChanged: [{ type: Output }],
|
|
127
|
+
view: [{ type: Input }],
|
|
128
|
+
cols: [{ type: ContentChildren, args: [ListColumnComponent, { read: ListColumnComponent },] }],
|
|
129
|
+
tilesCount: [{ type: Input, args: ['tiles-count',] }],
|
|
130
|
+
tiles: [{ type: ContentChild, args: [ListTileComponent, { read: ListTileComponent },] }],
|
|
131
|
+
details: [{ type: ContentChild, args: [ListDetailsSectionComponent, { read: ListDetailsSectionComponent },] }]
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9saXN0LXZpZXcvbGlzdC12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQXVDLE1BQU0sZUFBZSxDQUFDO0FBQzNJLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQU1wQyxNQUFNLE9BQU8saUJBQWlCO0lBOEU1QjtRQTdFTyxlQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMxQixpQkFBWSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFHckMsMkNBQTJDO1FBQ3RCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFdEMsNENBQTRDO1FBQ25DLFVBQUssR0FBa0IsSUFBSSxDQUFDO1FBQzVCLFNBQUksR0FBRyxDQUFDLENBQUM7UUFDbEIsMkNBQTJDO1FBQ3ZCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbEMsMkNBQTJDO1FBQ2Ysb0JBQWUsR0FBaUIsRUFBRSxDQUFDO1FBQ3JELGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDL0Qsb0JBQWUsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNuRSxrQkFBYSxHQUErQyxJQUFJLFlBQVksRUFBZ0MsQ0FBQztR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QixFQUFFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFO3lCQWFsRSxLQUFLLFNBQUMsYUFBYTtvQkFHbkIsWUFBWSxTQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFO3NCQVMzRCxZQUFZLFNBQUMsMkJBQTJCLEVBQUUsRUFBRSxJQUFJLEVBQUUsMkJBQTJCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1lbnVPcHRpb24sIExpc3RWaWV3VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgTGlzdFRpbGVDb21wb25lbnQgfSBmcm9tICcuL2xpc3QtdGlsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMaXN0Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LWNvbHVtbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMaXN0RGV0YWlsc1NlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2xpc3QtZGV0YWlscy1zZWN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEljb25zIH0gZnJvbSAnLi4vLi4vaWNvbnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbGlzdC12aWV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC12aWV3LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTGlzdFZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIHB1YmxpYyBleHBhbmRJY29uID0gSWNvbnMuRXhwYW5kO1xyXG4gIHB1YmxpYyBjb2xsYXBzZUljb24gPSBJY29ucy5Db2xsYXBzZTtcclxuICAvLyBEQVRBIFNPVVJDRSFcclxuICBASW5wdXQoKSBpdGVtczogYW55W10gfCBudWxsIHwgdW5kZWZpbmVkO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ3Nob3ctcGFnZXInKSBzaG93UGFnZXIgPSB0cnVlO1xyXG5cclxuICAvLyBQQUdJTkcgLSBwYXNzIHRocm91Z2ggZm9yIHBhZ2VyIGNvbXBvbmVudFxyXG4gIEBJbnB1dCgpIGNvdW50OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBwYWdlID0gMTtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdwYWdlLXNpemUnKSBwYWdlU2l6ZSA9IDIwO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ3BhZ2Utc2l6ZS1vcHRpb25zJykgcGFnZVNpemVPcHRpb25zOiBNZW51T3B0aW9uW10gPSBbXTtcclxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgQE91dHB1dCgpIHBhZ2VTaXplQ2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBAT3V0cHV0KCkgZGV0YWlsc09wZW5lZDogRXZlbnRFbWl0dGVyPHsgaXRlbTogYW55LCBvcGVuOiBib29sZWFuIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGl0ZW06IGFueSwgb3BlbjogYm9vbGVhbiB9PigpO1xyXG5cclxuICBwdWJsaWMgdGFibGVWaWV3U3VwcG9ydGVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBtdWx0aXBsZUZ1bGxXaWR0aCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBmdWxsV2lkdGhUSENsYXNzID0gJ2xpc3Qtdmlldy10aC1mdWxsJztcclxuICBwdWJsaWMgZnVsbFdpZHRoVERDbGFzcyA9ICdsaXN0LXZpZXctdGQtZnVsbCc7XHJcbiAgcHVibGljIHRpbGVzVmlld1N1cHBvcnRlZCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBkZXRhaWxzU2VjdGlvblN1cHBvcnRlZCA9IGZhbHNlO1xyXG5cclxuICAvLyBERVRBSUxTIFNFQ1RJT05cclxuICAvLyBDaGVjayBpZiBkZXRhaWxzIHNlY3Rpb24gYW5kIGJ1dHRvbiBzaG91bGQgYmUgZGlzcGxheWVkIGFjY29yZGluZyB0byB0aGUgY291bnQgb2YgdGhlIHZhbHVlIGdpdmVuXHJcbiAgQElucHV0KCdkZXRhaWxzLXNlY3Rpb24tcHJvcGVydHktY291bnQnKSBkZXRhaWxzU2VjdGlvblByb3BlcnR5Q291bnQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgLy8gU09SVElORyAtIHBhc3MgdGhyb3VnaCBmb3IgcGFnZXIgY29tcG9uZW50XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxyXG4gIEBJbnB1dCgnc29ydC1vcHRpb25zJykgc29ydE9wdGlvbnM6IE1lbnVPcHRpb25bXSA9IFtdO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ3NvcnQnKSBzb3J0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdzb3J0LWRpcicpIHNvcnRkaXI6IHN0cmluZyB8IG51bGwgPSAnLSc7XHJcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBzb3J0ZGlyQ2hhbmdlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgQElucHV0KCkgdmlldyA9IExpc3RWaWV3VHlwZS5UYWJsZTtcclxuXHJcbiAgLy8gQ09MVU1OU1xyXG4gIHB1YmxpYyBjb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oTGlzdENvbHVtbkNvbXBvbmVudCwgeyByZWFkOiBMaXN0Q29sdW1uQ29tcG9uZW50IH0pXHJcbiAgc2V0IGNvbHMocmVmczogUXVlcnlMaXN0PExpc3RDb2x1bW5Db21wb25lbnQ+KSB7XHJcbiAgICB0aGlzLmNvbHVtbnMgPSByZWZzPy50b0FycmF5KCk7XHJcbiAgICBpZiAodGhpcy5jb2x1bW5zICYmIHRoaXMuY29sdW1ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudGFibGVWaWV3U3VwcG9ydGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMubXVsdGlwbGVGdWxsV2lkdGggPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5mdWxsV2lkdGgpLmxlbmd0aCA+IDE7XHJcbiAgICB0aGlzLmZ1bGxXaWR0aFRIQ2xhc3MgPSB0aGlzLm11bHRpcGxlRnVsbFdpZHRoID8gJ2xpc3Qtdmlldy10aC1oYWxmJyA6ICdsaXN0LXZpZXctdGgtZnVsbCc7XHJcbiAgICB0aGlzLmZ1bGxXaWR0aFREQ2xhc3MgPSB0aGlzLm11bHRpcGxlRnVsbFdpZHRoID8gJ2xpc3Qtdmlldy10ZC1oYWxmJyA6ICdsaXN0LXZpZXctdGQtZnVsbCc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdGlsZXNEZWNrQ2xhc3MgPSAnY2FyZHMtZGVjay00JztcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCd0aWxlcy1jb3VudCcpIHRpbGVzQ291bnQgPSA0O1xyXG5cclxuICBwdWJsaWMgdGlsZVRlbXBsYXRlOiBhbnkgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcclxuICBAQ29udGVudENoaWxkKExpc3RUaWxlQ29tcG9uZW50LCB7IHJlYWQ6IExpc3RUaWxlQ29tcG9uZW50IH0pXHJcbiAgc2V0IHRpbGVzKHJlZjogTGlzdFRpbGVDb21wb25lbnQpIHtcclxuICAgIHRoaXMudGlsZVRlbXBsYXRlID0gcmVmO1xyXG4gICAgaWYgKHRoaXMudGlsZVRlbXBsYXRlKSB7XHJcbiAgICAgIHRoaXMudGlsZXNWaWV3U3VwcG9ydGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZXRhaWxzVGVtcGxhdGU6IGFueSB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xyXG4gIEBDb250ZW50Q2hpbGQoTGlzdERldGFpbHNTZWN0aW9uQ29tcG9uZW50LCB7IHJlYWQ6IExpc3REZXRhaWxzU2VjdGlvbkNvbXBvbmVudCB9KVxyXG4gIHNldCBkZXRhaWxzKHJlZjogTGlzdERldGFpbHNTZWN0aW9uQ29tcG9uZW50KSB7XHJcbiAgICB0aGlzLmRldGFpbHNUZW1wbGF0ZSA9IHJlZjtcclxuICAgIGlmICh0aGlzLmRldGFpbHNUZW1wbGF0ZSkge1xyXG4gICAgICB0aGlzLmRldGFpbHNTZWN0aW9uU3VwcG9ydGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRpbGVzQ291bnRDaGFuZ2UgPSBjaGFuZ2VzWyd0aWxlcy1jb3VudCddIHx8IGNoYW5nZXMudGlsZXNDb3VudDtcclxuICAgIGlmICh0aWxlc0NvdW50Q2hhbmdlKSB7XHJcbiAgICAgIHRoaXMuc2V0VGlsZXNEZWNrQ2xhc3ModGlsZXNDb3VudENoYW5nZS5jdXJyZW50VmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gZXZlbnRzXHJcbiAgcHVibGljIGVtaXRQYWdlQ2hhbmdlZCgkZXZlbnQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW1pdFBhZ2VTaXplQ2hhbmdlZCgkZXZlbnQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdlU2l6ZUNoYW5nZWQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVtaXRTb3J0Q2hhbmdlZCgkZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3J0Q2hhbmdlZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBlbWl0U29ydGRpckNoYW5nZWQoJGV2ZW50OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc29ydGRpckNoYW5nZWQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZURldGFpbHMoaXRlbTogYW55KTogdm9pZCB7XHJcbiAgICBpdGVtLmRldGFpbHNFeHBhbmRlZCA9ICFpdGVtLmRldGFpbHNFeHBhbmRlZDtcclxuICAgIHRoaXMuZGV0YWlsc09wZW5lZC5lbWl0KHsgaXRlbSwgb3BlbjogaXRlbS5kZXRhaWxzRXhwYW5kZWQgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBoZWxwZXJzXHJcbiAgcHJpdmF0ZSBzZXRUaWxlc0RlY2tDbGFzcyh0aWxlczogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGlsZXMgPj0gMSAmJiB0aWxlcyA8PSA0KSB7XHJcbiAgICAgIHRoaXMudGlsZXNEZWNrQ2xhc3MgPSBgY2FyZHMtZGVjay0ke3RpbGVzfWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRpbGVzRGVja0NsYXNzID0gJ2NhcmRzLWRlY2stMyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -1,114 +1,114 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { Router } from '@angular/router';
|
|
3
|
-
import { Icons } from '../../icons';
|
|
4
|
-
import { MenuOption } from '../../types';
|
|
5
|
-
export class PagerComponent {
|
|
6
|
-
constructor(router) {
|
|
7
|
-
this.router = router;
|
|
8
|
-
// PAGING
|
|
9
|
-
this.count = null;
|
|
10
|
-
this.page = 1;
|
|
11
|
-
// tslint:disable-next-line:no-input-rename
|
|
12
|
-
this.pageSize = 20;
|
|
13
|
-
// tslint:disable-next-line:no-input-rename
|
|
14
|
-
this.pageSizeOptions = [
|
|
15
|
-
new MenuOption('10', 10),
|
|
16
|
-
new MenuOption('20', 20),
|
|
17
|
-
new MenuOption('30', 30),
|
|
18
|
-
new MenuOption('50', 50),
|
|
19
|
-
new MenuOption('100', 100)
|
|
20
|
-
];
|
|
21
|
-
this.pages = [];
|
|
22
|
-
this.pageChanged = new EventEmitter();
|
|
23
|
-
this.pageSizeChanged = new EventEmitter();
|
|
24
|
-
this.canPreviousPage = false;
|
|
25
|
-
this.canNextPage = false;
|
|
26
|
-
// SORTING
|
|
27
|
-
// tslint:disable-next-line:no-input-rename
|
|
28
|
-
this.sortOptions = [];
|
|
29
|
-
// tslint:disable-next-line:no-input-rename
|
|
30
|
-
this.sort = null;
|
|
31
|
-
// tslint:disable-next-line:no-input-rename
|
|
32
|
-
this.sortdir = 'desc';
|
|
33
|
-
this.sortChanged = new EventEmitter();
|
|
34
|
-
this.sortdirChanged = new EventEmitter();
|
|
35
|
-
this.sortdirIcon = Icons.SortDesc;
|
|
36
|
-
}
|
|
37
|
-
ngOnChanges(changes) {
|
|
38
|
-
this.calcPages();
|
|
39
|
-
}
|
|
40
|
-
ngOnInit() {
|
|
41
|
-
}
|
|
42
|
-
calcPages() {
|
|
43
|
-
this.pages = [];
|
|
44
|
-
if (this.count && this.count > 0) {
|
|
45
|
-
const pageCount = this.count / this.pageSize;
|
|
46
|
-
for (let i = 0; i < pageCount; i++) {
|
|
47
|
-
this.pages.push(new MenuOption(i + 1 + '', i + 1));
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
this.canPreviousPage = this.page > 1;
|
|
51
|
-
this.canNextPage = this.page < this.pages.length;
|
|
52
|
-
//console.log('calcPages', this.page, this.canPreviousPage, this.canNextPage);
|
|
53
|
-
}
|
|
54
|
-
nextPage() {
|
|
55
|
-
const next = this.page + 1;
|
|
56
|
-
this.gotoPage(next);
|
|
57
|
-
}
|
|
58
|
-
previousPage() {
|
|
59
|
-
const previous = this.page - 1;
|
|
60
|
-
this.gotoPage(previous);
|
|
61
|
-
}
|
|
62
|
-
gotoPage(page) {
|
|
63
|
-
this.page = page;
|
|
64
|
-
this.pageChanged.emit(page);
|
|
65
|
-
this.calcPages();
|
|
66
|
-
}
|
|
67
|
-
pageSizeOptionChanged(pageSize) {
|
|
68
|
-
this.pageSizeChanged.emit(pageSize);
|
|
69
|
-
this.calcPages();
|
|
70
|
-
}
|
|
71
|
-
pageOptionChanged(page) {
|
|
72
|
-
this.pageChanged.emit(page);
|
|
73
|
-
this.calcPages();
|
|
74
|
-
}
|
|
75
|
-
sortOptionChanged(sort) {
|
|
76
|
-
this.sortChanged.emit(sort);
|
|
77
|
-
}
|
|
78
|
-
toggleSortdir() {
|
|
79
|
-
//console.log('toggleSortdir');
|
|
80
|
-
let sortdir = 'desc';
|
|
81
|
-
if (this.sortdir === 'desc') {
|
|
82
|
-
sortdir = 'asc';
|
|
83
|
-
this.sortdirIcon = Icons.SortAsc;
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
sortdir = 'desc';
|
|
87
|
-
this.sortdirIcon = Icons.SortDesc;
|
|
88
|
-
}
|
|
89
|
-
this.sortdirChanged.emit(sortdir);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
PagerComponent.decorators = [
|
|
93
|
-
{ type: Component, args: [{
|
|
94
|
-
selector: 'lib-pager',
|
|
95
|
-
template: "<div class=\"pager-container\">\n <div class=\"pager-container-inner\">\n <div class=\"inline-flex\" *ngIf=\"sortOptions && sortOptions.length > 0\">\n <lib-drop-down-menu [options]=\"sortOptions\" [selected]=\"sort\" (selectedChanged)=\"sortOptionChanged($event)\"></lib-drop-down-menu>\n <button (click)=\"toggleSortdir()\" class=\"pager-icon-button\">\n <span class=\"sr-only\">sort direction</span>\n <span class=\"inline-block relative\">\n <i [class]=\"sortdirIcon\"></i>\n </span>\n </button>\n </div>\n <div class=\"pager-pages-container\">\n <lib-drop-down-menu [options]=\"pageSizeOptions\" [selected]=\"pageSize\" (selectedChanged)=\"pageSizeOptionChanged($event)\"></lib-drop-down-menu>\n <div class=\"mx-2\" *ngIf=\"count !== null && count > pageSize\">\n <button [disabled]=\"!canPreviousPage\" (click)=\"previousPage()\"\n class=\"pager-arrow-button-left\">\n <span class=\"sr-only\">Previous</span>\n <svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\n </svg>\n </button>\n <button [disabled]=\"!canNextPage\" (click)=\"nextPage()\"\n class=\"pager-arrow-button-right\">\n <span class=\"sr-only\">Next</span>\n <svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\" clip-rule=\"evenodd\" />\n </svg>\n </button>\n </div>\n <lib-drop-down-menu *ngIf=\"(pages && pages.length > 0) && (count !== null && count > pageSize)\" [options]=\"pages\" [selected]=\"page\" (selectedChanged)=\"pageOptionChanged($event)\"></lib-drop-down-menu>\n </div>\n </div>\n</div>\n"
|
|
96
|
-
},] }
|
|
97
|
-
];
|
|
98
|
-
PagerComponent.ctorParameters = () => [
|
|
99
|
-
{ type: Router }
|
|
100
|
-
];
|
|
101
|
-
PagerComponent.propDecorators = {
|
|
102
|
-
count: [{ type: Input }],
|
|
103
|
-
page: [{ type: Input }],
|
|
104
|
-
pageSize: [{ type: Input, args: ['page-size',] }],
|
|
105
|
-
pageSizeOptions: [{ type: Input, args: ['page-size-options',] }],
|
|
106
|
-
pageChanged: [{ type: Output }],
|
|
107
|
-
pageSizeChanged: [{ type: Output }],
|
|
108
|
-
sortOptions: [{ type: Input, args: ['sort-options',] }],
|
|
109
|
-
sort: [{ type: Input, args: ['sort',] }],
|
|
110
|
-
sortdir: [{ type: Input, args: ['sort-dir',] }],
|
|
111
|
-
sortChanged: [{ type: Output }],
|
|
112
|
-
sortdirChanged: [{ type: Output }]
|
|
113
|
-
};
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { Icons } from '../../icons';
|
|
4
|
+
import { MenuOption } from '../../types';
|
|
5
|
+
export class PagerComponent {
|
|
6
|
+
constructor(router) {
|
|
7
|
+
this.router = router;
|
|
8
|
+
// PAGING
|
|
9
|
+
this.count = null;
|
|
10
|
+
this.page = 1;
|
|
11
|
+
// tslint:disable-next-line:no-input-rename
|
|
12
|
+
this.pageSize = 20;
|
|
13
|
+
// tslint:disable-next-line:no-input-rename
|
|
14
|
+
this.pageSizeOptions = [
|
|
15
|
+
new MenuOption('10', 10),
|
|
16
|
+
new MenuOption('20', 20),
|
|
17
|
+
new MenuOption('30', 30),
|
|
18
|
+
new MenuOption('50', 50),
|
|
19
|
+
new MenuOption('100', 100)
|
|
20
|
+
];
|
|
21
|
+
this.pages = [];
|
|
22
|
+
this.pageChanged = new EventEmitter();
|
|
23
|
+
this.pageSizeChanged = new EventEmitter();
|
|
24
|
+
this.canPreviousPage = false;
|
|
25
|
+
this.canNextPage = false;
|
|
26
|
+
// SORTING
|
|
27
|
+
// tslint:disable-next-line:no-input-rename
|
|
28
|
+
this.sortOptions = [];
|
|
29
|
+
// tslint:disable-next-line:no-input-rename
|
|
30
|
+
this.sort = null;
|
|
31
|
+
// tslint:disable-next-line:no-input-rename
|
|
32
|
+
this.sortdir = 'desc';
|
|
33
|
+
this.sortChanged = new EventEmitter();
|
|
34
|
+
this.sortdirChanged = new EventEmitter();
|
|
35
|
+
this.sortdirIcon = Icons.SortDesc;
|
|
36
|
+
}
|
|
37
|
+
ngOnChanges(changes) {
|
|
38
|
+
this.calcPages();
|
|
39
|
+
}
|
|
40
|
+
ngOnInit() {
|
|
41
|
+
}
|
|
42
|
+
calcPages() {
|
|
43
|
+
this.pages = [];
|
|
44
|
+
if (this.count && this.count > 0) {
|
|
45
|
+
const pageCount = this.count / this.pageSize;
|
|
46
|
+
for (let i = 0; i < pageCount; i++) {
|
|
47
|
+
this.pages.push(new MenuOption(i + 1 + '', i + 1));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
this.canPreviousPage = this.page > 1;
|
|
51
|
+
this.canNextPage = this.page < this.pages.length;
|
|
52
|
+
//console.log('calcPages', this.page, this.canPreviousPage, this.canNextPage);
|
|
53
|
+
}
|
|
54
|
+
nextPage() {
|
|
55
|
+
const next = this.page + 1;
|
|
56
|
+
this.gotoPage(next);
|
|
57
|
+
}
|
|
58
|
+
previousPage() {
|
|
59
|
+
const previous = this.page - 1;
|
|
60
|
+
this.gotoPage(previous);
|
|
61
|
+
}
|
|
62
|
+
gotoPage(page) {
|
|
63
|
+
this.page = page;
|
|
64
|
+
this.pageChanged.emit(page);
|
|
65
|
+
this.calcPages();
|
|
66
|
+
}
|
|
67
|
+
pageSizeOptionChanged(pageSize) {
|
|
68
|
+
this.pageSizeChanged.emit(pageSize);
|
|
69
|
+
this.calcPages();
|
|
70
|
+
}
|
|
71
|
+
pageOptionChanged(page) {
|
|
72
|
+
this.pageChanged.emit(page);
|
|
73
|
+
this.calcPages();
|
|
74
|
+
}
|
|
75
|
+
sortOptionChanged(sort) {
|
|
76
|
+
this.sortChanged.emit(sort);
|
|
77
|
+
}
|
|
78
|
+
toggleSortdir() {
|
|
79
|
+
//console.log('toggleSortdir');
|
|
80
|
+
let sortdir = 'desc';
|
|
81
|
+
if (this.sortdir === 'desc') {
|
|
82
|
+
sortdir = 'asc';
|
|
83
|
+
this.sortdirIcon = Icons.SortAsc;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
sortdir = 'desc';
|
|
87
|
+
this.sortdirIcon = Icons.SortDesc;
|
|
88
|
+
}
|
|
89
|
+
this.sortdirChanged.emit(sortdir);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
PagerComponent.decorators = [
|
|
93
|
+
{ type: Component, args: [{
|
|
94
|
+
selector: 'lib-pager',
|
|
95
|
+
template: "<div class=\"pager-container\">\r\n <div class=\"pager-container-inner\">\r\n <div class=\"inline-flex\" *ngIf=\"sortOptions && sortOptions.length > 0\">\r\n <lib-drop-down-menu [options]=\"sortOptions\" [selected]=\"sort\" (selectedChanged)=\"sortOptionChanged($event)\"></lib-drop-down-menu>\r\n <button (click)=\"toggleSortdir()\" class=\"pager-icon-button\">\r\n <span class=\"sr-only\">sort direction</span>\r\n <span class=\"inline-block relative\">\r\n <i [class]=\"sortdirIcon\"></i>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"pager-pages-container\">\r\n <lib-drop-down-menu [options]=\"pageSizeOptions\" [selected]=\"pageSize\" (selectedChanged)=\"pageSizeOptionChanged($event)\"></lib-drop-down-menu>\r\n <div class=\"mx-2\" *ngIf=\"count !== null && count > pageSize\">\r\n <button [disabled]=\"!canPreviousPage\" (click)=\"previousPage()\"\r\n class=\"pager-arrow-button-left\">\r\n <span class=\"sr-only\">Previous</span>\r\n <svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n </button>\r\n <button [disabled]=\"!canNextPage\" (click)=\"nextPage()\"\r\n class=\"pager-arrow-button-right\">\r\n <span class=\"sr-only\">Next</span>\r\n <svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n </button>\r\n </div>\r\n <lib-drop-down-menu *ngIf=\"(pages && pages.length > 0) && (count !== null && count > pageSize)\" [options]=\"pages\" [selected]=\"page\" (selectedChanged)=\"pageOptionChanged($event)\"></lib-drop-down-menu>\r\n </div>\r\n </div>\r\n</div>\r\n"
|
|
96
|
+
},] }
|
|
97
|
+
];
|
|
98
|
+
PagerComponent.ctorParameters = () => [
|
|
99
|
+
{ type: Router }
|
|
100
|
+
];
|
|
101
|
+
PagerComponent.propDecorators = {
|
|
102
|
+
count: [{ type: Input }],
|
|
103
|
+
page: [{ type: Input }],
|
|
104
|
+
pageSize: [{ type: Input, args: ['page-size',] }],
|
|
105
|
+
pageSizeOptions: [{ type: Input, args: ['page-size-options',] }],
|
|
106
|
+
pageChanged: [{ type: Output }],
|
|
107
|
+
pageSizeChanged: [{ type: Output }],
|
|
108
|
+
sortOptions: [{ type: Input, args: ['sort-options',] }],
|
|
109
|
+
sort: [{ type: Input, args: ['sort',] }],
|
|
110
|
+
sortdir: [{ type: Input, args: ['sort-dir',] }],
|
|
111
|
+
sortChanged: [{ type: Output }],
|
|
112
|
+
sortdirChanged: [{ type: Output }]
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3BhZ2VyL3BhZ2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQU16QyxNQUFNLE9BQU8sY0FBYztJQStCekIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUE5QmxDLFNBQVM7UUFDQSxVQUFLLEdBQWtCLElBQUksQ0FBQztRQUM1QixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLDJDQUEyQztRQUN2QixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLDJDQUEyQztRQUNmLG9CQUFlLEdBQWlCO1lBQzFELElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDeEIsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN4QixJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDeEIsSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztTQUMzQixDQUFDO1FBQ0ssVUFBSyxHQUFpQixFQUFFLENBQUM7UUFDdEIsZ0JBQVcsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMvRCxvQkFBZSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3RFLG9CQUFl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Q0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztTQUNuQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OztZQWxHRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLGlzRUFBcUM7YUFDdEM7OztZQVBRLE1BQU07OztvQkFVWixLQUFLO21CQUNMLEtBQUs7dUJBRUwsS0FBSyxTQUFDLFdBQVc7OEJBRWpCLEtBQUssU0FBQyxtQkFBbUI7MEJBUXpCLE1BQU07OEJBQ04sTUFBTTswQkFNTixLQUFLLFNBQUMsY0FBYzttQkFFcEIsS0FBSyxTQUFDLE1BQU07c0JBRVosS0FBSyxTQUFDLFVBQVU7MEJBQ2hCLE1BQU07NkJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBJY29ucyB9IGZyb20gJy4uLy4uL2ljb25zJztcclxuaW1wb3J0IHsgTWVudU9wdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXBhZ2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICAvLyBQQUdJTkdcclxuICBASW5wdXQoKSBjb3VudDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcGFnZSA9IDE7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxyXG4gIEBJbnB1dCgncGFnZS1zaXplJykgcGFnZVNpemUgPSAyMDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdwYWdlLXNpemUtb3B0aW9ucycpIHBhZ2VTaXplT3B0aW9uczogTWVudU9wdGlvbltdID0gW1xyXG4gICAgbmV3IE1lbnVPcHRpb24oJzEwJywgMTApLFxyXG4gICAgbmV3IE1lbnVPcHRpb24oJzIwJywgMjApLFxyXG4gICAgbmV3IE1lbnVPcHRpb24oJzMwJywgMzApLFxyXG4gICAgbmV3IE1lbnVPcHRpb24oJzUwJywgNTApLFxyXG4gICAgbmV3IE1lbnVPcHRpb24oJzEwMCcsIDEwMClcclxuICBdO1xyXG4gIHB1YmxpYyBwYWdlczogTWVudU9wdGlvbltdID0gW107XHJcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBPdXRwdXQoKSBwYWdlU2l6ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgcHVibGljIGNhblByZXZpb3VzUGFnZSA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjYW5OZXh0UGFnZSA9IGZhbHNlO1xyXG5cclxuICAvLyBTT1JUSU5HXHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxyXG4gIEBJbnB1dCgnc29ydC1vcHRpb25zJykgc29ydE9wdGlvbnM6IE1lbnVPcHRpb25bXSA9IFtdO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ3NvcnQnKSBzb3J0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdzb3J0LWRpcicpIHNvcnRkaXI6IHN0cmluZyB8IG51bGwgPSAnZGVzYyc7XHJcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBzb3J0ZGlyQ2hhbmdlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBwdWJsaWMgc29ydGRpckljb24gPSBJY29ucy5Tb3J0RGVzYztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FsY1BhZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FsY1BhZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdlcyA9IFtdO1xyXG4gICAgaWYgKHRoaXMuY291bnQgJiYgdGhpcy5jb3VudCA+IDApIHtcclxuICAgICAgY29uc3QgcGFnZUNvdW50ID0gdGhpcy5jb3VudCAvIHRoaXMucGFnZVNpemU7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFnZUNvdW50OyBpKyspIHtcclxuICAgICAgICB0aGlzLnBhZ2VzLnB1c2gobmV3IE1lbnVPcHRpb24oaSArIDEgKyAnJywgaSArIDEpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jYW5QcmV2aW91c1BhZ2UgPSB0aGlzLnBhZ2UgPiAxO1xyXG4gICAgdGhpcy5jYW5OZXh0UGFnZSA9IHRoaXMucGFnZSA8IHRoaXMucGFnZXMubGVuZ3RoO1xyXG4gICAgLy9jb25zb2xlLmxvZygnY2FsY1BhZ2VzJywgdGhpcy5wYWdlLCB0aGlzLmNhblByZXZpb3VzUGFnZSwgdGhpcy5jYW5OZXh0UGFnZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmV4dFBhZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5wYWdlICsgMTtcclxuICAgIHRoaXMuZ290b1BhZ2UobmV4dCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHJldmlvdXNQYWdlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLnBhZ2UgLSAxO1xyXG4gICAgdGhpcy5nb3RvUGFnZShwcmV2aW91cyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ290b1BhZ2UocGFnZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2UgPSBwYWdlO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHBhZ2UpO1xyXG4gICAgdGhpcy5jYWxjUGFnZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwYWdlU2l6ZU9wdGlvbkNoYW5nZWQocGFnZVNpemU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdlU2l6ZUNoYW5nZWQuZW1pdChwYWdlU2l6ZSk7XHJcbiAgICB0aGlzLmNhbGNQYWdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBhZ2VPcHRpb25DaGFuZ2VkKHBhZ2U6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHBhZ2UpO1xyXG4gICAgdGhpcy5jYWxjUGFnZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzb3J0T3B0aW9uQ2hhbmdlZChzb3J0OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc29ydENoYW5nZWQuZW1pdChzb3J0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVTb3J0ZGlyKCk6IHZvaWQge1xyXG4gICAgLy9jb25zb2xlLmxvZygndG9nZ2xlU29ydGRpcicpO1xyXG4gICAgbGV0IHNvcnRkaXIgPSAnZGVzYyc7XHJcbiAgICBpZiAodGhpcy5zb3J0ZGlyID09PSAnZGVzYycpIHtcclxuICAgICAgc29ydGRpciA9ICdhc2MnO1xyXG4gICAgICB0aGlzLnNvcnRkaXJJY29uID0gSWNvbnMuU29ydEFzYztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNvcnRkaXIgPSAnZGVzYyc7XHJcbiAgICAgIHRoaXMuc29ydGRpckljb24gPSBJY29ucy5Tb3J0RGVzYztcclxuICAgIH1cclxuICAgIHRoaXMuc29ydGRpckNoYW5nZWQuZW1pdChzb3J0ZGlyKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|