mapa-library-ui 0.0.23 → 0.0.24
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/esm2020/src/lib/components/capability/lib/components/filters/src/filters.component.mjs +2 -2
- package/esm2020/src/lib/components/filters/lib/components/filters/src/filters.component.mjs +2 -2
- package/esm2020/src/lib/components/table/lib/components/table/public-api.mjs +6 -0
- package/esm2020/src/lib/components/table/lib/components/table/src/paginator_customization.mjs +21 -0
- package/esm2020/src/lib/components/table/lib/components/table/src/table.component.mjs +121 -0
- package/esm2020/src/lib/components/table/lib/components/table/src/table.module.mjs +59 -0
- package/esm2020/src/lib/components/table/lib/core/directives/custom-paginator-legacy.directive.mjs +227 -0
- package/esm2020/src/lib/components/table/lib/core/directives/custom-paginator.directive.mjs +183 -0
- package/esm2020/src/lib/components/table/mapa-library-ui-src-lib-components-table.mjs +2 -2
- package/esm2020/src/lib/components/table/table.mjs +7 -0
- package/fesm2015/mapa-library-ui-src-lib-components-capability.mjs +2 -2
- package/fesm2015/mapa-library-ui-src-lib-components-capability.mjs.map +1 -1
- package/fesm2015/mapa-library-ui-src-lib-components-filters.mjs +2 -2
- package/fesm2015/mapa-library-ui-src-lib-components-filters.mjs.map +1 -1
- package/fesm2015/mapa-library-ui-src-lib-components-table.mjs +470 -38
- package/fesm2015/mapa-library-ui-src-lib-components-table.mjs.map +1 -1
- package/fesm2020/mapa-library-ui-src-lib-components-capability.mjs +2 -2
- package/fesm2020/mapa-library-ui-src-lib-components-capability.mjs.map +1 -1
- package/fesm2020/mapa-library-ui-src-lib-components-filters.mjs +2 -2
- package/fesm2020/mapa-library-ui-src-lib-components-filters.mjs.map +1 -1
- package/fesm2020/mapa-library-ui-src-lib-components-table.mjs +466 -38
- package/fesm2020/mapa-library-ui-src-lib-components-table.mjs.map +1 -1
- package/mapa-library-ui-0.0.24.tgz +0 -0
- package/package.json +1 -1
- package/src/lib/components/table/index.d.ts +1 -1
- package/src/lib/components/table/{src → lib/components/table/src}/table.component.d.ts +14 -8
- package/src/lib/components/table/{src → lib/components/table/src}/table.module.d.ts +4 -2
- package/src/lib/components/table/lib/core/directives/custom-paginator-legacy.directive.d.ts +27 -0
- package/src/lib/components/table/lib/core/directives/custom-paginator.directive.d.ts +33 -0
- package/src/lib/components/table/table.d.ts +3 -0
- package/esm2020/src/lib/components/table/public-api.mjs +0 -6
- package/esm2020/src/lib/components/table/src/paginator_customization.mjs +0 -9
- package/esm2020/src/lib/components/table/src/table.component.mjs +0 -120
- package/esm2020/src/lib/components/table/src/table.module.mjs +0 -49
- package/mapa-library-ui-0.0.23.tgz +0 -0
- /package/src/lib/components/table/{public-api.d.ts → lib/components/table/public-api.d.ts} +0 -0
- /package/src/lib/components/table/{src → lib/components/table/src}/paginator_customization.d.ts +0 -0
package/esm2020/src/lib/components/table/lib/core/directives/custom-paginator-legacy.directive.mjs
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { Directive, Host, Optional, Self, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/material/paginator";
|
|
4
|
+
export class PaginatorLegacyDirective {
|
|
5
|
+
constructor(matPag, ViewContainer, renderer) {
|
|
6
|
+
this.matPag = matPag;
|
|
7
|
+
this.ViewContainer = ViewContainer;
|
|
8
|
+
this.renderer = renderer;
|
|
9
|
+
this.buttons = [];
|
|
10
|
+
this.buildPageNumbers = () => {
|
|
11
|
+
let dots;
|
|
12
|
+
let page;
|
|
13
|
+
let pageDifference;
|
|
14
|
+
let startIndex;
|
|
15
|
+
let totalPages;
|
|
16
|
+
totalPages = this.matPag.getNumberOfPages();
|
|
17
|
+
// Container div with paginator elements
|
|
18
|
+
const actionContainer = this.ViewContainer.element.nativeElement.querySelector('div.mat-paginator-range-actions');
|
|
19
|
+
// Button that triggers the next page action
|
|
20
|
+
const nextPageNode = this.ViewContainer.element.nativeElement.querySelector('button.mat-paginator-navigation-next');
|
|
21
|
+
// Label showing the page range
|
|
22
|
+
const pageRange = this.ViewContainer.element.nativeElement.querySelector('div.mat-paginator-range-label');
|
|
23
|
+
let prevButtonCount = this.buttons.length;
|
|
24
|
+
// Remove buttons before creating new ones
|
|
25
|
+
if (prevButtonCount > 0) {
|
|
26
|
+
this.buttons.forEach((button) => {
|
|
27
|
+
this.renderer.removeChild(actionContainer, button);
|
|
28
|
+
});
|
|
29
|
+
// Empty state array
|
|
30
|
+
prevButtonCount = 0;
|
|
31
|
+
}
|
|
32
|
+
this.renderer.addClass(pageRange, 'custom-paginator-counter');
|
|
33
|
+
this.renderer.addClass(actionContainer, 'custom-paginator-container');
|
|
34
|
+
// Initialize next page and last page buttons
|
|
35
|
+
if (prevButtonCount === 0) {
|
|
36
|
+
const nodeArray = actionContainer.childNodes;
|
|
37
|
+
setTimeout(() => {
|
|
38
|
+
for (const node of nodeArray) {
|
|
39
|
+
if (node.nodeName === 'BUTTON') {
|
|
40
|
+
// Next Button styles
|
|
41
|
+
if (node.innerHTML.length > 100 && node.disabled) {
|
|
42
|
+
this.renderer.addClass(node, 'custom-paginator-arrow-disabled');
|
|
43
|
+
this.renderer.removeClass(node, 'custom-paginator-arrow-enabled');
|
|
44
|
+
}
|
|
45
|
+
else if (node.innerHTML.length > 100 && !node.disabled) {
|
|
46
|
+
this.renderer.addClass(node, 'custom-paginator-arrow-enabled');
|
|
47
|
+
this.renderer.removeClass(node, 'custom-paginator-arrow-disabled');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
dots = [false, false];
|
|
54
|
+
if (totalPages > 0) {
|
|
55
|
+
this.renderer.insertBefore(actionContainer, this.createButton('0', this.matPag.pageIndex), nextPageNode);
|
|
56
|
+
}
|
|
57
|
+
page = this.showTotalPages + 2;
|
|
58
|
+
pageDifference = totalPages - page;
|
|
59
|
+
startIndex = Math.max(this.currentPage - this.showTotalPages - 2, 1);
|
|
60
|
+
for (let index = startIndex; index < totalPages - 1; index = index + 1) {
|
|
61
|
+
if ((index < page && this.currentPage <= this.showTotalPages) ||
|
|
62
|
+
(index >= this.rangeStart && index <= this.rangeEnd) ||
|
|
63
|
+
(this.currentPage > pageDifference && index >= pageDifference) ||
|
|
64
|
+
totalPages < this.showTotalPages + page) {
|
|
65
|
+
this.renderer.insertBefore(actionContainer, this.createButton(`${index}`, this.matPag.pageIndex), nextPageNode);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
if (index > this.rangeEnd && !dots[0]) {
|
|
69
|
+
this.renderer.insertBefore(actionContainer, this.createButton(this.pageGapTxt[0], this.matPag.pageIndex), nextPageNode);
|
|
70
|
+
dots[0] = true;
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
if (index < this.rangeEnd && !dots[1]) {
|
|
74
|
+
this.renderer.insertBefore(actionContainer, this.createButton(this.pageGapTxt[1], this.matPag.pageIndex), nextPageNode);
|
|
75
|
+
dots[1] = true;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (totalPages > 1) {
|
|
80
|
+
this.renderer.insertBefore(actionContainer, this.createButton(`${totalPages - 1}`, this.matPag.pageIndex), nextPageNode);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
this.currentPage = 1;
|
|
84
|
+
this.pageGapTxt = ['•••', '---'];
|
|
85
|
+
this.showTotalPages = 2;
|
|
86
|
+
this.checkPage = [0, 0, 0];
|
|
87
|
+
// Display custom range label text
|
|
88
|
+
this.matPag._intl.getRangeLabel = (page, pageSize, length) => {
|
|
89
|
+
const startIndex = page * pageSize;
|
|
90
|
+
const endIndex = startIndex < length
|
|
91
|
+
? Math.min(startIndex + pageSize, length)
|
|
92
|
+
: startIndex + pageSize;
|
|
93
|
+
if (length === 0) {
|
|
94
|
+
return 'Mostrando 0 – 0 de 0 item';
|
|
95
|
+
}
|
|
96
|
+
if (length === 1) {
|
|
97
|
+
return ('Mostrando ' +
|
|
98
|
+
(startIndex + 1) +
|
|
99
|
+
' – ' +
|
|
100
|
+
endIndex +
|
|
101
|
+
' de ' +
|
|
102
|
+
length +
|
|
103
|
+
' item');
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
return ('Mostrando ' +
|
|
107
|
+
(startIndex + 1) +
|
|
108
|
+
' – ' +
|
|
109
|
+
endIndex +
|
|
110
|
+
' de ' +
|
|
111
|
+
length +
|
|
112
|
+
' itens');
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
// Subscribe to rerender buttons when next page and last page button is used
|
|
116
|
+
this.matPag.page.subscribe((paginator) => {
|
|
117
|
+
this.currentPage = paginator.pageIndex;
|
|
118
|
+
this.matPag.pageIndex = paginator.pageIndex;
|
|
119
|
+
this.initPageRange();
|
|
120
|
+
});
|
|
121
|
+
this.matPag._intl.itemsPerPageLabel = 'Itens por página';
|
|
122
|
+
const paginatorIntl = this.matPag._intl;
|
|
123
|
+
paginatorIntl.nextPageLabel = '';
|
|
124
|
+
paginatorIntl.previousPageLabel = '';
|
|
125
|
+
}
|
|
126
|
+
ngDoCheck() {
|
|
127
|
+
// Reset paginator if the pageSize, pageIndex, length changes
|
|
128
|
+
if (this.matPag?.length !== this.checkPage[0] ||
|
|
129
|
+
this.matPag?.pageSize !== this.checkPage[1] ||
|
|
130
|
+
this.matPag?.pageIndex !== this.checkPage[2]) {
|
|
131
|
+
const pageCount = this.matPag.getNumberOfPages();
|
|
132
|
+
if (this.currentPage > pageCount && pageCount !== 0) {
|
|
133
|
+
this.currentPage = 1;
|
|
134
|
+
this.matPag.pageIndex = 0;
|
|
135
|
+
}
|
|
136
|
+
this.currentPage = this.matPag.pageIndex;
|
|
137
|
+
this.initPageRange();
|
|
138
|
+
this.checkPage = [
|
|
139
|
+
this.matPag.length,
|
|
140
|
+
this.matPag.pageSize,
|
|
141
|
+
this.matPag.pageIndex,
|
|
142
|
+
];
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
createButton(index, pageIndex) {
|
|
146
|
+
const linkBtn = this.renderer.createElement('button');
|
|
147
|
+
this.renderer.setAttribute(linkBtn, 'class', 'custom-paginator-page');
|
|
148
|
+
this.renderer.addClass(linkBtn, 'custom-paginator-page-enabled');
|
|
149
|
+
if (index === this.pageGapTxt[0] || index === this.pageGapTxt[1]) {
|
|
150
|
+
this.renderer.addClass(linkBtn, 'custom-paginator-arrow-enabled');
|
|
151
|
+
}
|
|
152
|
+
const pagingTxt = isNaN(+index) ? this.pageGapTxt[0] : +index + 1;
|
|
153
|
+
const text = this.renderer.createText(pagingTxt + '');
|
|
154
|
+
this.renderer.addClass(linkBtn, 'mat-custom-page');
|
|
155
|
+
switch (index) {
|
|
156
|
+
case `${pageIndex}`:
|
|
157
|
+
this.renderer.setAttribute(linkBtn, 'disabled', 'disabled');
|
|
158
|
+
this.renderer.removeClass(linkBtn, 'custom-paginator-page-enabled');
|
|
159
|
+
this.renderer.addClass(linkBtn, 'custom-paginator-page-disabled');
|
|
160
|
+
break;
|
|
161
|
+
case this.pageGapTxt[0]:
|
|
162
|
+
this.renderer.listen(linkBtn, 'click', () => {
|
|
163
|
+
this.switchPage(this.currentPage < this.showTotalPages + 1
|
|
164
|
+
? this.showTotalPages + 2
|
|
165
|
+
: this.currentPage + this.showTotalPages - 1);
|
|
166
|
+
});
|
|
167
|
+
break;
|
|
168
|
+
case this.pageGapTxt[1]:
|
|
169
|
+
this.renderer.listen(linkBtn, 'click', () => {
|
|
170
|
+
this.switchPage(this.currentPage >
|
|
171
|
+
this.matPag.getNumberOfPages() - this.showTotalPages - 2
|
|
172
|
+
? this.matPag.getNumberOfPages() - this.showTotalPages - 3
|
|
173
|
+
: this.currentPage - this.showTotalPages + 1);
|
|
174
|
+
});
|
|
175
|
+
break;
|
|
176
|
+
default:
|
|
177
|
+
this.renderer.listen(linkBtn, 'click', () => {
|
|
178
|
+
this.switchPage(+index);
|
|
179
|
+
});
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
this.renderer.appendChild(linkBtn, text);
|
|
183
|
+
// Add button to private array for state
|
|
184
|
+
this.buttons.push(linkBtn);
|
|
185
|
+
return linkBtn;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* @description calculates the button range based on class input parameters and based on current page index value.
|
|
189
|
+
*/
|
|
190
|
+
initPageRange() {
|
|
191
|
+
this.rangeStart = this.currentPage - this.showTotalPages / 2;
|
|
192
|
+
this.rangeEnd = this.currentPage + this.showTotalPages / 2;
|
|
193
|
+
this.buildPageNumbers();
|
|
194
|
+
}
|
|
195
|
+
switchPage(index) {
|
|
196
|
+
this.matPag.pageIndex = index;
|
|
197
|
+
this.matPag.page.emit({
|
|
198
|
+
previousPageIndex: this.currentPage,
|
|
199
|
+
pageIndex: index,
|
|
200
|
+
pageSize: this.matPag.pageSize,
|
|
201
|
+
length: this.matPag.length,
|
|
202
|
+
});
|
|
203
|
+
this.currentPage = index;
|
|
204
|
+
this.initPageRange();
|
|
205
|
+
}
|
|
206
|
+
ngAfterViewInit() {
|
|
207
|
+
this.rangeStart = 0;
|
|
208
|
+
this.rangeEnd = this.showTotalPages - 1;
|
|
209
|
+
this.initPageRange();
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
PaginatorLegacyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PaginatorLegacyDirective, deps: [{ token: i1.MatPaginator, host: true, optional: true, self: true }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
213
|
+
PaginatorLegacyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: PaginatorLegacyDirective, isStandalone: true, selector: "[appStylePaginator]", ngImport: i0 });
|
|
214
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PaginatorLegacyDirective, decorators: [{
|
|
215
|
+
type: Directive,
|
|
216
|
+
args: [{
|
|
217
|
+
selector: '[appStylePaginator]',
|
|
218
|
+
standalone: true,
|
|
219
|
+
}]
|
|
220
|
+
}], ctorParameters: function () { return [{ type: i1.MatPaginator, decorators: [{
|
|
221
|
+
type: Host
|
|
222
|
+
}, {
|
|
223
|
+
type: Self
|
|
224
|
+
}, {
|
|
225
|
+
type: Optional
|
|
226
|
+
}] }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }]; } });
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXBhZ2luYXRvci1sZWdhY3kuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwYS1saWJyYXJ5LXVpL3NyYy9saWIvY29yZS9kaXJlY3RpdmVzL2N1c3RvbS1wYWdpbmF0b3ItbGVnYWN5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULElBQUksRUFDSixRQUFRLEVBRVIsSUFBSSxHQUVMLE1BQU0sZUFBZSxDQUFDOzs7QUFRdkIsTUFBTSxPQUFPLHdCQUF3QjtJQVNuQyxZQUMrQyxNQUFvQixFQUNoRCxhQUErQixFQUMvQixRQUFtQjtRQUZTLFdBQU0sR0FBTixNQUFNLENBQWM7UUFDaEQsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFQOUIsWUFBTyxHQUFnQixFQUFFLENBQUM7UUFtRjFCLHFCQUFnQixHQUFHLEdBQUcsRUFBRTtZQUM5QixJQUFJLElBQWUsQ0FBQztZQUNwQixJQUFJLElBQVksQ0FBQztZQUNqQixJQUFJLGNBQXNCLENBQUM7WUFDM0IsSUFBSSxVQUFrQixDQUFDO1lBQ3ZCLElBQUksVUFBa0IsQ0FBQztZQUN2QixVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzVDLHdDQUF3QztZQUN4QyxNQUFNLGVBQWUsR0FDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDcEQsaUNBQWlDLENBQ2xDLENBQUM7WUFDSiw0Q0FBNEM7WUFDNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDekUsc0NBQXNDLENBQ3ZDLENBQUM7WUFDRiwrQkFBK0I7WUFDL0IsTUFBTSxTQUFTLEdBQUcs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LFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7O3NIQWpSVSx3QkFBd0I7MEdBQXhCLHdCQUF3Qjs0RkFBeEIsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBV0ksSUFBSTs7MEJBQUksSUFBSTs7MEJBQUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIERpcmVjdGl2ZSxcbiAgRG9DaGVjayxcbiAgSG9zdCxcbiAgT3B0aW9uYWwsXG4gIFJlbmRlcmVyMixcbiAgU2VsZixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IsIFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRCdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXBwU3R5bGVQYWdpbmF0b3JdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdG9yTGVnYWN5RGlyZWN0aXZlIGltcGxlbWVudHMgRG9DaGVjaywgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgcHJpdmF0ZSBwYWdlR2FwVHh0OiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByYW5nZVN0YXJ0ITogbnVtYmVyO1xuICBwcml2YXRlIHJhbmdlRW5kITogbnVtYmVyO1xuICBwcml2YXRlIGJ1dHRvbnM6IE1hdEJ1dHRvbltdID0gW107XG4gIHByaXZhdGUgc2hvd1RvdGFsUGFnZXM6IG51bWJlcjtcbiAgcHJpdmF0ZSBjaGVja1BhZ2U6IG51bWJlcltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBIb3N0KCkgQFNlbGYoKSBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IG1hdFBhZzogTWF0UGFnaW5hdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgVmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5wYWdlR2FwVHh0ID0gWyfigKLigKLigKInLCAnLS0tJ107XG4gICAgdGhpcy5zaG93VG90YWxQYWdlcyA9IDI7XG4gICAgdGhpcy5jaGVja1BhZ2UgPSBbMCwgMCwgMF07XG4gICAgLy8gRGlzcGxheSBjdXN0b20gcmFuZ2UgbGFiZWwgdGV4dFxuICAgIHRoaXMubWF0UGFnLl9pbnRsLmdldFJhbmdlTGFiZWwgPSAoXG4gICAgICBwYWdlOiBudW1iZXIsXG4gICAgICBwYWdlU2l6ZTogbnVtYmVyLFxuICAgICAgbGVuZ3RoOiBudW1iZXJcbiAgICApOiBzdHJpbmcgPT4ge1xuICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IHBhZ2UgKiBwYWdlU2l6ZTtcbiAgICAgIGNvbnN0IGVuZEluZGV4ID1cbiAgICAgICAgc3RhcnRJbmRleCA8IGxlbmd0aFxuICAgICAgICAgID8gTWF0aC5taW4oc3RhcnRJbmRleCArIHBhZ2VTaXplLCBsZW5ndGgpXG4gICAgICAgICAgOiBzdGFydEluZGV4ICsgcGFnZVNpemU7XG4gICAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAnTW9zdHJhbmRvIDAg4oCTIDAgZGUgMCBpdGVtJztcbiAgICAgIH1cbiAgICAgIGlmIChsZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAnTW9zdHJhbmRvICcgK1xuICAgICAgICAgIChzdGFydEluZGV4ICsgMSkgK1xuICAgICAgICAgICcg4oCTICcgK1xuICAgICAgICAgIGVuZEluZGV4ICtcbiAgICAgICAgICAnIGRlICcgK1xuICAgICAgICAgIGxlbmd0aCArXG4gICAgICAgICAgJyBpdGVtJ1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAnTW9zdHJhbmRvICcgK1xuICAgICAgICAgIChzdGFydEluZGV4ICsgMSkgK1xuICAgICAgICAgICcg4oCTICcgK1xuICAgICAgICAgIGVuZEluZGV4ICtcbiAgICAgICAgICAnIGRlICcgK1xuICAgICAgICAgIGxlbmd0aCArXG4gICAgICAgICAgJyBpdGVucydcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIC8vIFN1YnNjcmliZSB0byByZXJlbmRlciBidXR0b25zIHdoZW4gbmV4dCBwYWdlIGFuZCBsYXN0IHBhZ2UgYnV0dG9uIGlzIHVzZWRcbiAgICB0aGlzLm1hdFBhZy5wYWdlLnN1YnNjcmliZSgocGFnaW5hdG9yOiBQYWdlRXZlbnQpID0+IHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdpbmF0b3IucGFnZUluZGV4O1xuICAgICAgdGhpcy5tYXRQYWcucGFnZUluZGV4ID0gcGFnaW5hdG9yLnBhZ2VJbmRleDtcbiAgICAgIHRoaXMuaW5pdFBhZ2VSYW5nZSgpO1xuICAgIH0pO1xuICAgIHRoaXMubWF0UGFnLl9pbnRsLml0ZW1zUGVyUGFnZUxhYmVsID0gJ0l0ZW5zIHBvciBww6FnaW5hJztcbiAgICBjb25zdCBwYWdpbmF0b3JJbnRsID0gdGhpcy5tYXRQYWcuX2ludGw7XG4gICAgcGFnaW5hdG9ySW50bC5uZXh0UGFnZUxhYmVsID0gJyc7XG4gICAgcGFnaW5hdG9ySW50bC5wcmV2aW91c1BhZ2VMYWJlbCA9ICcnO1xuICB9XG5cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIC8vIFJlc2V0IHBhZ2luYXRvciBpZiB0aGUgcGFnZVNpemUsIHBhZ2VJbmRleCwgbGVuZ3RoIGNoYW5nZXNcbiAgICBpZiAoXG4gICAgICB0aGlzLm1hdFBhZz8ubGVuZ3RoICE9PSB0aGlzLmNoZWNrUGFnZVswXSB8fFxuICAgICAgdGhpcy5tYXRQYWc/LnBhZ2VTaXplICE9PSB0aGlzLmNoZWNrUGFnZVsxXSB8fFxuICAgICAgdGhpcy5tYXRQYWc/LnBhZ2VJbmRleCAhPT0gdGhpcy5jaGVja1BhZ2VbMl1cbiAgICApIHtcbiAgICAgIGNvbnN0IHBhZ2VDb3VudCA9IHRoaXMubWF0UGFnLmdldE51bWJlck9mUGFnZXMoKTtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlID4gcGFnZUNvdW50ICYmIHBhZ2VDb3VudCAhPT0gMCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgdGhpcy5tYXRQYWcucGFnZUluZGV4ID0gMDtcbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLm1hdFBhZy5wYWdlSW5kZXg7XG4gICAgICB0aGlzLmluaXRQYWdlUmFuZ2UoKTtcbiAgICAgIHRoaXMuY2hlY2tQYWdlID0gW1xuICAgICAgICB0aGlzLm1hdFBhZy5sZW5ndGgsXG4gICAgICAgIHRoaXMubWF0UGFnLnBhZ2VTaXplLFxuICAgICAgICB0aGlzLm1hdFBhZy5wYWdlSW5kZXgsXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRQYWdlTnVtYmVycyA9ICgpID0+IHtcbiAgICBsZXQgZG90czogYm9vbGVhbltdO1xuICAgIGxldCBwYWdlOiBudW1iZXI7XG4gICAgbGV0IHBhZ2VEaWZmZXJlbmNlOiBudW1iZXI7XG4gICAgbGV0IHN0YXJ0SW5kZXg6IG51bWJlcjtcbiAgICBsZXQgdG90YWxQYWdlczogbnVtYmVyO1xuICAgIHRvdGFsUGFnZXMgPSB0aGlzLm1hdFBhZy5nZXROdW1iZXJPZlBhZ2VzKCk7XG4gICAgLy8gQ29udGFpbmVyIGRpdiB3aXRoIHBhZ2luYXRvciBlbGVtZW50c1xuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9XG4gICAgICB0aGlzLlZpZXdDb250YWluZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICdkaXYubWF0LXBhZ2luYXRvci1yYW5nZS1hY3Rpb25zJ1xuICAgICAgKTtcbiAgICAvLyBCdXR0b24gdGhhdCB0cmlnZ2VycyB0aGUgbmV4dCBwYWdlIGFjdGlvblxuICAgIGNvbnN0IG5leHRQYWdlTm9kZSA9IHRoaXMuVmlld0NvbnRhaW5lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdidXR0b24ubWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLW5leHQnXG4gICAgKTtcbiAgICAvLyBMYWJlbCBzaG93aW5nIHRoZSBwYWdlIHJhbmdlXG4gICAgY29uc3QgcGFnZVJhbmdlID0gdGhpcy5WaWV3Q29udGFpbmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ2Rpdi5tYXQtcGFnaW5hdG9yLXJhbmdlLWxhYmVsJ1xuICAgICk7XG5cbiAgICBsZXQgcHJldkJ1dHRvbkNvdW50ID0gdGhpcy5idXR0b25zLmxlbmd0aDtcblxuICAgIC8vIFJlbW92ZSBidXR0b25zIGJlZm9yZSBjcmVhdGluZyBuZXcgb25lc1xuICAgIGlmIChwcmV2QnV0dG9uQ291bnQgPiAwKSB7XG4gICAgICB0aGlzLmJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoYWN0aW9uQ29udGFpbmVyLCBidXR0b24pO1xuICAgICAgfSk7XG4gICAgICAvLyBFbXB0eSBzdGF0ZSBhcnJheVxuICAgICAgcHJldkJ1dHRvbkNvdW50ID0gMDtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHBhZ2VSYW5nZSwgJ2N1c3RvbS1wYWdpbmF0b3ItY291bnRlcicpO1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoYWN0aW9uQ29udGFpbmVyLCAnY3VzdG9tLXBhZ2luYXRvci1jb250YWluZXInKTtcblxuICAgIC8vIEluaXRpYWxpemUgbmV4dCBwYWdlIGFuZCBsYXN0IHBhZ2UgYnV0dG9uc1xuICAgIGlmIChwcmV2QnV0dG9uQ291bnQgPT09IDApIHtcbiAgICAgIGNvbnN0IG5vZGVBcnJheSA9IGFjdGlvbkNvbnRhaW5lci5jaGlsZE5vZGVzO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2RlQXJyYXkpIHtcbiAgICAgICAgICBpZiAobm9kZS5ub2RlTmFtZSA9PT0gJ0JVVFRPTicpIHtcbiAgICAgICAgICAgIC8vIE5leHQgQnV0dG9uIHN0eWxlc1xuICAgICAgICAgICAgaWYgKG5vZGUuaW5uZXJIVE1MLmxlbmd0aCA+IDEwMCAmJiBub2RlLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3Mobm9kZSwgJ2N1c3RvbS1wYWdpbmF0b3ItYXJyb3ctZGlzYWJsZWQnKTtcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhub2RlLCAnY3VzdG9tLXBhZ2luYXRvci1hcnJvdy1lbmFibGVkJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUuaW5uZXJIVE1MLmxlbmd0aCA+IDEwMCAmJiAhbm9kZS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKG5vZGUsICdjdXN0b20tcGFnaW5hdG9yLWFycm93LWVuYWJsZWQnKTtcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICdjdXN0b20tcGFnaW5hdG9yLWFycm93LWRpc2FibGVkJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZG90cyA9IFtmYWxzZSwgZmFsc2VdO1xuXG4gICAgaWYgKHRvdGFsUGFnZXMgPiAwKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZShcbiAgICAgICAgYWN0aW9uQ29udGFpbmVyLFxuICAgICAgICB0aGlzLmNyZWF0ZUJ1dHRvbignMCcsIHRoaXMubWF0UGFnLnBhZ2VJbmRleCksXG4gICAgICAgIG5leHRQYWdlTm9kZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBwYWdlID0gdGhpcy5zaG93VG90YWxQYWdlcyArIDI7XG4gICAgcGFnZURpZmZlcmVuY2UgPSB0b3RhbFBhZ2VzIC0gcGFnZTtcbiAgICBzdGFydEluZGV4ID0gTWF0aC5tYXgodGhpcy5jdXJyZW50UGFnZSAtIHRoaXMuc2hvd1RvdGFsUGFnZXMgLSAyLCAxKTtcblxuICAgIGZvciAobGV0IGluZGV4ID0gc3RhcnRJbmRleDsgaW5kZXggPCB0b3RhbFBhZ2VzIC0gMTsgaW5kZXggPSBpbmRleCArIDEpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKGluZGV4IDwgcGFnZSAmJiB0aGlzLmN1cnJlbnRQYWdlIDw9IHRoaXMuc2hvd1RvdGFsUGFnZXMpIHx8XG4gICAgICAgIChpbmRleCA+PSB0aGlzLnJhbmdlU3RhcnQgJiYgaW5kZXggPD0gdGhpcy5yYW5nZUVuZCkgfHxcbiAgICAgICAgKHRoaXMuY3VycmVudFBhZ2UgPiBwYWdlRGlmZmVyZW5jZSAmJiBpbmRleCA+PSBwYWdlRGlmZmVyZW5jZSkgfHxcbiAgICAgICAgdG90YWxQYWdlcyA8IHRoaXMuc2hvd1RvdGFsUGFnZXMgKyBwYWdlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgYWN0aW9uQ29udGFpbmVyLFxuICAgICAgICAgIHRoaXMuY3JlYXRlQnV0dG9uKGAke2luZGV4fWAsIHRoaXMubWF0UGFnLnBhZ2VJbmRleCksXG4gICAgICAgICAgbmV4dFBhZ2VOb2RlXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaW5kZXggPiB0aGlzLnJhbmdlRW5kICYmICFkb3RzWzBdKSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICBhY3Rpb25Db250YWluZXIsXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUJ1dHRvbih0aGlzLnBhZ2VHYXBUeHRbMF0sIHRoaXMubWF0UGFnLnBhZ2VJbmRleCksXG4gICAgICAgICAgICBuZXh0UGFnZU5vZGVcbiAgICAgICAgICApO1xuICAgICAgICAgIGRvdHNbMF0gPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA8IHRoaXMucmFuZ2VFbmQgJiYgIWRvdHNbMV0pIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZShcbiAgICAgICAgICAgIGFjdGlvbkNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlQnV0dG9uKHRoaXMucGFnZUdhcFR4dFsxXSwgdGhpcy5tYXRQYWcucGFnZUluZGV4KSxcbiAgICAgICAgICAgIG5leHRQYWdlTm9kZVxuICAgICAgICAgICk7XG4gICAgICAgICAgZG90c1sxXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodG90YWxQYWdlcyA+IDEpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuaW5zZXJ0QmVmb3JlKFxuICAgICAgICBhY3Rpb25Db250YWluZXIsXG4gICAgICAgIHRoaXMuY3JlYXRlQnV0dG9uKGAke3RvdGFsUGFnZXMgLSAxfWAsIHRoaXMubWF0UGFnLnBhZ2VJbmRleCksXG4gICAgICAgIG5leHRQYWdlTm9kZVxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBjcmVhdGVCdXR0b24oaW5kZXg6IHN0cmluZywgcGFnZUluZGV4OiBudW1iZXIpOiBNYXRCdXR0b24ge1xuICAgIGNvbnN0IGxpbmtCdG46IE1hdEJ1dHRvbiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUobGlua0J0biwgJ2NsYXNzJywgJ2N1c3RvbS1wYWdpbmF0b3ItcGFnZScpO1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MobGlua0J0biwgJ2N1c3RvbS1wYWdpbmF0b3ItcGFnZS1lbmFibGVkJyk7XG4gICAgaWYgKGluZGV4ID09PSB0aGlzLnBhZ2VHYXBUeHRbMF0gfHwgaW5kZXggPT09IHRoaXMucGFnZUdhcFR4dFsxXSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhsaW5rQnRuLCAnY3VzdG9tLXBhZ2luYXRvci1hcnJvdy1lbmFibGVkJyk7XG4gICAgfVxuICAgIGNvbnN0IHBhZ2luZ1R4dCA9IGlzTmFOKCtpbmRleCkgPyB0aGlzLnBhZ2VHYXBUeHRbMF0gOiAraW5kZXggKyAxO1xuICAgIGNvbnN0IHRleHQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQocGFnaW5nVHh0ICsgJycpO1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MobGlua0J0biwgJ21hdC1jdXN0b20tcGFnZScpO1xuICAgIHN3aXRjaCAoaW5kZXgpIHtcbiAgICAgIGNhc2UgYCR7cGFnZUluZGV4fWA6XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGxpbmtCdG4sICdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGxpbmtCdG4sICdjdXN0b20tcGFnaW5hdG9yLXBhZ2UtZW5hYmxlZCcpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGxpbmtCdG4sICdjdXN0b20tcGFnaW5hdG9yLXBhZ2UtZGlzYWJsZWQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMucGFnZUdhcFR4dFswXTpcbiAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4obGlua0J0biwgJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc3dpdGNoUGFnZShcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPCB0aGlzLnNob3dUb3RhbFBhZ2VzICsgMVxuICAgICAgICAgICAgICA/IHRoaXMuc2hvd1RvdGFsUGFnZXMgKyAyXG4gICAgICAgICAgICAgIDogdGhpcy5jdXJyZW50UGFnZSArIHRoaXMuc2hvd1RvdGFsUGFnZXMgLSAxXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLnBhZ2VHYXBUeHRbMV06XG4gICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGxpbmtCdG4sICdjbGljaycsICgpID0+IHtcbiAgICAgICAgICB0aGlzLnN3aXRjaFBhZ2UoXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID5cbiAgICAgICAgICAgICAgdGhpcy5tYXRQYWcuZ2V0TnVtYmVyT2ZQYWdlcygpIC0gdGhpcy5zaG93VG90YWxQYWdlcyAtIDJcbiAgICAgICAgICAgICAgPyB0aGlzLm1hdFBhZy5nZXROdW1iZXJPZlBhZ2VzKCkgLSB0aGlzLnNob3dUb3RhbFBhZ2VzIC0gM1xuICAgICAgICAgICAgICA6IHRoaXMuY3VycmVudFBhZ2UgLSB0aGlzLnNob3dUb3RhbFBhZ2VzICsgMVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGxpbmtCdG4sICdjbGljaycsICgpID0+IHtcbiAgICAgICAgICB0aGlzLnN3aXRjaFBhZ2UoK2luZGV4KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGxpbmtCdG4sIHRleHQpO1xuICAgIC8vIEFkZCBidXR0b24gdG8gcHJpdmF0ZSBhcnJheSBmb3Igc3RhdGVcbiAgICB0aGlzLmJ1dHRvbnMucHVzaChsaW5rQnRuKTtcbiAgICByZXR1cm4gbGlua0J0bjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gY2FsY3VsYXRlcyB0aGUgYnV0dG9uIHJhbmdlIGJhc2VkIG9uIGNsYXNzIGlucHV0IHBhcmFtZXRlcnMgYW5kIGJhc2VkIG9uIGN1cnJlbnQgcGFnZSBpbmRleCB2YWx1ZS5cbiAgICovXG4gIHByaXZhdGUgaW5pdFBhZ2VSYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnJhbmdlU3RhcnQgPSB0aGlzLmN1cnJlbnRQYWdlIC0gdGhpcy5zaG93VG90YWxQYWdlcyAvIDI7XG4gICAgdGhpcy5yYW5nZUVuZCA9IHRoaXMuY3VycmVudFBhZ2UgKyB0aGlzLnNob3dUb3RhbFBhZ2VzIC8gMjtcbiAgICB0aGlzLmJ1aWxkUGFnZU51bWJlcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3dpdGNoUGFnZShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5tYXRQYWcucGFnZUluZGV4ID0gaW5kZXg7XG4gICAgdGhpcy5tYXRQYWcucGFnZS5lbWl0KHtcbiAgICAgIHByZXZpb3VzUGFnZUluZGV4OiB0aGlzLmN1cnJlbnRQYWdlLFxuICAgICAgcGFnZUluZGV4OiBpbmRleCxcbiAgICAgIHBhZ2VTaXplOiB0aGlzLm1hdFBhZy5wYWdlU2l6ZSxcbiAgICAgIGxlbmd0aDogdGhpcy5tYXRQYWcubGVuZ3RoLFxuICAgIH0pO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBpbmRleDtcbiAgICB0aGlzLmluaXRQYWdlUmFuZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yYW5nZVN0YXJ0ID0gMDtcbiAgICB0aGlzLnJhbmdlRW5kID0gdGhpcy5zaG93VG90YWxQYWdlcyAtIDE7XG4gICAgdGhpcy5pbml0UGFnZVJhbmdlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { Directive, EventEmitter, Input, Output, } from "@angular/core";
|
|
2
|
+
import { map, startWith } from "rxjs";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/material/paginator";
|
|
5
|
+
export class BubblePaginationDirective {
|
|
6
|
+
constructor(matPag, elementRef, ren) {
|
|
7
|
+
this.matPag = matPag;
|
|
8
|
+
this.elementRef = elementRef;
|
|
9
|
+
this.ren = ren;
|
|
10
|
+
this.pageIndexChangeEmitter = new EventEmitter();
|
|
11
|
+
this.showFirstButton = true;
|
|
12
|
+
this.showLastButton = true;
|
|
13
|
+
this.renderButtonsNumber = 2;
|
|
14
|
+
this.appCustomLength = 0;
|
|
15
|
+
this.hideDefaultArrows = false;
|
|
16
|
+
this.buttonsRef = [];
|
|
17
|
+
}
|
|
18
|
+
ngAfterViewInit() {
|
|
19
|
+
this.styleDefaultPagination();
|
|
20
|
+
this.createBubbleDivRef();
|
|
21
|
+
this.renderButtons();
|
|
22
|
+
}
|
|
23
|
+
ngOnChanges(changes) {
|
|
24
|
+
if (!changes?.["appCustomLength"]?.firstChange) {
|
|
25
|
+
this.removeButtons();
|
|
26
|
+
this.switchPage(0);
|
|
27
|
+
this.renderButtons();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
renderButtons() {
|
|
31
|
+
this.buildButtons();
|
|
32
|
+
this.matPag.page
|
|
33
|
+
.pipe(map((e) => [e.previousPageIndex ?? 0, e.pageIndex]), startWith([0, 0]))
|
|
34
|
+
.subscribe(([prev, curr]) => {
|
|
35
|
+
this.changeActiveButtonStyles(prev, curr);
|
|
36
|
+
this.updateButtonsOnPageEvent();
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
changeActiveButtonStyles(previousIndex, newIndex) {
|
|
40
|
+
const previouslyActive = this.buttonsRef[previousIndex];
|
|
41
|
+
const currentActive = this.buttonsRef[newIndex];
|
|
42
|
+
try {
|
|
43
|
+
this.ren.removeClass(previouslyActive, "g-bubble__active");
|
|
44
|
+
this.ren.addClass(currentActive, "g-bubble__active");
|
|
45
|
+
}
|
|
46
|
+
catch { }
|
|
47
|
+
this.buttonsRef.forEach((button) => this.ren.setStyle(button, "display", "none"));
|
|
48
|
+
const renderElements = this.renderButtonsNumber;
|
|
49
|
+
const endDots = newIndex < this.buttonsRef.length - renderElements - 1;
|
|
50
|
+
const startDots = newIndex - renderElements > 0;
|
|
51
|
+
const firstButton = this.buttonsRef[0];
|
|
52
|
+
const lastButton = this.buttonsRef[this.buttonsRef.length - 1];
|
|
53
|
+
try {
|
|
54
|
+
if (this.showLastButton) {
|
|
55
|
+
this.ren.setStyle(this.dotsEndRef, "display", endDots ? "block" : "none");
|
|
56
|
+
this.ren.setStyle(lastButton, "display", endDots ? "flex" : "none");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch { }
|
|
60
|
+
try {
|
|
61
|
+
if (this.showFirstButton) {
|
|
62
|
+
this.ren.setStyle(this.dotsStartRef, "display", startDots ? "block" : "none");
|
|
63
|
+
this.ren.setStyle(firstButton, "display", startDots ? "flex" : "none");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch { }
|
|
67
|
+
const startingIndex = startDots ? newIndex - renderElements : 0;
|
|
68
|
+
const endingIndex = endDots
|
|
69
|
+
? newIndex + renderElements
|
|
70
|
+
: this.buttonsRef.length - 1;
|
|
71
|
+
for (let i = startingIndex; i <= endingIndex; i++) {
|
|
72
|
+
const button = this.buttonsRef[i];
|
|
73
|
+
this.ren.setStyle(button, "display", "flex");
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
styleDefaultPagination() {
|
|
77
|
+
const nativeElement = this.elementRef.nativeElement;
|
|
78
|
+
const itemsPerPage = nativeElement.querySelector(".mat-mdc-paginator-page-size");
|
|
79
|
+
const howManyDisplayedEl = nativeElement.querySelector(".mat-mdc-paginator-range-label");
|
|
80
|
+
const previousButton = nativeElement.querySelector("button.mat-mdc-paginator-navigation-previous");
|
|
81
|
+
const nextButtonDefault = nativeElement.querySelector("button.mat-mdc-paginator-navigation-next");
|
|
82
|
+
if (this.hideDefaultArrows) {
|
|
83
|
+
this.ren.setStyle(previousButton, "display", "none");
|
|
84
|
+
this.ren.setStyle(nextButtonDefault, "display", "none");
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
createBubbleDivRef() {
|
|
88
|
+
const actionContainer = this.elementRef.nativeElement.querySelector("div.mat-mdc-paginator-range-actions");
|
|
89
|
+
const nextButtonDefault = this.elementRef.nativeElement.querySelector("button.mat-mdc-paginator-navigation-next");
|
|
90
|
+
this.bubbleContainerRef = this.ren.createElement("div");
|
|
91
|
+
this.ren.addClass(this.bubbleContainerRef, "g-bubble-container");
|
|
92
|
+
this.ren.insertBefore(actionContainer, this.bubbleContainerRef, nextButtonDefault);
|
|
93
|
+
}
|
|
94
|
+
buildButtons() {
|
|
95
|
+
const neededButtons = Math.ceil(this.appCustomLength / this.matPag.pageSize);
|
|
96
|
+
if (neededButtons === 1) {
|
|
97
|
+
this.ren.setStyle(this.elementRef.nativeElement, "display", "none");
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
this.buttonsRef = [this.createButton(0)];
|
|
101
|
+
this.dotsStartRef = this.createDotsElement();
|
|
102
|
+
for (let index = 1; index < neededButtons - 1; index++) {
|
|
103
|
+
this.buttonsRef = [...this.buttonsRef, this.createButton(index)];
|
|
104
|
+
}
|
|
105
|
+
this.dotsEndRef = this.createDotsElement();
|
|
106
|
+
this.buttonsRef = [
|
|
107
|
+
...this.buttonsRef,
|
|
108
|
+
this.createButton(neededButtons - 1),
|
|
109
|
+
];
|
|
110
|
+
}
|
|
111
|
+
removeButtons() {
|
|
112
|
+
this.bubbleContainerRef.innerHTML = '';
|
|
113
|
+
this.buttonsRef.forEach((button) => {
|
|
114
|
+
this.ren.removeChild(this.bubbleContainerRef, button);
|
|
115
|
+
});
|
|
116
|
+
this.buttonsRef = [];
|
|
117
|
+
this.buttonsRef.length = 0;
|
|
118
|
+
}
|
|
119
|
+
createButton(i) {
|
|
120
|
+
const bubbleButton = this.ren.createElement("div");
|
|
121
|
+
const text = this.ren.createText(String(i + 1));
|
|
122
|
+
this.ren.addClass(bubbleButton, "g-bubble");
|
|
123
|
+
this.ren.setStyle(bubbleButton, "margin-right", "8px");
|
|
124
|
+
this.ren.appendChild(bubbleButton, text);
|
|
125
|
+
this.ren.listen(bubbleButton, "click", () => {
|
|
126
|
+
this.switchPage(i);
|
|
127
|
+
});
|
|
128
|
+
this.ren.appendChild(this.bubbleContainerRef, bubbleButton);
|
|
129
|
+
this.ren.setStyle(bubbleButton, "display", "none");
|
|
130
|
+
return bubbleButton;
|
|
131
|
+
}
|
|
132
|
+
createDotsElement() {
|
|
133
|
+
const dotsEl = this.ren.createElement("span");
|
|
134
|
+
const dotsText = this.ren.createText(".....");
|
|
135
|
+
this.ren.setStyle(dotsEl, "font-size", "18px");
|
|
136
|
+
this.ren.setStyle(dotsEl, "margin-right", "8px");
|
|
137
|
+
this.ren.setStyle(dotsEl, "padding-top", "6px");
|
|
138
|
+
this.ren.setStyle(dotsEl, "color", "#919191");
|
|
139
|
+
this.ren.appendChild(dotsEl, dotsText);
|
|
140
|
+
this.ren.appendChild(this.bubbleContainerRef, dotsEl);
|
|
141
|
+
this.ren.setStyle(dotsEl, "display", "none");
|
|
142
|
+
return dotsEl;
|
|
143
|
+
}
|
|
144
|
+
switchPage(i) {
|
|
145
|
+
const previousPageIndex = this.matPag.pageIndex;
|
|
146
|
+
this.matPag.pageIndex = i;
|
|
147
|
+
try {
|
|
148
|
+
this.matPag["_emitPageEvent"](previousPageIndex);
|
|
149
|
+
}
|
|
150
|
+
catch { }
|
|
151
|
+
this.pageIndexChangeEmitter.emit(i);
|
|
152
|
+
}
|
|
153
|
+
updateButtonsOnPageEvent() {
|
|
154
|
+
const neededButtons = Math.ceil(this.appCustomLength / this.matPag.pageSize);
|
|
155
|
+
if (neededButtons === this.buttonsRef.length) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
this.removeButtons();
|
|
159
|
+
this.buildButtons();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
BubblePaginationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BubblePaginationDirective, deps: [{ token: i1.MatPaginator }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
163
|
+
BubblePaginationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: BubblePaginationDirective, isStandalone: true, selector: "[appBubblePagination]", inputs: { showFirstButton: "showFirstButton", showLastButton: "showLastButton", renderButtonsNumber: "renderButtonsNumber", appCustomLength: "appCustomLength", hideDefaultArrows: "hideDefaultArrows" }, outputs: { pageIndexChangeEmitter: "pageIndexChangeEmitter" }, usesOnChanges: true, ngImport: i0 });
|
|
164
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BubblePaginationDirective, decorators: [{
|
|
165
|
+
type: Directive,
|
|
166
|
+
args: [{
|
|
167
|
+
selector: "[appBubblePagination]",
|
|
168
|
+
standalone: true,
|
|
169
|
+
}]
|
|
170
|
+
}], ctorParameters: function () { return [{ type: i1.MatPaginator }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { pageIndexChangeEmitter: [{
|
|
171
|
+
type: Output
|
|
172
|
+
}], showFirstButton: [{
|
|
173
|
+
type: Input
|
|
174
|
+
}], showLastButton: [{
|
|
175
|
+
type: Input
|
|
176
|
+
}], renderButtonsNumber: [{
|
|
177
|
+
type: Input
|
|
178
|
+
}], appCustomLength: [{
|
|
179
|
+
type: Input
|
|
180
|
+
}], hideDefaultArrows: [{
|
|
181
|
+
type: Input
|
|
182
|
+
}] } });
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXBhZ2luYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBhLWxpYnJhcnktdWkvc3JjL2xpYi9jb3JlL2RpcmVjdGl2ZXMvY3VzdG9tLXBhZ2luYXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBTXRDLE1BQU0sT0FBTyx5QkFBeUI7SUFZcEMsWUFDbUIsTUFBb0IsRUFDN0IsVUFBc0IsRUFDdEIsR0FBYztRQUZMLFdBQU0sR0FBTixNQUFNLENBQWM7UUFDN0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixRQUFHLEdBQUgsR0FBRyxDQUFXO1FBZGQsMkJBQXNCLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDM0Usb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsd0JBQW1CLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBQzVCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUkzQixlQUFVLEdBQWtCLEVBQUUsQ0FBQztJQU1wQyxDQUFDO0lBRUosZUFBZTtRQUNiLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFdBQVcsRUFBRTtZQUM5QyxJQUFJLENB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LEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvclwiO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGggfSBmcm9tIFwicnhqc1wiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2FwcEJ1YmJsZVBhZ2luYXRpb25dXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEJ1YmJsZVBhZ2luYXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICBAT3V0cHV0KCkgcGFnZUluZGV4Q2hhbmdlRW1pdHRlcjogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQElucHV0KCkgc2hvd0ZpcnN0QnV0dG9uID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0xhc3RCdXR0b24gPSB0cnVlO1xuICBASW5wdXQoKSByZW5kZXJCdXR0b25zTnVtYmVyID0gMjtcbiAgQElucHV0KCkgYXBwQ3VzdG9tTGVuZ3RoOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBoaWRlRGVmYXVsdEFycm93cyA9IGZhbHNlO1xuICBwcml2YXRlIGRvdHNFbmRSZWYhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBkb3RzU3RhcnRSZWYhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBidWJibGVDb250YWluZXJSZWYhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBidXR0b25zUmVmOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXRQYWc6IE1hdFBhZ2luYXRvcixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW46IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3R5bGVEZWZhdWx0UGFnaW5hdGlvbigpO1xuICAgIHRoaXMuY3JlYXRlQnViYmxlRGl2UmVmKCk7XG4gICAgdGhpcy5yZW5kZXJCdXR0b25zKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCFjaGFuZ2VzPy5bXCJhcHBDdXN0b21MZW5ndGhcIl0/LmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnJlbW92ZUJ1dHRvbnMoKTtcbiAgICAgIHRoaXMuc3dpdGNoUGFnZSgwKTtcbiAgICAgIHRoaXMucmVuZGVyQnV0dG9ucygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyQnV0dG9ucygpOiB2b2lkIHtcbiAgICB0aGlzLmJ1aWxkQnV0dG9ucygpO1xuXG4gICAgdGhpcy5tYXRQYWcucGFnZVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoZSkgPT4gW2UucHJldmlvdXNQYWdlSW5kZXggPz8gMCwgZS5wYWdlSW5kZXhdKSxcbiAgICAgICAgc3RhcnRXaXRoKFswLCAwXSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFtwcmV2LCBjdXJyXSkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZUFjdGl2ZUJ1dHRvblN0eWxlcyhwcmV2LCBjdXJyKTtcbiAgICAgICAgdGhpcy51cGRhdGVCdXR0b25zT25QYWdlRXZlbnQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VBY3RpdmVCdXR0b25TdHlsZXMocHJldmlvdXNJbmRleDogbnVtYmVyLCBuZXdJbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgcHJldmlvdXNseUFjdGl2ZSA9IHRoaXMuYnV0dG9uc1JlZltwcmV2aW91c0luZGV4XTtcbiAgICBjb25zdCBjdXJyZW50QWN0aXZlID0gdGhpcy5idXR0b25zUmVmW25ld0luZGV4XTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLnJlbi5yZW1vdmVDbGFzcyhwcmV2aW91c2x5QWN0aXZlLCBcImctYnViYmxlX19hY3RpdmVcIik7XG4gICAgICB0aGlzLnJlbi5hZGRDbGFzcyhjdXJyZW50QWN0aXZlLCBcImctYnViYmxlX19hY3RpdmVcIik7XG4gICAgfSBjYXRjaCB7fVxuXG4gICAgdGhpcy5idXR0b25zUmVmLmZvckVhY2goKGJ1dHRvbikgPT5cbiAgICAgIHRoaXMucmVuLnNldFN0eWxlKGJ1dHRvbiwgXCJkaXNwbGF5XCIsIFwibm9uZVwiKVxuICAgICk7XG5cbiAgICBjb25zdCByZW5kZXJFbGVtZW50cyA9IHRoaXMucmVuZGVyQnV0dG9uc051bWJlcjtcbiAgICBjb25zdCBlbmREb3RzID0gbmV3SW5kZXggPCB0aGlzLmJ1dHRvbnNSZWYubGVuZ3RoIC0gcmVuZGVyRWxlbWVudHMgLSAxO1xuICAgIGNvbnN0IHN0YXJ0RG90cyA9IG5ld0luZGV4IC0gcmVuZGVyRWxlbWVudHMgPiAwO1xuXG4gICAgY29uc3QgZmlyc3RCdXR0b24gPSB0aGlzLmJ1dHRvbnNSZWZbMF07XG4gICAgY29uc3QgbGFzdEJ1dHRvbiA9IHRoaXMuYnV0dG9uc1JlZlt0aGlzLmJ1dHRvbnNSZWYubGVuZ3RoIC0gMV07XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuc2hvd0xhc3RCdXR0b24pIHtcbiAgICAgICAgdGhpcy5yZW4uc2V0U3R5bGUodGhpcy5kb3RzRW5kUmVmLCBcImRpc3BsYXlcIiwgZW5kRG90cyA/IFwiYmxvY2tcIiA6IFwibm9uZVwiKTtcbiAgICAgICAgdGhpcy5yZW4uc2V0U3R5bGUobGFzdEJ1dHRvbiwgXCJkaXNwbGF5XCIsIGVuZERvdHMgPyBcImZsZXhcIiA6IFwibm9uZVwiKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHt9XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuc2hvd0ZpcnN0QnV0dG9uKSB7XG4gICAgICAgIHRoaXMucmVuLnNldFN0eWxlKFxuICAgICAgICAgIHRoaXMuZG90c1N0YXJ0UmVmLFxuICAgICAgICAgIFwiZGlzcGxheVwiLFxuICAgICAgICAgIHN0YXJ0RG90cyA/IFwiYmxvY2tcIiA6IFwibm9uZVwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVuLnNldFN0eWxlKGZpcnN0QnV0dG9uLCBcImRpc3BsYXlcIiwgc3RhcnREb3RzID8gXCJmbGV4XCIgOiBcIm5vbmVcIik7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7fVxuXG4gICAgY29uc3Qgc3RhcnRpbmdJbmRleCA9IHN0YXJ0RG90cyA/IG5ld0luZGV4IC0gcmVuZGVyRWxlbWVudHMgOiAwO1xuICAgIGNvbnN0IGVuZGluZ0luZGV4ID0gZW5kRG90c1xuICAgICAgPyBuZXdJbmRleCArIHJlbmRlckVsZW1lbnRzXG4gICAgICA6IHRoaXMuYnV0dG9uc1JlZi5sZW5ndGggLSAxO1xuXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0aW5nSW5kZXg7IGkgPD0gZW5kaW5nSW5kZXg7IGkrKykge1xuICAgICAgY29uc3QgYnV0dG9uID0gdGhpcy5idXR0b25zUmVmW2ldO1xuICAgICAgdGhpcy5yZW4uc2V0U3R5bGUoYnV0dG9uLCBcImRpc3BsYXlcIiwgXCJmbGV4XCIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3R5bGVEZWZhdWx0UGFnaW5hdGlvbigpIHtcbiAgICBjb25zdCBuYXRpdmVFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgaXRlbXNQZXJQYWdlID0gbmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgXCIubWF0LW1kYy1wYWdpbmF0b3ItcGFnZS1zaXplXCJcbiAgICApO1xuICAgIGNvbnN0IGhvd01hbnlEaXNwbGF5ZWRFbCA9IG5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgIFwiLm1hdC1tZGMtcGFnaW5hdG9yLXJhbmdlLWxhYmVsXCJcbiAgICApO1xuICAgIGNvbnN0IHByZXZpb3VzQnV0dG9uID0gbmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgXCJidXR0b24ubWF0LW1kYy1wYWdpbmF0b3ItbmF2aWdhdGlvbi1wcmV2aW91c1wiXG4gICAgKTtcbiAgICBjb25zdCBuZXh0QnV0dG9uRGVmYXVsdCA9IG5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgIFwiYnV0dG9uLm1hdC1tZGMtcGFnaW5hdG9yLW5hdmlnYXRpb24tbmV4dFwiXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmhpZGVEZWZhdWx0QXJyb3dzKSB7XG4gICAgICB0aGlzLnJlbi5zZXRTdHlsZShwcmV2aW91c0J1dHRvbiwgXCJkaXNwbGF5XCIsIFwibm9uZVwiKTtcbiAgICAgIHRoaXMucmVuLnNldFN0eWxlKG5leHRCdXR0b25EZWZhdWx0LCBcImRpc3BsYXlcIiwgXCJub25lXCIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQnViYmxlRGl2UmVmKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBcImRpdi5tYXQtbWRjLXBhZ2luYXRvci1yYW5nZS1hY3Rpb25zXCJcbiAgICApO1xuICAgIGNvbnN0IG5leHRCdXR0b25EZWZhdWx0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgIFwiYnV0dG9uLm1hdC1tZGMtcGFnaW5hdG9yLW5hdmlnYXRpb24tbmV4dFwiXG4gICAgKTtcblxuICAgIHRoaXMuYnViYmxlQ29udGFpbmVyUmVmID0gdGhpcy5yZW4uY3JlYXRlRWxlbWVudChcImRpdlwiKSBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLnJlbi5hZGRDbGFzcyh0aGlzLmJ1YmJsZUNvbnRhaW5lclJlZiwgXCJnLWJ1YmJsZS1jb250YWluZXJcIik7XG5cbiAgICB0aGlzLnJlbi5pbnNlcnRCZWZvcmUoXG4gICAgICBhY3Rpb25Db250YWluZXIsXG4gICAgICB0aGlzLmJ1YmJsZUNvbnRhaW5lclJlZixcbiAgICAgIG5leHRCdXR0b25EZWZhdWx0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRCdXR0b25zKCk6IHZvaWQge1xuICAgIGNvbnN0IG5lZWRlZEJ1dHRvbnMgPSBNYXRoLmNlaWwoXG4gICAgICB0aGlzLmFwcEN1c3RvbUxlbmd0aCAvIHRoaXMubWF0UGFnLnBhZ2VTaXplXG4gICAgKTtcblxuICAgIGlmIChuZWVkZWRCdXR0b25zID09PSAxKSB7XG4gICAgICB0aGlzLnJlbi5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgXCJkaXNwbGF5XCIsIFwibm9uZVwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1dHRvbnNSZWYgPSBbdGhpcy5jcmVhdGVCdXR0b24oMCldO1xuICAgIHRoaXMuZG90c1N0YXJ0UmVmID0gdGhpcy5jcmVhdGVEb3RzRWxlbWVudCgpO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IG5lZWRlZEJ1dHRvbnMgLSAxOyBpbmRleCsrKSB7XG4gICAgICB0aGlzLmJ1dHRvbnNSZWYgPSBbLi4udGhpcy5idXR0b25zUmVmLCB0aGlzLmNyZWF0ZUJ1dHRvbihpbmRleCldO1xuICAgIH1cblxuICAgIHRoaXMuZG90c0VuZFJlZiA9IHRoaXMuY3JlYXRlRG90c0VsZW1lbnQoKTtcblxuICAgIHRoaXMuYnV0dG9uc1JlZiA9IFtcbiAgICAgIC4uLnRoaXMuYnV0dG9uc1JlZixcbiAgICAgIHRoaXMuY3JlYXRlQnV0dG9uKG5lZWRlZEJ1dHRvbnMgLSAxKSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVCdXR0b25zKCk6IHZvaWQge1xuICAgIHRoaXMuYnViYmxlQ29udGFpbmVyUmVmLmlubmVySFRNTCA9ICcnO1xuICAgIHRoaXMuYnV0dG9uc1JlZi5mb3JFYWNoKChidXR0b24pID0+IHtcbiAgICAgIHRoaXMucmVuLnJlbW92ZUNoaWxkKHRoaXMuYnViYmxlQ29udGFpbmVyUmVmLCBidXR0b24pO1xuICAgIH0pO1xuICAgIHRoaXMuYnV0dG9uc1JlZiA9IFtdO1xuICAgIHRoaXMuYnV0dG9uc1JlZi5sZW5ndGggPSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVCdXR0b24oaTogbnVtYmVyKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGJ1YmJsZUJ1dHRvbiA9IHRoaXMucmVuLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMucmVuLmNyZWF0ZVRleHQoU3RyaW5nKGkgKyAxKSk7XG5cbiAgICB0aGlzLnJlbi5hZGRDbGFzcyhidWJibGVCdXR0b24sIFwiZy1idWJibGVcIik7XG4gICAgdGhpcy5yZW4uc2V0U3R5bGUoYnViYmxlQnV0dG9uLCBcIm1hcmdpbi1yaWdodFwiLCBcIjhweFwiKTtcbiAgICB0aGlzLnJlbi5hcHBlbmRDaGlsZChidWJibGVCdXR0b24sIHRleHQpO1xuXG4gICAgdGhpcy5yZW4ubGlzdGVuKGJ1YmJsZUJ1dHRvbiwgXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICB0aGlzLnN3aXRjaFBhZ2UoaSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlbi5hcHBlbmRDaGlsZCh0aGlzLmJ1YmJsZUNvbnRhaW5lclJlZiwgYnViYmxlQnV0dG9uKTtcbiAgICB0aGlzLnJlbi5zZXRTdHlsZShidWJibGVCdXR0b24sIFwiZGlzcGxheVwiLCBcIm5vbmVcIik7XG5cbiAgICByZXR1cm4gYnViYmxlQnV0dG9uO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEb3RzRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgZG90c0VsID0gdGhpcy5yZW4uY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgY29uc3QgZG90c1RleHQgPSB0aGlzLnJlbi5jcmVhdGVUZXh0KFwiLi4uLi5cIik7XG5cbiAgICB0aGlzLnJlbi5zZXRTdHlsZShkb3RzRWwsIFwiZm9udC1zaXplXCIsIFwiMThweFwiKTtcbiAgICB0aGlzLnJlbi5zZXRTdHlsZShkb3RzRWwsIFwibWFyZ2luLXJpZ2h0XCIsIFwiOHB4XCIpO1xuICAgIHRoaXMucmVuLnNldFN0eWxlKGRvdHNFbCwgXCJwYWRkaW5nLXRvcFwiLCBcIjZweFwiKTtcbiAgICB0aGlzLnJlbi5zZXRTdHlsZShkb3RzRWwsIFwiY29sb3JcIiwgXCIjOTE5MTkxXCIpO1xuXG4gICAgdGhpcy5yZW4uYXBwZW5kQ2hpbGQoZG90c0VsLCBkb3RzVGV4dCk7XG4gICAgdGhpcy5yZW4uYXBwZW5kQ2hpbGQodGhpcy5idWJibGVDb250YWluZXJSZWYsIGRvdHNFbCk7XG4gICAgdGhpcy5yZW4uc2V0U3R5bGUoZG90c0VsLCBcImRpc3BsYXlcIiwgXCJub25lXCIpO1xuXG4gICAgcmV0dXJuIGRvdHNFbDtcbiAgfVxuXG4gIHByaXZhdGUgc3dpdGNoUGFnZShpOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2aW91c1BhZ2VJbmRleCA9IHRoaXMubWF0UGFnLnBhZ2VJbmRleDtcbiAgICB0aGlzLm1hdFBhZy5wYWdlSW5kZXggPSBpO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLm1hdFBhZ1tcIl9lbWl0UGFnZUV2ZW50XCJdKHByZXZpb3VzUGFnZUluZGV4KTtcbiAgICB9IGNhdGNoIHt9XG5cbiAgICB0aGlzLnBhZ2VJbmRleENoYW5nZUVtaXR0ZXIuZW1pdChpKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQnV0dG9uc09uUGFnZUV2ZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IG5lZWRlZEJ1dHRvbnMgPSBNYXRoLmNlaWwoXG4gICAgICB0aGlzLmFwcEN1c3RvbUxlbmd0aCAvIHRoaXMubWF0UGFnLnBhZ2VTaXplXG4gICAgKTtcbiAgICBpZiAobmVlZGVkQnV0dG9ucyA9PT0gdGhpcy5idXR0b25zUmVmLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucmVtb3ZlQnV0dG9ucygpO1xuICAgIHRoaXMuYnVpbGRCdXR0b25zKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generated bundle index. Do not edit.
|
|
3
3
|
*/
|
|
4
|
-
export * from './
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
export * from './table';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwYS1saWJyYXJ5LXVpLXNyYy1saWItY29tcG9uZW50cy10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hcGEtbGlicmFyeS11aS9zcmMvbWFwYS1saWJyYXJ5LXVpLXNyYy1saWItY29tcG9uZW50cy10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlJztcbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of mapa-library-ui table
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/core/directives/custom-paginator.directive';
|
|
5
|
+
export * from './lib/core/directives/custom-paginator-legacy.directive';
|
|
6
|
+
export * from './lib/components/table/public-api';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBhLWxpYnJhcnktdWkvc3JjL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG1hcGEtbGlicmFyeS11aSB0YWJsZVxuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL2RpcmVjdGl2ZXMvY3VzdG9tLXBhZ2luYXRvci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9kaXJlY3RpdmVzL2N1c3RvbS1wYWdpbmF0b3ItbGVnYWN5LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RhYmxlL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -600,10 +600,10 @@ class FiltersComponent {
|
|
|
600
600
|
}
|
|
601
601
|
}
|
|
602
602
|
FiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
603
|
-
FiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FiltersComponent, selector: "mapa-filters", inputs: { form: "form", elements: "elements" }, outputs: { selectedValues: "selectedValues" }, ngImport: i0, template: "<div class=\"filter\">\n <div *ngFor=\"let filter of elements\">\n <div *ngIf=\"filter.controlType === 'checkbox'\" class=\"filter__item--resizable\">\n <mapa-checkbox [formControl]=\"getFormControl(filter.key)\"></mapa-checkbox>\n </div>\n <div *ngIf=\"filter.controlType === 'dropdown'\" class=\"filter__item--resizable\">\n <mapa-dropdown\n [formControl]=\"getFormControl(filter.key)\"\n [element]=\"filter\"\n ></mapa-dropdown>\n </div>\n <div *ngIf=\"filter.controlType === 'input'\" class=\"filter__item\">\n <mapa-input\n [formControl]=\"getFormControl(filter.key)\"\n [element]=\"filter\"\n ></mapa-input>\n </div>\n </div>\n <div class=\"filter__item\">\n <mapa-button [color]=\"'basic'\" (clicked)=\"clearFilters()\">\n Limpar filtros\n </mapa-button>\n <mapa-button\n [color]=\"'primary'\"\n [disabled]=\"!!form.invalid\"\n (clicked)=\"emitSelectedValues()\"\n >\n Filtrar\n </mapa-button>\n </div>\n</div>\n<!--\n<div class=\"input\" *ngIf=\"containsInputText\">\n <div class=\"overlay\"></div>\n <div class=\"inputBackground\">\n <mapa-input\n [formControl]=\"formControlSearchAutoresize\"\n [element]=\"inputTextSearchAutoresize\"\n ></mapa-input>\n </div>\n</div>\n-->\n", styles: [".filter{display:
|
|
603
|
+
FiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FiltersComponent, selector: "mapa-filters", inputs: { form: "form", elements: "elements" }, outputs: { selectedValues: "selectedValues" }, ngImport: i0, template: "<div class=\"filter\">\n <div *ngFor=\"let filter of elements\">\n <div *ngIf=\"filter.controlType === 'checkbox'\" class=\"filter__item--resizable\">\n <mapa-checkbox [formControl]=\"getFormControl(filter.key)\"></mapa-checkbox>\n </div>\n <div *ngIf=\"filter.controlType === 'dropdown'\" class=\"filter__item--resizable\">\n <mapa-dropdown\n [formControl]=\"getFormControl(filter.key)\"\n [element]=\"filter\"\n ></mapa-dropdown>\n </div>\n <div *ngIf=\"filter.controlType === 'input'\" class=\"filter__item\">\n <mapa-input\n [formControl]=\"getFormControl(filter.key)\"\n [element]=\"filter\"\n ></mapa-input>\n </div>\n </div>\n <div class=\"filter__item\">\n <mapa-button [color]=\"'basic'\" (clicked)=\"clearFilters()\">\n Limpar filtros\n </mapa-button>\n <mapa-button\n [color]=\"'primary'\"\n [disabled]=\"!!form.invalid\"\n (clicked)=\"emitSelectedValues()\"\n >\n Filtrar\n </mapa-button>\n </div>\n</div>\n<!--\n<div class=\"input\" *ngIf=\"containsInputText\">\n <div class=\"overlay\"></div>\n <div class=\"inputBackground\">\n <mapa-input\n [formControl]=\"formControlSearchAutoresize\"\n [element]=\"inputTextSearchAutoresize\"\n ></mapa-input>\n </div>\n</div>\n-->\n", styles: [".filter{display:flex;align-items:center;flex-wrap:wrap;background-color:#f6f7f7;padding:32px;width:95vw;gap:30px}.filter__item{display:flex}.input{position:relative}.overlay{position:absolute;top:0;left:2%;width:96%;height:100%;border-bottom:1px solid #d2d7da;z-index:-1}.inputBackground{background-color:#fff;padding:32px 30px;position:relative}button{border:none;background-color:transparent;color:#ea561d;margin-top:30px}::ng-deep mapa-dropdown .mapa-dropdown{max-width:none;min-width:10vw}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.ButtonComponent, selector: "mapa-button", inputs: ["color", "disabled"], outputs: ["clicked"] }, { kind: "component", type: i3.CheckboxComponent, selector: "mapa-checkbox", inputs: ["color", "formControl"] }, { kind: "component", type: i4.MapaDropdownComponent, selector: "mapa-dropdown", inputs: ["formControl", "formControlSearch", "element", "border"] }, { kind: "component", type: i5.MapaInputComponent, selector: "mapa-input", inputs: ["formControl", "element"] }] });
|
|
604
604
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FiltersComponent, decorators: [{
|
|
605
605
|
type: Component,
|
|
606
|
-
args: [{ selector: 'mapa-filters', template: "<div class=\"filter\">\n <div *ngFor=\"let filter of elements\">\n <div *ngIf=\"filter.controlType === 'checkbox'\" class=\"filter__item--resizable\">\n <mapa-checkbox [formControl]=\"getFormControl(filter.key)\"></mapa-checkbox>\n </div>\n <div *ngIf=\"filter.controlType === 'dropdown'\" class=\"filter__item--resizable\">\n <mapa-dropdown\n [formControl]=\"getFormControl(filter.key)\"\n [element]=\"filter\"\n ></mapa-dropdown>\n </div>\n <div *ngIf=\"filter.controlType === 'input'\" class=\"filter__item\">\n <mapa-input\n [formControl]=\"getFormControl(filter.key)\"\n [element]=\"filter\"\n ></mapa-input>\n </div>\n </div>\n <div class=\"filter__item\">\n <mapa-button [color]=\"'basic'\" (clicked)=\"clearFilters()\">\n Limpar filtros\n </mapa-button>\n <mapa-button\n [color]=\"'primary'\"\n [disabled]=\"!!form.invalid\"\n (clicked)=\"emitSelectedValues()\"\n >\n Filtrar\n </mapa-button>\n </div>\n</div>\n<!--\n<div class=\"input\" *ngIf=\"containsInputText\">\n <div class=\"overlay\"></div>\n <div class=\"inputBackground\">\n <mapa-input\n [formControl]=\"formControlSearchAutoresize\"\n [element]=\"inputTextSearchAutoresize\"\n ></mapa-input>\n </div>\n</div>\n-->\n", styles: [".filter{display:
|
|
606
|
+
args: [{ selector: 'mapa-filters', template: "<div class=\"filter\">\n <div *ngFor=\"let filter of elements\">\n <div *ngIf=\"filter.controlType === 'checkbox'\" class=\"filter__item--resizable\">\n <mapa-checkbox [formControl]=\"getFormControl(filter.key)\"></mapa-checkbox>\n </div>\n <div *ngIf=\"filter.controlType === 'dropdown'\" class=\"filter__item--resizable\">\n <mapa-dropdown\n [formControl]=\"getFormControl(filter.key)\"\n [element]=\"filter\"\n ></mapa-dropdown>\n </div>\n <div *ngIf=\"filter.controlType === 'input'\" class=\"filter__item\">\n <mapa-input\n [formControl]=\"getFormControl(filter.key)\"\n [element]=\"filter\"\n ></mapa-input>\n </div>\n </div>\n <div class=\"filter__item\">\n <mapa-button [color]=\"'basic'\" (clicked)=\"clearFilters()\">\n Limpar filtros\n </mapa-button>\n <mapa-button\n [color]=\"'primary'\"\n [disabled]=\"!!form.invalid\"\n (clicked)=\"emitSelectedValues()\"\n >\n Filtrar\n </mapa-button>\n </div>\n</div>\n<!--\n<div class=\"input\" *ngIf=\"containsInputText\">\n <div class=\"overlay\"></div>\n <div class=\"inputBackground\">\n <mapa-input\n [formControl]=\"formControlSearchAutoresize\"\n [element]=\"inputTextSearchAutoresize\"\n ></mapa-input>\n </div>\n</div>\n-->\n", styles: [".filter{display:flex;align-items:center;flex-wrap:wrap;background-color:#f6f7f7;padding:32px;width:95vw;gap:30px}.filter__item{display:flex}.input{position:relative}.overlay{position:absolute;top:0;left:2%;width:96%;height:100%;border-bottom:1px solid #d2d7da;z-index:-1}.inputBackground{background-color:#fff;padding:32px 30px;position:relative}button{border:none;background-color:transparent;color:#ea561d;margin-top:30px}::ng-deep mapa-dropdown .mapa-dropdown{max-width:none;min-width:10vw}\n"] }]
|
|
607
607
|
}], propDecorators: { form: [{
|
|
608
608
|
type: Input
|
|
609
609
|
}], elements: [{
|