@swimlane/ngx-datatable 18.0.0 → 20.0.0-alpha-1
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 +0 -1
- package/esm2020/lib/components/body/body-cell.component.mjs +432 -0
- package/esm2020/lib/components/body/body-group-header-template.directive.mjs +16 -0
- package/esm2020/lib/components/body/body-group-header.directive.mjs +62 -0
- package/esm2020/lib/components/body/body-row-wrapper.component.mjs +140 -0
- package/esm2020/lib/components/body/body-row.component.mjs +262 -0
- package/esm2020/lib/components/body/body.component.mjs +863 -0
- package/esm2020/lib/components/body/progress-bar.component.mjs +27 -0
- package/esm2020/lib/components/body/scroller.component.mjs +91 -0
- package/esm2020/lib/components/body/selection.component.mjs +150 -0
- package/esm2020/lib/components/body/summary/summary-row.component.mjs +105 -0
- package/esm2020/lib/components/columns/column-cell.directive.mjs +14 -0
- package/esm2020/lib/components/columns/column-header.directive.mjs +14 -0
- package/esm2020/lib/components/columns/column.directive.mjs +98 -0
- package/esm2020/lib/components/columns/tree.directive.mjs +14 -0
- package/esm2020/lib/components/datatable.component.mjs +1008 -0
- package/esm2020/lib/components/footer/footer-template.directive.mjs +14 -0
- package/esm2020/lib/components/footer/footer.component.mjs +128 -0
- package/esm2020/lib/components/footer/footer.directive.mjs +35 -0
- package/esm2020/lib/components/footer/pager.component.mjs +181 -0
- package/esm2020/lib/components/header/header-cell.component.mjs +243 -0
- package/esm2020/lib/components/header/header.component.mjs +376 -0
- package/esm2020/lib/components/row-detail/row-detail-template.directive.mjs +16 -0
- package/esm2020/lib/components/row-detail/row-detail.directive.mjs +63 -0
- package/esm2020/lib/directives/draggable.directive.mjs +108 -0
- package/esm2020/lib/directives/long-press.directive.mjs +117 -0
- package/esm2020/lib/directives/orderable.directive.mjs +136 -0
- package/esm2020/lib/directives/resizeable.directive.mjs +93 -0
- package/esm2020/lib/directives/visibility.directive.mjs +63 -0
- package/{esm2015/lib/events.js → esm2020/lib/events.mjs} +0 -0
- package/esm2020/lib/ngx-datatable.module.mjs +139 -0
- package/esm2020/lib/services/column-changes.service.mjs +24 -0
- package/esm2020/lib/services/dimensions-helper.service.mjs +17 -0
- package/esm2020/lib/services/scrollbar-helper.service.mjs +37 -0
- package/{esm2015/lib/types/click.type.js → esm2020/lib/types/click.type.mjs} +0 -0
- package/{esm2015/lib/types/column-mode.type.js → esm2020/lib/types/column-mode.type.mjs} +0 -0
- package/{esm2015/lib/types/contextmenu.type.js → esm2020/lib/types/contextmenu.type.mjs} +0 -0
- package/{esm2015/lib/types/selection.type.js → esm2020/lib/types/selection.type.mjs} +0 -0
- package/{esm2015/lib/types/sort-direction.type.js → esm2020/lib/types/sort-direction.type.mjs} +0 -0
- package/{esm2015/lib/types/sort-prop-dir.type.js → esm2020/lib/types/sort-prop-dir.type.mjs} +1 -0
- package/{esm2015/lib/types/sort.type.js → esm2020/lib/types/sort.type.mjs} +0 -0
- package/{esm2015/lib/types/table-column.type.js → esm2020/lib/types/table-column.type.mjs} +1 -0
- package/{esm2015/lib/utils/camel-case.js → esm2020/lib/utils/camel-case.mjs} +0 -0
- package/{esm2015/lib/utils/column-helper.js → esm2020/lib/utils/column-helper.mjs} +0 -0
- package/{esm2015/lib/utils/column-prop-getters.js → esm2020/lib/utils/column-prop-getters.mjs} +0 -0
- package/{esm2015/lib/utils/column.js → esm2020/lib/utils/column.mjs} +0 -0
- package/{esm2015/lib/utils/elm-from-point.js → esm2020/lib/utils/elm-from-point.mjs} +0 -0
- package/{esm2015/lib/utils/id.js → esm2020/lib/utils/id.mjs} +0 -0
- package/{esm2015/lib/utils/keys.js → esm2020/lib/utils/keys.mjs} +0 -0
- package/{esm2015/lib/utils/math.js → esm2020/lib/utils/math.mjs} +0 -0
- package/esm2020/lib/utils/prefixes.mjs +38 -0
- package/{esm2015/lib/utils/row-height-cache.js → esm2020/lib/utils/row-height-cache.mjs} +0 -0
- package/{esm2015/lib/utils/selection.js → esm2020/lib/utils/selection.mjs} +0 -0
- package/{esm2015/lib/utils/sort.js → esm2020/lib/utils/sort.mjs} +0 -0
- package/{esm2015/lib/utils/throttle.js → esm2020/lib/utils/throttle.mjs} +0 -0
- package/{esm2015/lib/utils/translate.js → esm2020/lib/utils/translate.mjs} +0 -0
- package/{esm2015/lib/utils/tree.js → esm2020/lib/utils/tree.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/{esm2015/swimlane-ngx-datatable.js → esm2020/swimlane-ngx-datatable.mjs} +0 -0
- package/fesm2015/{swimlane-ngx-datatable.js → swimlane-ngx-datatable.mjs} +4104 -3337
- package/fesm2015/swimlane-ngx-datatable.mjs.map +1 -0
- package/fesm2020/swimlane-ngx-datatable.mjs +5974 -0
- package/fesm2020/swimlane-ngx-datatable.mjs.map +1 -0
- package/lib/components/body/body-cell.component.d.ts +3 -0
- package/lib/components/body/body-group-header-template.directive.d.ts +3 -0
- package/lib/components/body/body-group-header.directive.d.ts +3 -0
- package/lib/components/body/body-row-wrapper.component.d.ts +3 -0
- package/lib/components/body/body-row.component.d.ts +3 -0
- package/lib/components/body/body.component.d.ts +3 -0
- package/lib/components/body/progress-bar.component.d.ts +3 -0
- package/lib/components/body/scroller.component.d.ts +3 -0
- package/lib/components/body/selection.component.d.ts +3 -0
- package/lib/components/body/summary/summary-row.component.d.ts +3 -0
- package/lib/components/columns/column-cell.directive.d.ts +3 -0
- package/lib/components/columns/column-header.directive.d.ts +3 -0
- package/lib/components/columns/column.directive.d.ts +3 -0
- package/lib/components/columns/tree.directive.d.ts +3 -0
- package/lib/components/datatable.component.d.ts +3 -0
- package/lib/components/footer/footer-template.directive.d.ts +3 -0
- package/lib/components/footer/footer.component.d.ts +3 -0
- package/lib/components/footer/footer.directive.d.ts +3 -0
- package/lib/components/footer/pager.component.d.ts +3 -0
- package/lib/components/header/header-cell.component.d.ts +3 -0
- package/lib/components/header/header.component.d.ts +3 -0
- package/lib/components/row-detail/row-detail-template.directive.d.ts +3 -0
- package/lib/components/row-detail/row-detail.directive.d.ts +3 -0
- package/lib/directives/draggable.directive.d.ts +3 -0
- package/lib/directives/long-press.directive.d.ts +3 -0
- package/lib/directives/orderable.directive.d.ts +3 -0
- package/lib/directives/resizeable.directive.d.ts +3 -0
- package/lib/directives/visibility.directive.d.ts +3 -0
- package/lib/ngx-datatable.module.d.ts +33 -0
- package/lib/services/column-changes.service.d.ts +3 -0
- package/lib/services/dimensions-helper.service.d.ts +3 -0
- package/lib/services/scrollbar-helper.service.d.ts +3 -0
- package/package.json +24 -12
- package/swimlane-ngx-datatable.d.ts +1 -0
- package/bundles/swimlane-ngx-datatable.umd.js +0 -5876
- package/bundles/swimlane-ngx-datatable.umd.js.map +0 -1
- package/bundles/swimlane-ngx-datatable.umd.min.js +0 -2
- package/bundles/swimlane-ngx-datatable.umd.min.js.map +0 -1
- package/esm2015/lib/components/body/body-cell.component.js +0 -361
- package/esm2015/lib/components/body/body-group-header-template.directive.js +0 -15
- package/esm2015/lib/components/body/body-group-header.directive.js +0 -54
- package/esm2015/lib/components/body/body-row-wrapper.component.js +0 -106
- package/esm2015/lib/components/body/body-row.component.js +0 -212
- package/esm2015/lib/components/body/body.component.js +0 -713
- package/esm2015/lib/components/body/progress-bar.component.js +0 -17
- package/esm2015/lib/components/body/scroller.component.js +0 -83
- package/esm2015/lib/components/body/selection.component.js +0 -140
- package/esm2015/lib/components/body/summary/summary-row.component.js +0 -81
- package/esm2015/lib/components/columns/column-cell.directive.js +0 -13
- package/esm2015/lib/components/columns/column-header.directive.js +0 -13
- package/esm2015/lib/components/columns/column.directive.js +0 -65
- package/esm2015/lib/components/columns/tree.directive.js +0 -13
- package/esm2015/lib/components/datatable.component.js +0 -925
- package/esm2015/lib/components/footer/footer-template.directive.js +0 -13
- package/esm2015/lib/components/footer/footer.component.js +0 -75
- package/esm2015/lib/components/footer/footer.directive.js +0 -22
- package/esm2015/lib/components/footer/pager.component.js +0 -136
- package/esm2015/lib/components/header/header-cell.component.js +0 -191
- package/esm2015/lib/components/header/header.component.js +0 -295
- package/esm2015/lib/components/row-detail/row-detail-template.directive.js +0 -15
- package/esm2015/lib/components/row-detail/row-detail.directive.js +0 -55
- package/esm2015/lib/directives/draggable.directive.js +0 -102
- package/esm2015/lib/directives/long-press.directive.js +0 -103
- package/esm2015/lib/directives/orderable.directive.js +0 -131
- package/esm2015/lib/directives/resizeable.directive.js +0 -89
- package/esm2015/lib/directives/visibility.directive.js +0 -62
- package/esm2015/lib/ngx-datatable.module.js +0 -96
- package/esm2015/lib/services/column-changes.service.js +0 -21
- package/esm2015/lib/services/dimensions-helper.service.js +0 -14
- package/esm2015/lib/services/scrollbar-helper.service.js +0 -34
- package/esm2015/lib/utils/prefixes.js +0 -40
- package/fesm2015/swimlane-ngx-datatable.js.map +0 -1
- package/swimlane-ngx-datatable.metadata.json +0 -1
|
@@ -1,361 +0,0 @@
|
|
|
1
|
-
import { Component, Input, HostBinding, ViewChild, ChangeDetectorRef, Output, EventEmitter, HostListener, ElementRef, ViewContainerRef, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
-
import { SortDirection } from '../../types/sort-direction.type';
|
|
3
|
-
import { Keys } from '../../utils/keys';
|
|
4
|
-
export class DataTableBodyCellComponent {
|
|
5
|
-
constructor(element, cd) {
|
|
6
|
-
this.cd = cd;
|
|
7
|
-
this.activate = new EventEmitter();
|
|
8
|
-
this.treeAction = new EventEmitter();
|
|
9
|
-
this.isFocused = false;
|
|
10
|
-
this.onCheckboxChangeFn = this.onCheckboxChange.bind(this);
|
|
11
|
-
this.activateFn = this.activate.emit.bind(this.activate);
|
|
12
|
-
this.cellContext = {
|
|
13
|
-
onCheckboxChangeFn: this.onCheckboxChangeFn,
|
|
14
|
-
activateFn: this.activateFn,
|
|
15
|
-
row: this.row,
|
|
16
|
-
group: this.group,
|
|
17
|
-
value: this.value,
|
|
18
|
-
column: this.column,
|
|
19
|
-
rowHeight: this.rowHeight,
|
|
20
|
-
isSelected: this.isSelected,
|
|
21
|
-
rowIndex: this.rowIndex,
|
|
22
|
-
treeStatus: this.treeStatus,
|
|
23
|
-
onTreeAction: this.onTreeAction.bind(this)
|
|
24
|
-
};
|
|
25
|
-
this._element = element.nativeElement;
|
|
26
|
-
}
|
|
27
|
-
set group(group) {
|
|
28
|
-
this._group = group;
|
|
29
|
-
this.cellContext.group = group;
|
|
30
|
-
this.checkValueUpdates();
|
|
31
|
-
this.cd.markForCheck();
|
|
32
|
-
}
|
|
33
|
-
get group() {
|
|
34
|
-
return this._group;
|
|
35
|
-
}
|
|
36
|
-
set rowHeight(val) {
|
|
37
|
-
this._rowHeight = val;
|
|
38
|
-
this.cellContext.rowHeight = val;
|
|
39
|
-
this.checkValueUpdates();
|
|
40
|
-
this.cd.markForCheck();
|
|
41
|
-
}
|
|
42
|
-
get rowHeight() {
|
|
43
|
-
return this._rowHeight;
|
|
44
|
-
}
|
|
45
|
-
set isSelected(val) {
|
|
46
|
-
this._isSelected = val;
|
|
47
|
-
this.cellContext.isSelected = val;
|
|
48
|
-
this.cd.markForCheck();
|
|
49
|
-
}
|
|
50
|
-
get isSelected() {
|
|
51
|
-
return this._isSelected;
|
|
52
|
-
}
|
|
53
|
-
set expanded(val) {
|
|
54
|
-
this._expanded = val;
|
|
55
|
-
this.cellContext.expanded = val;
|
|
56
|
-
this.cd.markForCheck();
|
|
57
|
-
}
|
|
58
|
-
get expanded() {
|
|
59
|
-
return this._expanded;
|
|
60
|
-
}
|
|
61
|
-
set rowIndex(val) {
|
|
62
|
-
this._rowIndex = val;
|
|
63
|
-
this.cellContext.rowIndex = val;
|
|
64
|
-
this.checkValueUpdates();
|
|
65
|
-
this.cd.markForCheck();
|
|
66
|
-
}
|
|
67
|
-
get rowIndex() {
|
|
68
|
-
return this._rowIndex;
|
|
69
|
-
}
|
|
70
|
-
set column(column) {
|
|
71
|
-
this._column = column;
|
|
72
|
-
this.cellContext.column = column;
|
|
73
|
-
this.checkValueUpdates();
|
|
74
|
-
this.cd.markForCheck();
|
|
75
|
-
}
|
|
76
|
-
get column() {
|
|
77
|
-
return this._column;
|
|
78
|
-
}
|
|
79
|
-
set row(row) {
|
|
80
|
-
this._row = row;
|
|
81
|
-
this.cellContext.row = row;
|
|
82
|
-
this.checkValueUpdates();
|
|
83
|
-
this.cd.markForCheck();
|
|
84
|
-
}
|
|
85
|
-
get row() {
|
|
86
|
-
return this._row;
|
|
87
|
-
}
|
|
88
|
-
set sorts(val) {
|
|
89
|
-
this._sorts = val;
|
|
90
|
-
this.calcSortDir = this.calcSortDir(val);
|
|
91
|
-
}
|
|
92
|
-
get sorts() {
|
|
93
|
-
return this._sorts;
|
|
94
|
-
}
|
|
95
|
-
set treeStatus(status) {
|
|
96
|
-
if (status !== 'collapsed' && status !== 'expanded' && status !== 'loading' && status !== 'disabled') {
|
|
97
|
-
this._treeStatus = 'collapsed';
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
this._treeStatus = status;
|
|
101
|
-
}
|
|
102
|
-
this.cellContext.treeStatus = this._treeStatus;
|
|
103
|
-
this.checkValueUpdates();
|
|
104
|
-
this.cd.markForCheck();
|
|
105
|
-
}
|
|
106
|
-
get treeStatus() {
|
|
107
|
-
return this._treeStatus;
|
|
108
|
-
}
|
|
109
|
-
get columnCssClasses() {
|
|
110
|
-
let cls = 'datatable-body-cell';
|
|
111
|
-
if (this.column.cellClass) {
|
|
112
|
-
if (typeof this.column.cellClass === 'string') {
|
|
113
|
-
cls += ' ' + this.column.cellClass;
|
|
114
|
-
}
|
|
115
|
-
else if (typeof this.column.cellClass === 'function') {
|
|
116
|
-
const res = this.column.cellClass({
|
|
117
|
-
row: this.row,
|
|
118
|
-
group: this.group,
|
|
119
|
-
column: this.column,
|
|
120
|
-
value: this.value,
|
|
121
|
-
rowHeight: this.rowHeight
|
|
122
|
-
});
|
|
123
|
-
if (typeof res === 'string') {
|
|
124
|
-
cls += ' ' + res;
|
|
125
|
-
}
|
|
126
|
-
else if (typeof res === 'object') {
|
|
127
|
-
const keys = Object.keys(res);
|
|
128
|
-
for (const k of keys) {
|
|
129
|
-
if (res[k] === true) {
|
|
130
|
-
cls += ` ${k}`;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
if (!this.sortDir) {
|
|
137
|
-
cls += ' sort-active';
|
|
138
|
-
}
|
|
139
|
-
if (this.isFocused) {
|
|
140
|
-
cls += ' active';
|
|
141
|
-
}
|
|
142
|
-
if (this.sortDir === SortDirection.asc) {
|
|
143
|
-
cls += ' sort-asc';
|
|
144
|
-
}
|
|
145
|
-
if (this.sortDir === SortDirection.desc) {
|
|
146
|
-
cls += ' sort-desc';
|
|
147
|
-
}
|
|
148
|
-
return cls;
|
|
149
|
-
}
|
|
150
|
-
get width() {
|
|
151
|
-
return this.column.width;
|
|
152
|
-
}
|
|
153
|
-
get minWidth() {
|
|
154
|
-
return this.column.minWidth;
|
|
155
|
-
}
|
|
156
|
-
get maxWidth() {
|
|
157
|
-
return this.column.maxWidth;
|
|
158
|
-
}
|
|
159
|
-
get height() {
|
|
160
|
-
const height = this.rowHeight;
|
|
161
|
-
if (isNaN(height)) {
|
|
162
|
-
return height;
|
|
163
|
-
}
|
|
164
|
-
return height + 'px';
|
|
165
|
-
}
|
|
166
|
-
ngDoCheck() {
|
|
167
|
-
this.checkValueUpdates();
|
|
168
|
-
}
|
|
169
|
-
ngOnDestroy() {
|
|
170
|
-
if (this.cellTemplate) {
|
|
171
|
-
this.cellTemplate.clear();
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
checkValueUpdates() {
|
|
175
|
-
let value = '';
|
|
176
|
-
if (!this.row || !this.column) {
|
|
177
|
-
value = '';
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
const val = this.column.$$valueGetter(this.row, this.column.prop);
|
|
181
|
-
const userPipe = this.column.pipe;
|
|
182
|
-
if (userPipe) {
|
|
183
|
-
value = userPipe.transform(val);
|
|
184
|
-
}
|
|
185
|
-
else if (value !== undefined) {
|
|
186
|
-
value = val;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
if (this.value !== value) {
|
|
190
|
-
this.value = value;
|
|
191
|
-
this.cellContext.value = value;
|
|
192
|
-
this.sanitizedValue = value !== null && value !== undefined ? this.stripHtml(value) : value;
|
|
193
|
-
this.cd.markForCheck();
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
onFocus() {
|
|
197
|
-
this.isFocused = true;
|
|
198
|
-
}
|
|
199
|
-
onBlur() {
|
|
200
|
-
this.isFocused = false;
|
|
201
|
-
}
|
|
202
|
-
onClick(event) {
|
|
203
|
-
this.activate.emit({
|
|
204
|
-
type: 'click',
|
|
205
|
-
event,
|
|
206
|
-
row: this.row,
|
|
207
|
-
group: this.group,
|
|
208
|
-
rowHeight: this.rowHeight,
|
|
209
|
-
column: this.column,
|
|
210
|
-
value: this.value,
|
|
211
|
-
cellElement: this._element
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
onDblClick(event) {
|
|
215
|
-
this.activate.emit({
|
|
216
|
-
type: 'dblclick',
|
|
217
|
-
event,
|
|
218
|
-
row: this.row,
|
|
219
|
-
group: this.group,
|
|
220
|
-
rowHeight: this.rowHeight,
|
|
221
|
-
column: this.column,
|
|
222
|
-
value: this.value,
|
|
223
|
-
cellElement: this._element
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
onKeyDown(event) {
|
|
227
|
-
const keyCode = event.keyCode;
|
|
228
|
-
const isTargetCell = event.target === this._element;
|
|
229
|
-
const isAction = keyCode === Keys.return ||
|
|
230
|
-
keyCode === Keys.down ||
|
|
231
|
-
keyCode === Keys.up ||
|
|
232
|
-
keyCode === Keys.left ||
|
|
233
|
-
keyCode === Keys.right;
|
|
234
|
-
if (isAction && isTargetCell) {
|
|
235
|
-
event.preventDefault();
|
|
236
|
-
event.stopPropagation();
|
|
237
|
-
this.activate.emit({
|
|
238
|
-
type: 'keydown',
|
|
239
|
-
event,
|
|
240
|
-
row: this.row,
|
|
241
|
-
group: this.group,
|
|
242
|
-
rowHeight: this.rowHeight,
|
|
243
|
-
column: this.column,
|
|
244
|
-
value: this.value,
|
|
245
|
-
cellElement: this._element
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
onCheckboxChange(event) {
|
|
250
|
-
this.activate.emit({
|
|
251
|
-
type: 'checkbox',
|
|
252
|
-
event,
|
|
253
|
-
row: this.row,
|
|
254
|
-
group: this.group,
|
|
255
|
-
rowHeight: this.rowHeight,
|
|
256
|
-
column: this.column,
|
|
257
|
-
value: this.value,
|
|
258
|
-
cellElement: this._element,
|
|
259
|
-
treeStatus: 'collapsed'
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
calcSortDir(sorts) {
|
|
263
|
-
if (!sorts) {
|
|
264
|
-
return;
|
|
265
|
-
}
|
|
266
|
-
const sort = sorts.find((s) => {
|
|
267
|
-
return s.prop === this.column.prop;
|
|
268
|
-
});
|
|
269
|
-
if (sort) {
|
|
270
|
-
return sort.dir;
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
stripHtml(html) {
|
|
274
|
-
if (!html.replace) {
|
|
275
|
-
return html;
|
|
276
|
-
}
|
|
277
|
-
return html.replace(/<\/?[^>]+(>|$)/g, '');
|
|
278
|
-
}
|
|
279
|
-
onTreeAction() {
|
|
280
|
-
this.treeAction.emit(this.row);
|
|
281
|
-
}
|
|
282
|
-
calcLeftMargin(column, row) {
|
|
283
|
-
const levelIndent = column.treeLevelIndent != null ? column.treeLevelIndent : 50;
|
|
284
|
-
return column.isTreeColumn ? row.level * levelIndent : 0;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
DataTableBodyCellComponent.decorators = [
|
|
288
|
-
{ type: Component, args: [{
|
|
289
|
-
selector: 'datatable-body-cell',
|
|
290
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
291
|
-
template: `
|
|
292
|
-
<div class="datatable-body-cell-label" [style.margin-left.px]="calcLeftMargin(column, row)">
|
|
293
|
-
<label
|
|
294
|
-
*ngIf="column.checkboxable && (!displayCheck || displayCheck(row, column, value))"
|
|
295
|
-
class="datatable-checkbox"
|
|
296
|
-
>
|
|
297
|
-
<input type="checkbox" [checked]="isSelected" (click)="onCheckboxChange($event)" />
|
|
298
|
-
</label>
|
|
299
|
-
<ng-container *ngIf="column.isTreeColumn">
|
|
300
|
-
<button
|
|
301
|
-
*ngIf="!column.treeToggleTemplate"
|
|
302
|
-
class="datatable-tree-button"
|
|
303
|
-
[disabled]="treeStatus === 'disabled'"
|
|
304
|
-
(click)="onTreeAction()"
|
|
305
|
-
>
|
|
306
|
-
<span>
|
|
307
|
-
<i *ngIf="treeStatus === 'loading'" class="icon datatable-icon-collapse"></i>
|
|
308
|
-
<i *ngIf="treeStatus === 'collapsed'" class="icon datatable-icon-up"></i>
|
|
309
|
-
<i *ngIf="treeStatus === 'expanded' || treeStatus === 'disabled'" class="icon datatable-icon-down"></i>
|
|
310
|
-
</span>
|
|
311
|
-
</button>
|
|
312
|
-
<ng-template
|
|
313
|
-
*ngIf="column.treeToggleTemplate"
|
|
314
|
-
[ngTemplateOutlet]="column.treeToggleTemplate"
|
|
315
|
-
[ngTemplateOutletContext]="{ cellContext: cellContext }"
|
|
316
|
-
>
|
|
317
|
-
</ng-template>
|
|
318
|
-
</ng-container>
|
|
319
|
-
|
|
320
|
-
<span *ngIf="!column.cellTemplate" [title]="sanitizedValue" [innerHTML]="value"> </span>
|
|
321
|
-
<ng-template
|
|
322
|
-
#cellTemplate
|
|
323
|
-
*ngIf="column.cellTemplate"
|
|
324
|
-
[ngTemplateOutlet]="column.cellTemplate"
|
|
325
|
-
[ngTemplateOutletContext]="cellContext"
|
|
326
|
-
>
|
|
327
|
-
</ng-template>
|
|
328
|
-
</div>
|
|
329
|
-
`
|
|
330
|
-
},] }
|
|
331
|
-
];
|
|
332
|
-
DataTableBodyCellComponent.ctorParameters = () => [
|
|
333
|
-
{ type: ElementRef },
|
|
334
|
-
{ type: ChangeDetectorRef }
|
|
335
|
-
];
|
|
336
|
-
DataTableBodyCellComponent.propDecorators = {
|
|
337
|
-
displayCheck: [{ type: Input }],
|
|
338
|
-
group: [{ type: Input }],
|
|
339
|
-
rowHeight: [{ type: Input }],
|
|
340
|
-
isSelected: [{ type: Input }],
|
|
341
|
-
expanded: [{ type: Input }],
|
|
342
|
-
rowIndex: [{ type: Input }],
|
|
343
|
-
column: [{ type: Input }],
|
|
344
|
-
row: [{ type: Input }],
|
|
345
|
-
sorts: [{ type: Input }],
|
|
346
|
-
treeStatus: [{ type: Input }],
|
|
347
|
-
activate: [{ type: Output }],
|
|
348
|
-
treeAction: [{ type: Output }],
|
|
349
|
-
cellTemplate: [{ type: ViewChild, args: ['cellTemplate', { read: ViewContainerRef, static: true },] }],
|
|
350
|
-
columnCssClasses: [{ type: HostBinding, args: ['class',] }],
|
|
351
|
-
width: [{ type: HostBinding, args: ['style.width.px',] }],
|
|
352
|
-
minWidth: [{ type: HostBinding, args: ['style.minWidth.px',] }],
|
|
353
|
-
maxWidth: [{ type: HostBinding, args: ['style.maxWidth.px',] }],
|
|
354
|
-
height: [{ type: HostBinding, args: ['style.height',] }],
|
|
355
|
-
onFocus: [{ type: HostListener, args: ['focus',] }],
|
|
356
|
-
onBlur: [{ type: HostListener, args: ['blur',] }],
|
|
357
|
-
onClick: [{ type: HostListener, args: ['click', ['$event'],] }],
|
|
358
|
-
onDblClick: [{ type: HostListener, args: ['dblclick', ['$event'],] }],
|
|
359
|
-
onKeyDown: [{ type: HostListener, args: ['keydown', ['$event'],] }]
|
|
360
|
-
};
|
|
361
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N3aW1sYW5lL25neC1kYXRhdGFibGUvc3JjL2xpYi9jb21wb25lbnRzL2JvZHkvYm9keS1jZWxsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sWUFBWSxFQUNaLFlBQVksRUFDWixVQUFVLEVBQ1YsZ0JBQWdCLEVBR2hCLHVCQUF1QixFQUN4QixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBK0N4QyxNQUFNLE9BQU8sMEJBQTBCO0lBZ05yQyxZQUFZLE9BQW1CLEVBQVUsRUFBcUI7UUFBckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUExR3BELGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVqRCxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUEyRTdELGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsdUJBQWtCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxlQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwRCxnQkFBVyxHQUFRO1lBQ2pCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDM0MsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLEtBQUssRUFBRSxJQUFJLENBQUMs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aW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgUGlwZVRyYW5zZm9ybSxcbiAgSG9zdEJpbmRpbmcsXG4gIFZpZXdDaGlsZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIE9uRGVzdHJveSxcbiAgRG9DaGVjayxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vdHlwZXMvdGFibGUtY29sdW1uLnR5cGUnO1xuaW1wb3J0IHsgU29ydERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL3NvcnQtZGlyZWN0aW9uLnR5cGUnO1xuaW1wb3J0IHsgS2V5cyB9IGZyb20gJy4uLy4uL3V0aWxzL2tleXMnO1xuXG5leHBvcnQgdHlwZSBUcmVlU3RhdHVzID0gJ2NvbGxhcHNlZCcgfCAnZXhwYW5kZWQnIHwgJ2xvYWRpbmcnIHwgJ2Rpc2FibGVkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YXRhYmxlLWJvZHktY2VsbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJkYXRhdGFibGUtYm9keS1jZWxsLWxhYmVsXCIgW3N0eWxlLm1hcmdpbi1sZWZ0LnB4XT1cImNhbGNMZWZ0TWFyZ2luKGNvbHVtbiwgcm93KVwiPlxuICAgICAgPGxhYmVsXG4gICAgICAgICpuZ0lmPVwiY29sdW1uLmNoZWNrYm94YWJsZSAmJiAoIWRpc3BsYXlDaGVjayB8fCBkaXNwbGF5Q2hlY2socm93LCBjb2x1bW4sIHZhbHVlKSlcIlxuICAgICAgICBjbGFzcz1cImRhdGF0YWJsZS1jaGVja2JveFwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkXCIgKGNsaWNrKT1cIm9uQ2hlY2tib3hDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICA8L2xhYmVsPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5pc1RyZWVDb2x1bW5cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiIWNvbHVtbi50cmVlVG9nZ2xlVGVtcGxhdGVcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YXRhYmxlLXRyZWUtYnV0dG9uXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwidHJlZVN0YXR1cyA9PT0gJ2Rpc2FibGVkJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uVHJlZUFjdGlvbigpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgPGkgKm5nSWY9XCJ0cmVlU3RhdHVzID09PSAnbG9hZGluZydcIiBjbGFzcz1cImljb24gZGF0YXRhYmxlLWljb24tY29sbGFwc2VcIj48L2k+XG4gICAgICAgICAgICA8aSAqbmdJZj1cInRyZWVTdGF0dXMgPT09ICdjb2xsYXBzZWQnXCIgY2xhc3M9XCJpY29uIGRhdGF0YWJsZS1pY29uLXVwXCI+PC9pPlxuICAgICAgICAgICAgPGkgKm5nSWY9XCJ0cmVlU3RhdHVzID09PSAnZXhwYW5kZWQnIHx8IHRyZWVTdGF0dXMgPT09ICdkaXNhYmxlZCdcIiBjbGFzcz1cImljb24gZGF0YXRhYmxlLWljb24tZG93blwiPjwvaT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAqbmdJZj1cImNvbHVtbi50cmVlVG9nZ2xlVGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi50cmVlVG9nZ2xlVGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGNlbGxDb250ZXh0OiBjZWxsQ29udGV4dCB9XCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbHVtbi5jZWxsVGVtcGxhdGVcIiBbdGl0bGVdPVwic2FuaXRpemVkVmFsdWVcIiBbaW5uZXJIVE1MXT1cInZhbHVlXCI+IDwvc3Bhbj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAjY2VsbFRlbXBsYXRlXG4gICAgICAgICpuZ0lmPVwiY29sdW1uLmNlbGxUZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5jZWxsVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiY2VsbENvbnRleHRcIlxuICAgICAgPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVCb2R5Q2VsbENvbXBvbmVudCBpbXBsZW1lbnRzIERvQ2hlY2ssIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGRpc3BsYXlDaGVjazogKHJvdzogYW55LCBjb2x1bW4/OiBUYWJsZUNvbHVtbiwgdmFsdWU/OiBhbnkpID0+IGJvb2xlYW47XG5cbiAgQElucHV0KCkgc2V0IGdyb3VwKGdyb3VwOiBhbnkpIHtcbiAgICB0aGlzLl9ncm91cCA9IGdyb3VwO1xuICAgIHRoaXMuY2VsbENvbnRleHQuZ3JvdXAgPSBncm91cDtcbiAgICB0aGlzLmNoZWNrVmFsdWVVcGRhdGVzKCk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldCBncm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZ3JvdXA7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgcm93SGVpZ2h0KHZhbDogbnVtYmVyKSB7XG4gICAgdGhpcy5fcm93SGVpZ2h0ID0gdmFsO1xuICAgIHRoaXMuY2VsbENvbnRleHQucm93SGVpZ2h0ID0gdmFsO1xuICAgIHRoaXMuY2hlY2tWYWx1ZVVwZGF0ZXMoKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IHJvd0hlaWdodCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcm93SGVpZ2h0O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGlzU2VsZWN0ZWQodmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNTZWxlY3RlZCA9IHZhbDtcbiAgICB0aGlzLmNlbGxDb250ZXh0LmlzU2VsZWN0ZWQgPSB2YWw7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldCBpc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1NlbGVjdGVkO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGV4cGFuZGVkKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuX2V4cGFuZGVkID0gdmFsO1xuICAgIHRoaXMuY2VsbENvbnRleHQuZXhwYW5kZWQgPSB2YWw7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZXhwYW5kZWQ7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgcm93SW5kZXgodmFsOiBudW1iZXIpIHtcbiAgICB0aGlzLl9yb3dJbmRleCA9IHZhbDtcbiAgICB0aGlzLmNlbGxDb250ZXh0LnJvd0luZGV4ID0gdmFsO1xuICAgIHRoaXMuY2hlY2tWYWx1ZVVwZGF0ZXMoKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IHJvd0luZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd0luZGV4O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGNvbHVtbihjb2x1bW46IFRhYmxlQ29sdW1uKSB7XG4gICAgdGhpcy5fY29sdW1uID0gY29sdW1uO1xuICAgIHRoaXMuY2VsbENvbnRleHQuY29sdW1uID0gY29sdW1uO1xuICAgIHRoaXMuY2hlY2tWYWx1ZVVwZGF0ZXMoKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbigpOiBUYWJsZUNvbHVtbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbjtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCByb3cocm93OiBhbnkpIHtcbiAgICB0aGlzLl9yb3cgPSByb3c7XG4gICAgdGhpcy5jZWxsQ29udGV4dC5yb3cgPSByb3c7XG4gICAgdGhpcy5jaGVja1ZhbHVlVXBkYXRlcygpO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXQgcm93KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdztcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzb3J0cyh2YWw6IGFueVtdKSB7XG4gICAgdGhpcy5fc29ydHMgPSB2YWw7XG4gICAgdGhpcy5jYWxjU29ydERpciA9IHRoaXMuY2FsY1NvcnREaXIodmFsKTtcbiAgfVxuXG4gIGdldCBzb3J0cygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NvcnRzO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHRyZWVTdGF0dXMoc3RhdHVzOiBUcmVlU3RhdHVzKSB7XG4gICAgaWYgKHN0YXR1cyAhPT0gJ2NvbGxhcHNlZCcgJiYgc3RhdHVzICE9PSAnZXhwYW5kZWQnICYmIHN0YXR1cyAhPT0gJ2xvYWRpbmcnICYmIHN0YXR1cyAhPT0gJ2Rpc2FibGVkJykge1xuICAgICAgdGhpcy5fdHJlZVN0YXR1cyA9ICdjb2xsYXBzZWQnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90cmVlU3RhdHVzID0gc3RhdHVzO1xuICAgIH1cbiAgICB0aGlzLmNlbGxDb250ZXh0LnRyZWVTdGF0dXMgPSB0aGlzLl90cmVlU3RhdHVzO1xuICAgIHRoaXMuY2hlY2tWYWx1ZVVwZGF0ZXMoKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IHRyZWVTdGF0dXMoKTogVHJlZVN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuX3RyZWVTdGF0dXM7XG4gIH1cblxuICBAT3V0cHV0KCkgYWN0aXZhdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKSB0cmVlQWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdjZWxsVGVtcGxhdGUnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBjZWxsVGVtcGxhdGU6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBjb2x1bW5Dc3NDbGFzc2VzKCk6IGFueSB7XG4gICAgbGV0IGNscyA9ICdkYXRhdGFibGUtYm9keS1jZWxsJztcbiAgICBpZiAodGhpcy5jb2x1bW4uY2VsbENsYXNzKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29sdW1uLmNlbGxDbGFzcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2xzICs9ICcgJyArIHRoaXMuY29sdW1uLmNlbGxDbGFzcztcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuY29sdW1uLmNlbGxDbGFzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLmNvbHVtbi5jZWxsQ2xhc3Moe1xuICAgICAgICAgIHJvdzogdGhpcy5yb3csXG4gICAgICAgICAgZ3JvdXA6IHRoaXMuZ3JvdXAsXG4gICAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcbiAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgICByb3dIZWlnaHQ6IHRoaXMucm93SGVpZ2h0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0eXBlb2YgcmVzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNscyArPSAnICcgKyByZXM7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocmVzKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgICAgICAgICAgaWYgKHJlc1trXSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICBjbHMgKz0gYCAke2t9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCF0aGlzLnNvcnREaXIpIHtcbiAgICAgIGNscyArPSAnIHNvcnQtYWN0aXZlJztcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNGb2N1c2VkKSB7XG4gICAgICBjbHMgKz0gJyBhY3RpdmUnO1xuICAgIH1cbiAgICBpZiAodGhpcy5zb3J0RGlyID09PSBTb3J0RGlyZWN0aW9uLmFzYykge1xuICAgICAgY2xzICs9ICcgc29ydC1hc2MnO1xuICAgIH1cbiAgICBpZiAodGhpcy5zb3J0RGlyID09PSBTb3J0RGlyZWN0aW9uLmRlc2MpIHtcbiAgICAgIGNscyArPSAnIHNvcnQtZGVzYyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNscztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgucHgnKVxuICBnZXQgd2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW4ud2lkdGg7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1pbldpZHRoLnB4JylcbiAgZ2V0IG1pbldpZHRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uLm1pbldpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXhXaWR0aC5weCcpXG4gIGdldCBtYXhXaWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbi5tYXhXaWR0aDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0JylcbiAgZ2V0IGhlaWdodCgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIGNvbnN0IGhlaWdodCA9IHRoaXMucm93SGVpZ2h0O1xuICAgIGlmIChpc05hTihoZWlnaHQpKSB7XG4gICAgICByZXR1cm4gaGVpZ2h0O1xuICAgIH1cbiAgICByZXR1cm4gaGVpZ2h0ICsgJ3B4JztcbiAgfVxuXG4gIHNhbml0aXplZFZhbHVlOiBhbnk7XG4gIHZhbHVlOiBhbnk7XG4gIHNvcnREaXI6IFNvcnREaXJlY3Rpb247XG4gIGlzRm9jdXNlZCA9IGZhbHNlO1xuICBvbkNoZWNrYm94Q2hhbmdlRm4gPSB0aGlzLm9uQ2hlY2tib3hDaGFuZ2UuYmluZCh0aGlzKTtcbiAgYWN0aXZhdGVGbiA9IHRoaXMuYWN0aXZhdGUuZW1pdC5iaW5kKHRoaXMuYWN0aXZhdGUpO1xuXG4gIGNlbGxDb250ZXh0OiBhbnkgPSB7XG4gICAgb25DaGVja2JveENoYW5nZUZuOiB0aGlzLm9uQ2hlY2tib3hDaGFuZ2VGbixcbiAgICBhY3RpdmF0ZUZuOiB0aGlzLmFjdGl2YXRlRm4sXG4gICAgcm93OiB0aGlzLnJvdyxcbiAgICBncm91cDogdGhpcy5ncm91cCxcbiAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgIHJvd0hlaWdodDogdGhpcy5yb3dIZWlnaHQsXG4gICAgaXNTZWxlY3RlZDogdGhpcy5pc1NlbGVjdGVkLFxuICAgIHJvd0luZGV4OiB0aGlzLnJvd0luZGV4LFxuICAgIHRyZWVTdGF0dXM6IHRoaXMudHJlZVN0YXR1cyxcbiAgICBvblRyZWVBY3Rpb246IHRoaXMub25UcmVlQWN0aW9uLmJpbmQodGhpcylcbiAgfTtcblxuICBwcml2YXRlIF9pc1NlbGVjdGVkOiBib29sZWFuO1xuICBwcml2YXRlIF9zb3J0czogYW55W107XG4gIHByaXZhdGUgX2NvbHVtbjogVGFibGVDb2x1bW47XG4gIHByaXZhdGUgX3JvdzogYW55O1xuICBwcml2YXRlIF9ncm91cDogYW55O1xuICBwcml2YXRlIF9yb3dIZWlnaHQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfcm93SW5kZXg6IG51bWJlcjtcbiAgcHJpdmF0ZSBfZXhwYW5kZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2VsZW1lbnQ6IGFueTtcbiAgcHJpdmF0ZSBfdHJlZVN0YXR1czogVHJlZVN0YXR1cztcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50OiBFbGVtZW50UmVmLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja1ZhbHVlVXBkYXRlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2VsbFRlbXBsYXRlKSB7XG4gICAgICB0aGlzLmNlbGxUZW1wbGF0ZS5jbGVhcigpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrVmFsdWVVcGRhdGVzKCk6IHZvaWQge1xuICAgIGxldCB2YWx1ZSA9ICcnO1xuXG4gICAgaWYgKCF0aGlzLnJvdyB8fCAhdGhpcy5jb2x1bW4pIHtcbiAgICAgIHZhbHVlID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbCA9IHRoaXMuY29sdW1uLiQkdmFsdWVHZXR0ZXIodGhpcy5yb3csIHRoaXMuY29sdW1uLnByb3ApO1xuICAgICAgY29uc3QgdXNlclBpcGU6IFBpcGVUcmFuc2Zvcm0gPSB0aGlzLmNvbHVtbi5waXBlO1xuXG4gICAgICBpZiAodXNlclBpcGUpIHtcbiAgICAgICAgdmFsdWUgPSB1c2VyUGlwZS50cmFuc2Zvcm0odmFsKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YWx1ZSA9IHZhbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY2VsbENvbnRleHQudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2FuaXRpemVkVmFsdWUgPSB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5zdHJpcEh0bWwodmFsdWUpIDogdmFsdWU7XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJylcbiAgb25Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlLmVtaXQoe1xuICAgICAgdHlwZTogJ2NsaWNrJyxcbiAgICAgIGV2ZW50LFxuICAgICAgcm93OiB0aGlzLnJvdyxcbiAgICAgIGdyb3VwOiB0aGlzLmdyb3VwLFxuICAgICAgcm93SGVpZ2h0OiB0aGlzLnJvd0hlaWdodCxcbiAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4sXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIGNlbGxFbGVtZW50OiB0aGlzLl9lbGVtZW50XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkYmxjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRGJsQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlLmVtaXQoe1xuICAgICAgdHlwZTogJ2RibGNsaWNrJyxcbiAgICAgIGV2ZW50LFxuICAgICAgcm93OiB0aGlzLnJvdyxcbiAgICAgIGdyb3VwOiB0aGlzLmdyb3VwLFxuICAgICAgcm93SGVpZ2h0OiB0aGlzLnJvd0hlaWdodCxcbiAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4sXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIGNlbGxFbGVtZW50OiB0aGlzLl9lbGVtZW50XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgY29uc3QgaXNUYXJnZXRDZWxsID0gZXZlbnQudGFyZ2V0ID09PSB0aGlzLl9lbGVtZW50O1xuXG4gICAgY29uc3QgaXNBY3Rpb24gPVxuICAgICAga2V5Q29kZSA9PT0gS2V5cy5yZXR1cm4gfHxcbiAgICAgIGtleUNvZGUgPT09IEtleXMuZG93biB8fFxuICAgICAga2V5Q29kZSA9PT0gS2V5cy51cCB8fFxuICAgICAga2V5Q29kZSA9PT0gS2V5cy5sZWZ0IHx8XG4gICAgICBrZXlDb2RlID09PSBLZXlzLnJpZ2h0O1xuXG4gICAgaWYgKGlzQWN0aW9uICYmIGlzVGFyZ2V0Q2VsbCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICB0aGlzLmFjdGl2YXRlLmVtaXQoe1xuICAgICAgICB0eXBlOiAna2V5ZG93bicsXG4gICAgICAgIGV2ZW50LFxuICAgICAgICByb3c6IHRoaXMucm93LFxuICAgICAgICBncm91cDogdGhpcy5ncm91cCxcbiAgICAgICAgcm93SGVpZ2h0OiB0aGlzLnJvd0hlaWdodCxcbiAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcbiAgICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICAgIGNlbGxFbGVtZW50OiB0aGlzLl9lbGVtZW50XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbkNoZWNrYm94Q2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlLmVtaXQoe1xuICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgIGV2ZW50LFxuICAgICAgcm93OiB0aGlzLnJvdyxcbiAgICAgIGdyb3VwOiB0aGlzLmdyb3VwLFxuICAgICAgcm93SGVpZ2h0OiB0aGlzLnJvd0hlaWdodCxcbiAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4sXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIGNlbGxFbGVtZW50OiB0aGlzLl9lbGVtZW50LFxuICAgICAgdHJlZVN0YXR1czogJ2NvbGxhcHNlZCdcbiAgICB9KTtcbiAgfVxuXG4gIGNhbGNTb3J0RGlyKHNvcnRzOiBhbnlbXSk6IGFueSB7XG4gICAgaWYgKCFzb3J0cykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNvcnQgPSBzb3J0cy5maW5kKChzOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBzLnByb3AgPT09IHRoaXMuY29sdW1uLnByb3A7XG4gICAgfSk7XG5cbiAgICBpZiAoc29ydCkge1xuICAgICAgcmV0dXJuIHNvcnQuZGlyO1xuICAgIH1cbiAgfVxuXG4gIHN0cmlwSHRtbChodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghaHRtbC5yZXBsYWNlKSB7XG4gICAgICByZXR1cm4gaHRtbDtcbiAgICB9XG4gICAgcmV0dXJuIGh0bWwucmVwbGFjZSgvPFxcLz9bXj5dKyg+fCQpL2csICcnKTtcbiAgfVxuXG4gIG9uVHJlZUFjdGlvbigpIHtcbiAgICB0aGlzLnRyZWVBY3Rpb24uZW1pdCh0aGlzLnJvdyk7XG4gIH1cblxuICBjYWxjTGVmdE1hcmdpbihjb2x1bW46IGFueSwgcm93OiBhbnkpIHtcbiAgICBjb25zdCBsZXZlbEluZGVudCA9IGNvbHVtbi50cmVlTGV2ZWxJbmRlbnQgIT0gbnVsbCA/IGNvbHVtbi50cmVlTGV2ZWxJbmRlbnQgOiA1MDtcbiAgICByZXR1cm4gY29sdW1uLmlzVHJlZUNvbHVtbiA/IHJvdy5sZXZlbCAqIGxldmVsSW5kZW50IDogMDtcbiAgfVxufVxuIl19
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Directive, TemplateRef } from '@angular/core';
|
|
2
|
-
export class DatatableGroupHeaderTemplateDirective {
|
|
3
|
-
constructor(template) {
|
|
4
|
-
this.template = template;
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
DatatableGroupHeaderTemplateDirective.decorators = [
|
|
8
|
-
{ type: Directive, args: [{
|
|
9
|
-
selector: '[ngx-datatable-group-header-template]'
|
|
10
|
-
},] }
|
|
11
|
-
];
|
|
12
|
-
DatatableGroupHeaderTemplateDirective.ctorParameters = () => [
|
|
13
|
-
{ type: TemplateRef }
|
|
14
|
-
];
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS1ncm91cC1oZWFkZXItdGVtcGxhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3dpbWxhbmUvbmd4LWRhdGF0YWJsZS9zcmMvbGliL2NvbXBvbmVudHMvYm9keS9ib2R5LWdyb3VwLWhlYWRlci10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLdkQsTUFBTSxPQUFPLHFDQUFxQztJQUNoRCxZQUFtQixRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUFHLENBQUM7OztZQUpsRCxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHVDQUF1QzthQUNsRDs7O1lBSm1CLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ3gtZGF0YXRhYmxlLWdyb3VwLWhlYWRlci10ZW1wbGF0ZV0nXG59KVxuZXhwb3J0IGNsYXNzIERhdGF0YWJsZUdyb3VwSGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG4iXX0=
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { Input, Output, EventEmitter, Directive, TemplateRef, ContentChild } from '@angular/core';
|
|
2
|
-
import { DatatableGroupHeaderTemplateDirective } from './body-group-header-template.directive';
|
|
3
|
-
export class DatatableGroupHeaderDirective {
|
|
4
|
-
constructor() {
|
|
5
|
-
/**
|
|
6
|
-
* Row height is required when virtual scroll is enabled.
|
|
7
|
-
*/
|
|
8
|
-
this.rowHeight = 0;
|
|
9
|
-
/**
|
|
10
|
-
* Track toggling of group visibility
|
|
11
|
-
*/
|
|
12
|
-
this.toggle = new EventEmitter();
|
|
13
|
-
}
|
|
14
|
-
get template() {
|
|
15
|
-
return this._templateInput || this._templateQuery;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Toggle the expansion of a group
|
|
19
|
-
*/
|
|
20
|
-
toggleExpandGroup(group) {
|
|
21
|
-
this.toggle.emit({
|
|
22
|
-
type: 'group',
|
|
23
|
-
value: group
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Expand all groups
|
|
28
|
-
*/
|
|
29
|
-
expandAllGroups() {
|
|
30
|
-
this.toggle.emit({
|
|
31
|
-
type: 'all',
|
|
32
|
-
value: true
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Collapse all groups
|
|
37
|
-
*/
|
|
38
|
-
collapseAllGroups() {
|
|
39
|
-
this.toggle.emit({
|
|
40
|
-
type: 'all',
|
|
41
|
-
value: false
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
DatatableGroupHeaderDirective.decorators = [
|
|
46
|
-
{ type: Directive, args: [{ selector: 'ngx-datatable-group-header' },] }
|
|
47
|
-
];
|
|
48
|
-
DatatableGroupHeaderDirective.propDecorators = {
|
|
49
|
-
rowHeight: [{ type: Input }],
|
|
50
|
-
_templateInput: [{ type: Input, args: ['template',] }],
|
|
51
|
-
_templateQuery: [{ type: ContentChild, args: [DatatableGroupHeaderTemplateDirective, { read: TemplateRef, static: true },] }],
|
|
52
|
-
toggle: [{ type: Output }]
|
|
53
|
-
};
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS1ncm91cC1oZWFkZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3dpbWxhbmUvbmd4LWRhdGF0YWJsZS9zcmMvbGliL2NvbXBvbmVudHMvYm9keS9ib2R5LWdyb3VwLWhlYWRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRy9GLE1BQU0sT0FBTyw2QkFBNkI7SUFEMUM7UUFFRTs7V0FFRztRQUNNLGNBQVMsR0FBdUQsQ0FBQyxDQUFDO1FBWTNFOztXQUVHO1FBQ08sV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBK0IzRCxDQUFDO0lBdENDLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ3BELENBQUM7SUFPRDs7T0FFRztJQUNILGlCQUFpQixDQUFDLEtBQVU7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDZixJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2YsSUFBSSxFQUFFLEtBQUs7WUFDWCxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2YsSUFBSSxFQUFFLEtBQUs7WUFDWCxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQWxERixTQUFTLFNBQUMsRUFBRSxRQUFRLEVBQUUsNEJBQTRCLEVBQUU7Ozt3QkFLbEQsS0FBSzs2QkFFTCxLQUFLLFNBQUMsVUFBVTs2QkFHaEIsWUFBWSxTQUFDLHFDQUFxQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO3FCQVV2RixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBEaXJlY3RpdmUsIFRlbXBsYXRlUmVmLCBDb250ZW50Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGF0YWJsZUdyb3VwSGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2JvZHktZ3JvdXAtaGVhZGVyLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25neC1kYXRhdGFibGUtZ3JvdXAtaGVhZGVyJyB9KVxuZXhwb3J0IGNsYXNzIERhdGF0YWJsZUdyb3VwSGVhZGVyRGlyZWN0aXZlIHtcbiAgLyoqXG4gICAqIFJvdyBoZWlnaHQgaXMgcmVxdWlyZWQgd2hlbiB2aXJ0dWFsIHNjcm9sbCBpcyBlbmFibGVkLlxuICAgKi9cbiAgQElucHV0KCkgcm93SGVpZ2h0OiBudW1iZXIgfCAoKGdyb3VwPzogYW55LCBpbmRleD86IG51bWJlcikgPT4gbnVtYmVyKSA9IDA7XG5cbiAgQElucHV0KCd0ZW1wbGF0ZScpXG4gIF90ZW1wbGF0ZUlucHV0OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoRGF0YXRhYmxlR3JvdXBIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIF90ZW1wbGF0ZVF1ZXJ5OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGdldCB0ZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGVJbnB1dCB8fCB0aGlzLl90ZW1wbGF0ZVF1ZXJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrIHRvZ2dsaW5nIG9mIGdyb3VwIHZpc2liaWxpdHlcbiAgICovXG4gIEBPdXRwdXQoKSB0b2dnbGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIGV4cGFuc2lvbiBvZiBhIGdyb3VwXG4gICAqL1xuICB0b2dnbGVFeHBhbmRHcm91cChncm91cDogYW55KTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGUuZW1pdCh7XG4gICAgICB0eXBlOiAnZ3JvdXAnLFxuICAgICAgdmFsdWU6IGdyb3VwXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRXhwYW5kIGFsbCBncm91cHNcbiAgICovXG4gIGV4cGFuZEFsbEdyb3VwcygpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZS5lbWl0KHtcbiAgICAgIHR5cGU6ICdhbGwnLFxuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb2xsYXBzZSBhbGwgZ3JvdXBzXG4gICAqL1xuICBjb2xsYXBzZUFsbEdyb3VwcygpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZS5lbWl0KHtcbiAgICAgIHR5cGU6ICdhbGwnLFxuICAgICAgdmFsdWU6IGZhbHNlXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, HostListener, ChangeDetectionStrategy, ChangeDetectorRef, KeyValueDiffers } from '@angular/core';
|
|
2
|
-
export class DataTableRowWrapperComponent {
|
|
3
|
-
constructor(cd, differs) {
|
|
4
|
-
this.cd = cd;
|
|
5
|
-
this.differs = differs;
|
|
6
|
-
this.rowContextmenu = new EventEmitter(false);
|
|
7
|
-
this.groupContext = {
|
|
8
|
-
group: this.row,
|
|
9
|
-
expanded: this.expanded,
|
|
10
|
-
rowIndex: this.rowIndex
|
|
11
|
-
};
|
|
12
|
-
this.rowContext = {
|
|
13
|
-
row: this.row,
|
|
14
|
-
expanded: this.expanded,
|
|
15
|
-
rowIndex: this.rowIndex
|
|
16
|
-
};
|
|
17
|
-
this._expanded = false;
|
|
18
|
-
this.rowDiffer = differs.find({}).create();
|
|
19
|
-
}
|
|
20
|
-
set rowIndex(val) {
|
|
21
|
-
this._rowIndex = val;
|
|
22
|
-
this.rowContext.rowIndex = val;
|
|
23
|
-
this.groupContext.rowIndex = val;
|
|
24
|
-
this.cd.markForCheck();
|
|
25
|
-
}
|
|
26
|
-
get rowIndex() {
|
|
27
|
-
return this._rowIndex;
|
|
28
|
-
}
|
|
29
|
-
set expanded(val) {
|
|
30
|
-
this._expanded = val;
|
|
31
|
-
this.groupContext.expanded = val;
|
|
32
|
-
this.rowContext.expanded = val;
|
|
33
|
-
this.cd.markForCheck();
|
|
34
|
-
}
|
|
35
|
-
get expanded() {
|
|
36
|
-
return this._expanded;
|
|
37
|
-
}
|
|
38
|
-
ngDoCheck() {
|
|
39
|
-
if (this.rowDiffer.diff(this.row)) {
|
|
40
|
-
this.rowContext.row = this.row;
|
|
41
|
-
this.groupContext.group = this.row;
|
|
42
|
-
this.cd.markForCheck();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
onContextmenu($event) {
|
|
46
|
-
this.rowContextmenu.emit({ event: $event, row: this.row });
|
|
47
|
-
}
|
|
48
|
-
getGroupHeaderStyle() {
|
|
49
|
-
const styles = {};
|
|
50
|
-
styles['transform'] = 'translate3d(' + this.offsetX + 'px, 0px, 0px)';
|
|
51
|
-
styles['backface-visibility'] = 'hidden';
|
|
52
|
-
styles['width'] = this.innerWidth;
|
|
53
|
-
return styles;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
DataTableRowWrapperComponent.decorators = [
|
|
57
|
-
{ type: Component, args: [{
|
|
58
|
-
selector: 'datatable-row-wrapper',
|
|
59
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
60
|
-
template: `
|
|
61
|
-
<div *ngIf="groupHeader && groupHeader.template" class="datatable-group-header" [ngStyle]="getGroupHeaderStyle()">
|
|
62
|
-
<ng-template
|
|
63
|
-
*ngIf="groupHeader && groupHeader.template"
|
|
64
|
-
[ngTemplateOutlet]="groupHeader.template"
|
|
65
|
-
[ngTemplateOutletContext]="groupContext"
|
|
66
|
-
>
|
|
67
|
-
</ng-template>
|
|
68
|
-
</div>
|
|
69
|
-
<ng-content *ngIf="(groupHeader && groupHeader.template && expanded) || !groupHeader || !groupHeader.template">
|
|
70
|
-
</ng-content>
|
|
71
|
-
<div
|
|
72
|
-
*ngIf="rowDetail && rowDetail.template && expanded"
|
|
73
|
-
[style.height.px]="detailRowHeight"
|
|
74
|
-
class="datatable-row-detail"
|
|
75
|
-
>
|
|
76
|
-
<ng-template
|
|
77
|
-
*ngIf="rowDetail && rowDetail.template"
|
|
78
|
-
[ngTemplateOutlet]="rowDetail.template"
|
|
79
|
-
[ngTemplateOutletContext]="rowContext"
|
|
80
|
-
>
|
|
81
|
-
</ng-template>
|
|
82
|
-
</div>
|
|
83
|
-
`,
|
|
84
|
-
host: {
|
|
85
|
-
class: 'datatable-row-wrapper'
|
|
86
|
-
}
|
|
87
|
-
},] }
|
|
88
|
-
];
|
|
89
|
-
DataTableRowWrapperComponent.ctorParameters = () => [
|
|
90
|
-
{ type: ChangeDetectorRef },
|
|
91
|
-
{ type: KeyValueDiffers }
|
|
92
|
-
];
|
|
93
|
-
DataTableRowWrapperComponent.propDecorators = {
|
|
94
|
-
innerWidth: [{ type: Input }],
|
|
95
|
-
rowDetail: [{ type: Input }],
|
|
96
|
-
groupHeader: [{ type: Input }],
|
|
97
|
-
offsetX: [{ type: Input }],
|
|
98
|
-
detailRowHeight: [{ type: Input }],
|
|
99
|
-
row: [{ type: Input }],
|
|
100
|
-
groupedRows: [{ type: Input }],
|
|
101
|
-
rowContextmenu: [{ type: Output }],
|
|
102
|
-
rowIndex: [{ type: Input }],
|
|
103
|
-
expanded: [{ type: Input }],
|
|
104
|
-
onContextmenu: [{ type: HostListener, args: ['contextmenu', ['$event'],] }]
|
|
105
|
-
};
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS1yb3ctd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zd2ltbGFuZS9uZ3gtZGF0YXRhYmxlL3NyYy9saWIvY29tcG9uZW50cy9ib2R5L2JvZHktcm93LXdyYXBwZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxFQUVaLHVCQUF1QixFQUV2QixpQkFBaUIsRUFDakIsZUFBZSxFQUNoQixNQUFNLGVBQWUsQ0FBQztBQWlDdkIsTUFBTSxPQUFPLDRCQUE0QjtJQWdEdkMsWUFBb0IsRUFBcUIsRUFBVSxPQUF3QjtRQUF2RCxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBeENqRSxtQkFBYyxHQUFHLElBQUksWUFBWSxDQUFrQyxLQUFLLENBQUMsQ0FBQztRQXdCcEYsaUJBQVksR0FBUTtZQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3hCLENBQUM7UUFFRixlQUFVLEdBQVE7WUFDaEIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUN4QixDQUFDO1FBR00sY0FBUyxHQUFZLEtBQUssQ0FBQztRQUlqQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQXhDRCxJQUFhLFFBQVEsQ0FBQyxHQUFXO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDakMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFhLFFBQVEsQ0FBQyxHQUFZO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDL0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFzQkQsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNuQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUdELGFBQWEsQ0FBQyxNQUFrQjtRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxtQkFBbUI7UUFDakIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWxCLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUM7UUFDdEUsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRWxDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OztZQXhHRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1QlQ7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLEtBQUssRUFBRSx1QkFBdUI7aUJBQy9CO2FBQ0Y7OztZQWxDQyxpQkFBaUI7WUFDakIsZUFBZTs7O3lCQW1DZCxLQUFLO3dCQUNMLEtBQUs7MEJBQ0wsS0FBSztzQkFDTCxLQUFLOzhCQUNMLEtBQUs7a0JBQ0wsS0FBSzswQkFDTCxLQUFLOzZCQUNMLE1BQU07dUJBRU4sS0FBSzt1QkFXTCxLQUFLOzRCQXVDTCxZQUFZLFNBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgRG9DaGVjayxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIEtleVZhbHVlRGlmZmVyLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgS2V5VmFsdWVEaWZmZXJzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRhdGFibGUtcm93LXdyYXBwZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXBIZWFkZXIgJiYgZ3JvdXBIZWFkZXIudGVtcGxhdGVcIiBjbGFzcz1cImRhdGF0YWJsZS1ncm91cC1oZWFkZXJcIiBbbmdTdHlsZV09XCJnZXRHcm91cEhlYWRlclN0eWxlKClcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAqbmdJZj1cImdyb3VwSGVhZGVyICYmIGdyb3VwSGVhZGVyLnRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ3JvdXBIZWFkZXIudGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiZ3JvdXBDb250ZXh0XCJcbiAgICAgID5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRlbnQgKm5nSWY9XCIoZ3JvdXBIZWFkZXIgJiYgZ3JvdXBIZWFkZXIudGVtcGxhdGUgJiYgZXhwYW5kZWQpIHx8ICFncm91cEhlYWRlciB8fCAhZ3JvdXBIZWFkZXIudGVtcGxhdGVcIj5cbiAgICA8L25nLWNvbnRlbnQ+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJyb3dEZXRhaWwgJiYgcm93RGV0YWlsLnRlbXBsYXRlICYmIGV4cGFuZGVkXCJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZGV0YWlsUm93SGVpZ2h0XCJcbiAgICAgIGNsYXNzPVwiZGF0YXRhYmxlLXJvdy1kZXRhaWxcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAqbmdJZj1cInJvd0RldGFpbCAmJiByb3dEZXRhaWwudGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJyb3dEZXRhaWwudGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwicm93Q29udGV4dFwiXG4gICAgICA+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICBgLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdkYXRhdGFibGUtcm93LXdyYXBwZXInXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlUm93V3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIERvQ2hlY2sge1xuICBASW5wdXQoKSBpbm5lcldpZHRoOiBudW1iZXI7XG4gIEBJbnB1dCgpIHJvd0RldGFpbDogYW55O1xuICBASW5wdXQoKSBncm91cEhlYWRlcjogYW55O1xuICBASW5wdXQoKSBvZmZzZXRYOiBudW1iZXI7XG4gIEBJbnB1dCgpIGRldGFpbFJvd0hlaWdodDogYW55O1xuICBASW5wdXQoKSByb3c6IGFueTtcbiAgQElucHV0KCkgZ3JvdXBlZFJvd3M6IGFueTtcbiAgQE91dHB1dCgpIHJvd0NvbnRleHRtZW51ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGV2ZW50OiBNb3VzZUV2ZW50OyByb3c6IGFueSB9PihmYWxzZSk7XG5cbiAgQElucHV0KCkgc2V0IHJvd0luZGV4KHZhbDogbnVtYmVyKSB7XG4gICAgdGhpcy5fcm93SW5kZXggPSB2YWw7XG4gICAgdGhpcy5yb3dDb250ZXh0LnJvd0luZGV4ID0gdmFsO1xuICAgIHRoaXMuZ3JvdXBDb250ZXh0LnJvd0luZGV4ID0gdmFsO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXQgcm93SW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcm93SW5kZXg7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZXhwYW5kZWQodmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZXhwYW5kZWQgPSB2YWw7XG4gICAgdGhpcy5ncm91cENvbnRleHQuZXhwYW5kZWQgPSB2YWw7XG4gICAgdGhpcy5yb3dDb250ZXh0LmV4cGFuZGVkID0gdmFsO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkO1xuICB9XG5cbiAgZ3JvdXBDb250ZXh0OiBhbnkgPSB7XG4gICAgZ3JvdXA6IHRoaXMucm93LFxuICAgIGV4cGFuZGVkOiB0aGlzLmV4cGFuZGVkLFxuICAgIHJvd0luZGV4OiB0aGlzLnJvd0luZGV4XG4gIH07XG5cbiAgcm93Q29udGV4dDogYW55ID0ge1xuICAgIHJvdzogdGhpcy5yb3csXG4gICAgZXhwYW5kZWQ6IHRoaXMuZXhwYW5kZWQsXG4gICAgcm93SW5kZXg6IHRoaXMucm93SW5kZXhcbiAgfTtcblxuICBwcml2YXRlIHJvd0RpZmZlcjogS2V5VmFsdWVEaWZmZXI8e30sIHt9PjtcbiAgcHJpdmF0ZSBfZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcm93SW5kZXg6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBkaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMpIHtcbiAgICB0aGlzLnJvd0RpZmZlciA9IGRpZmZlcnMuZmluZCh7fSkuY3JlYXRlKCk7XG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm93RGlmZmVyLmRpZmYodGhpcy5yb3cpKSB7XG4gICAgICB0aGlzLnJvd0NvbnRleHQucm93ID0gdGhpcy5yb3c7XG4gICAgICB0aGlzLmdyb3VwQ29udGV4dC5ncm91cCA9IHRoaXMucm93O1xuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjb250ZXh0bWVudScsIFsnJGV2ZW50J10pXG4gIG9uQ29udGV4dG1lbnUoJGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5yb3dDb250ZXh0bWVudS5lbWl0KHsgZXZlbnQ6ICRldmVudCwgcm93OiB0aGlzLnJvdyB9KTtcbiAgfVxuXG4gIGdldEdyb3VwSGVhZGVyU3R5bGUoKTogYW55IHtcbiAgICBjb25zdCBzdHlsZXMgPSB7fTtcblxuICAgIHN0eWxlc1sndHJhbnNmb3JtJ10gPSAndHJhbnNsYXRlM2QoJyArIHRoaXMub2Zmc2V0WCArICdweCwgMHB4LCAwcHgpJztcbiAgICBzdHlsZXNbJ2JhY2tmYWNlLXZpc2liaWxpdHknXSA9ICdoaWRkZW4nO1xuICAgIHN0eWxlc1snd2lkdGgnXSA9IHRoaXMuaW5uZXJXaWR0aDtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH1cbn1cbiJdfQ==
|