ecabs-components 1.0.23 → 1.0.24-alpha

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.
Files changed (106) hide show
  1. package/README.md +1 -0
  2. package/esm2022/lib/base/directives/element-multiplier.directive.mjs +26 -0
  3. package/esm2022/lib/base/directives/element-multiplier.directive.module.mjs +22 -0
  4. package/esm2022/lib/base/directives/style-paginator.directive.mjs +263 -0
  5. package/esm2022/lib/base/directives/style-paginator.module.mjs +19 -0
  6. package/esm2022/lib/base/element-wrapper/element-wrapper.component.mjs +2 -2
  7. package/esm2022/lib/base/element-wrapper/element-wrapper.module.mjs +4 -4
  8. package/esm2022/lib/base/hint/hint.module.mjs +2 -2
  9. package/esm2022/lib/base/validation/validation.module.mjs +2 -2
  10. package/esm2022/lib/ecabs-autocomplete/ecabs-autocomplete.component.mjs +91 -0
  11. package/esm2022/lib/ecabs-autocomplete/ecabs-autocomplete.module.mjs +28 -0
  12. package/esm2022/lib/ecabs-buttons/ecabs-buttons.component.mjs +4 -4
  13. package/esm2022/lib/ecabs-buttons/ecabs-buttons.module.mjs +2 -2
  14. package/esm2022/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.component.mjs +4 -4
  15. package/esm2022/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.module.mjs +3 -3
  16. package/esm2022/lib/ecabs-date-picker/ecabs-date-picker.component.mjs +2 -2
  17. package/esm2022/lib/ecabs-date-picker/ecabs-date-picker.module.mjs +2 -2
  18. package/esm2022/lib/ecabs-date-range-picker/components/ecabs-date-range-picker-header/ecabs-date-range-picker-header.component.mjs +15 -0
  19. package/esm2022/lib/ecabs-date-range-picker/ecabs-date-range-picker.component.mjs +123 -0
  20. package/esm2022/lib/ecabs-date-range-picker/ecabs-date-range-picker.module.mjs +75 -0
  21. package/esm2022/lib/ecabs-date-time-picker/ecabs-date-time-picker.component.mjs +2 -2
  22. package/esm2022/lib/ecabs-date-time-picker/ecabs-date-time-picker.module.mjs +2 -2
  23. package/esm2022/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.component.mjs +2 -2
  24. package/esm2022/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.module.mjs +2 -2
  25. package/esm2022/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.component.mjs +4 -5
  26. package/esm2022/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.module.mjs +2 -2
  27. package/esm2022/lib/ecabs-dialog-message/ecabs-dialog-message.component.mjs +4 -5
  28. package/esm2022/lib/ecabs-dialog-message/ecabs-dialog-message.module.mjs +2 -2
  29. package/esm2022/lib/ecabs-expansion-panel/ecabs-expansion-panel.component.mjs +2 -2
  30. package/esm2022/lib/ecabs-expansion-panel/ecabs-expansion-panel.module.mjs +3 -3
  31. package/esm2022/lib/ecabs-increment/ecabs-increment.component.mjs +2 -2
  32. package/esm2022/lib/ecabs-increment/ecabs-increment.module.mjs +2 -2
  33. package/esm2022/lib/ecabs-input/ecabs-input.component.mjs +8 -4
  34. package/esm2022/lib/ecabs-input/ecabs-input.module.mjs +9 -5
  35. package/esm2022/lib/ecabs-language-selector/ecabs-language-selector.component.mjs +5 -5
  36. package/esm2022/lib/ecabs-language-selector/ecabs-language-selector.module.mjs +4 -4
  37. package/esm2022/lib/ecabs-phone/ecabs-phone.module.mjs +2 -2
  38. package/esm2022/lib/ecabs-picker-header/ecabs-picker-header.component.mjs +3 -3
  39. package/esm2022/lib/ecabs-picker-header/ecabs-picker-header.module.mjs +2 -2
  40. package/esm2022/lib/ecabs-radio-button-list/ecabs-radio-button-list.component.mjs +2 -2
  41. package/esm2022/lib/ecabs-radio-button-list/ecabs-radio-button-list.module.mjs +2 -2
  42. package/esm2022/lib/ecabs-select/ecabs-select.component.mjs +6 -6
  43. package/esm2022/lib/ecabs-select/ecabs-select.module.mjs +3 -3
  44. package/esm2022/lib/ecabs-sep-date-range-picker/ecabs-sep-date-range-picker.component.mjs +165 -0
  45. package/esm2022/lib/ecabs-sep-date-range-picker/ecabs-sep-date-range-picker.module.mjs +59 -0
  46. package/esm2022/lib/ecabs-sep-paginator/ecabs-sep-paginator.component.mjs +42 -0
  47. package/esm2022/lib/ecabs-sep-paginator/ecabs-sep-paginator.module.mjs +22 -0
  48. package/esm2022/lib/ecabs-skeleton-card-grid/ecabs-skeleton-card-grid.component.mjs +16 -0
  49. package/esm2022/lib/ecabs-skeleton-card-grid/ecabs-skeleton-card-grid.module.mjs +21 -0
  50. package/esm2022/lib/ecabs-skeleton-profile/ecabs-skeleton-profile.component.mjs +20 -0
  51. package/esm2022/lib/ecabs-skeleton-profile/ecabs-skeleton-profile.module.mjs +21 -0
  52. package/esm2022/lib/ecabs-skeleton-table/ecabs-skeleton-table.component.mjs +24 -0
  53. package/esm2022/lib/ecabs-skeleton-table/ecabs-skeleton-table.module.mjs +21 -0
  54. package/esm2022/lib/ecabs-skeleton-table-filter/ecabs-skeleton-table-filter.component.mjs +19 -0
  55. package/esm2022/lib/ecabs-skeleton-table-filter/ecabs-skeleton-table-filter.module.mjs +21 -0
  56. package/esm2022/lib/ecabs-table/ecabs-table.component.mjs +2 -2
  57. package/esm2022/lib/ecabs-table/ecabs-table.module.mjs +3 -3
  58. package/esm2022/lib/models/pagination.models.mjs +2 -0
  59. package/esm2022/public-api.mjs +18 -1
  60. package/fesm2022/ecabs-components.mjs +1127 -144
  61. package/fesm2022/ecabs-components.mjs.map +1 -1
  62. package/lib/base/directives/element-multiplier.directive.d.ts +10 -0
  63. package/lib/base/directives/element-multiplier.directive.module.d.ts +8 -0
  64. package/lib/base/directives/style-paginator.directive.d.ts +36 -0
  65. package/lib/base/directives/style-paginator.module.d.ts +8 -0
  66. package/lib/base/element-wrapper/element-wrapper.module.d.ts +4 -4
  67. package/lib/base/hint/hint.module.d.ts +2 -2
  68. package/lib/base/validation/validation.module.d.ts +2 -2
  69. package/lib/ecabs-autocomplete/ecabs-autocomplete.component.d.ts +30 -0
  70. package/lib/ecabs-autocomplete/ecabs-autocomplete.module.d.ts +15 -0
  71. package/lib/ecabs-buttons/ecabs-buttons.module.d.ts +2 -2
  72. package/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.module.d.ts +3 -3
  73. package/lib/ecabs-date-picker/ecabs-date-picker.module.d.ts +2 -2
  74. package/lib/ecabs-date-range-picker/components/ecabs-date-range-picker-header/ecabs-date-range-picker-header.component.d.ts +6 -0
  75. package/lib/ecabs-date-range-picker/ecabs-date-range-picker.component.d.ts +47 -0
  76. package/lib/ecabs-date-range-picker/ecabs-date-range-picker.module.d.ts +30 -0
  77. package/lib/ecabs-date-time-picker/ecabs-date-time-picker.module.d.ts +2 -2
  78. package/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.module.d.ts +2 -2
  79. package/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.module.d.ts +2 -2
  80. package/lib/ecabs-dialog-message/ecabs-dialog-message.module.d.ts +2 -2
  81. package/lib/ecabs-expansion-panel/ecabs-expansion-panel.module.d.ts +3 -3
  82. package/lib/ecabs-increment/ecabs-increment.module.d.ts +2 -2
  83. package/lib/ecabs-input/ecabs-input.component.d.ts +2 -1
  84. package/lib/ecabs-input/ecabs-input.module.d.ts +3 -2
  85. package/lib/ecabs-language-selector/ecabs-language-selector.module.d.ts +4 -4
  86. package/lib/ecabs-phone/ecabs-phone.module.d.ts +2 -2
  87. package/lib/ecabs-picker-header/ecabs-picker-header.module.d.ts +2 -2
  88. package/lib/ecabs-radio-button-list/ecabs-radio-button-list.module.d.ts +2 -2
  89. package/lib/ecabs-select/ecabs-select.module.d.ts +3 -3
  90. package/lib/ecabs-sep-date-range-picker/ecabs-sep-date-range-picker.component.d.ts +52 -0
  91. package/lib/ecabs-sep-date-range-picker/ecabs-sep-date-range-picker.module.d.ts +17 -0
  92. package/lib/ecabs-sep-paginator/ecabs-sep-paginator.component.d.ts +20 -0
  93. package/lib/ecabs-sep-paginator/ecabs-sep-paginator.module.d.ts +11 -0
  94. package/lib/ecabs-skeleton-card-grid/ecabs-skeleton-card-grid.component.d.ts +6 -0
  95. package/lib/ecabs-skeleton-card-grid/ecabs-skeleton-card-grid.module.d.ts +10 -0
  96. package/lib/ecabs-skeleton-profile/ecabs-skeleton-profile.component.d.ts +9 -0
  97. package/lib/ecabs-skeleton-profile/ecabs-skeleton-profile.module.d.ts +10 -0
  98. package/lib/ecabs-skeleton-table/ecabs-skeleton-table.component.d.ts +10 -0
  99. package/lib/ecabs-skeleton-table/ecabs-skeleton-table.module.d.ts +10 -0
  100. package/lib/ecabs-skeleton-table-filter/ecabs-skeleton-table-filter.component.d.ts +7 -0
  101. package/lib/ecabs-skeleton-table-filter/ecabs-skeleton-table-filter.module.d.ts +10 -0
  102. package/lib/ecabs-table/ecabs-table.module.d.ts +3 -3
  103. package/lib/models/pagination.models.d.ts +26 -0
  104. package/package.json +2 -1
  105. package/public-api.d.ts +17 -0
  106. package/styles/material/overrides/_paginator.scss +58 -0
package/README.md CHANGED
@@ -25,3 +25,4 @@ To get more help on the Angular CLI use `ng help` or go check out the [Angular C
25
25
 
26
26
  v1.0.13 - Fixed emitEvent bahavior of checkbox
27
27
  v1.0.18 - - Fixed width of date time picker
28
+ v1.0.24-alpha - Added autocomplete component, skeletons and SEP date range picker. Removed legacy Material modules
@@ -0,0 +1,26 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ElementMultiplierDirective {
4
+ templateRef;
5
+ viewContainer;
6
+ constructor(templateRef, viewContainer) {
7
+ this.templateRef = templateRef;
8
+ this.viewContainer = viewContainer;
9
+ }
10
+ set appElementMultiplier(times) {
11
+ for (let i = 0; i < times; i++) {
12
+ this.viewContainer.createEmbeddedView(this.templateRef);
13
+ }
14
+ }
15
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElementMultiplierDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
16
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ElementMultiplierDirective, selector: "[appElementMultiplier]", inputs: { appElementMultiplier: "appElementMultiplier" }, ngImport: i0 });
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElementMultiplierDirective, decorators: [{
19
+ type: Directive,
20
+ args: [{
21
+ selector: '[appElementMultiplier]',
22
+ }]
23
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { appElementMultiplier: [{
24
+ type: Input
25
+ }] } });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1tdWx0aXBsaWVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9iYXNlL2RpcmVjdGl2ZXMvZWxlbWVudC1tdWx0aXBsaWVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBaUMsTUFBTSxlQUFlLENBQUM7O0FBS2hGLE1BQU0sT0FBTywwQkFBMEI7SUFDaEI7SUFBdUM7SUFBNUQsWUFBcUIsV0FBNkIsRUFBVSxhQUErQjtRQUF0RSxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7SUFBSyxDQUFDO0lBRWpHLElBQWEsb0JBQW9CLENBQUUsS0FBYTtRQUM5QyxLQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFHO1lBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBRSxDQUFDO1NBQzNEO0lBQ0gsQ0FBQzt3R0FQVSwwQkFBMEI7NEZBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFIdEMsU0FBUzttQkFBRTtvQkFDVixRQUFRLEVBQUUsd0JBQXdCO2lCQUNuQztpSUFJYyxvQkFBb0I7c0JBQWhDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSgge1xyXG4gIHNlbGVjdG9yOiAnW2FwcEVsZW1lbnRNdWx0aXBsaWVyXScsXHJcbn0gKVxyXG5leHBvcnQgY2xhc3MgRWxlbWVudE11bHRpcGxpZXJEaXJlY3RpdmUge1xyXG4gIGNvbnN0cnVjdG9yKCBwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYgKSB7IH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGFwcEVsZW1lbnRNdWx0aXBsaWVyKCB0aW1lczogbnVtYmVyICkge1xyXG4gICAgZm9yICggbGV0IGkgPSAwOyBpIDwgdGltZXM7IGkrKyApIHtcclxuICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyggdGhpcy50ZW1wbGF0ZVJlZiApO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,22 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { ElementMultiplierDirective } from './element-multiplier.directive';
4
+ import * as i0 from "@angular/core";
5
+ export class ElementMultiplierDirectiveModule {
6
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElementMultiplierDirectiveModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ElementMultiplierDirectiveModule, declarations: [ElementMultiplierDirective], imports: [CommonModule], exports: [ElementMultiplierDirective] });
8
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElementMultiplierDirectiveModule, imports: [CommonModule] });
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElementMultiplierDirectiveModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ imports: [CommonModule],
14
+ declarations: [
15
+ ElementMultiplierDirective,
16
+ ],
17
+ exports: [
18
+ ElementMultiplierDirective,
19
+ ],
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1tdWx0aXBsaWVyLmRpcmVjdGl2ZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvYmFzZS9kaXJlY3RpdmVzL2VsZW1lbnQtbXVsdGlwbGllci5kaXJlY3RpdmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQVc1RSxNQUFNLE9BQU8sZ0NBQWdDO3dHQUFoQyxnQ0FBZ0M7eUdBQWhDLGdDQUFnQyxpQkFOekMsMEJBQTBCLGFBRmpCLFlBQVksYUFLckIsMEJBQTBCO3lHQUdqQixnQ0FBZ0MsWUFSaEMsWUFBWTs7NEZBUVosZ0NBQWdDO2tCQVQ1QyxRQUFRO21CQUFFO29CQUNULE9BQU8sRUFBRSxDQUFFLFlBQVksQ0FBRTtvQkFDekIsWUFBWSxFQUFFO3dCQUNaLDBCQUEwQjtxQkFDM0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDBCQUEwQjtxQkFDM0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbGVtZW50TXVsdGlwbGllckRpcmVjdGl2ZSB9IGZyb20gJy4vZWxlbWVudC1tdWx0aXBsaWVyLmRpcmVjdGl2ZSc7XHJcblxyXG5ATmdNb2R1bGUoIHtcclxuICBpbXBvcnRzOiBbIENvbW1vbk1vZHVsZSBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgRWxlbWVudE11bHRpcGxpZXJEaXJlY3RpdmUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBFbGVtZW50TXVsdGlwbGllckRpcmVjdGl2ZSxcclxuICBdLFxyXG59IClcclxuZXhwb3J0IGNsYXNzIEVsZW1lbnRNdWx0aXBsaWVyRGlyZWN0aXZlTW9kdWxlIHsgfVxyXG4iXX0=
@@ -0,0 +1,263 @@
1
+ import { Directive, Host, Input, Optional, Self, } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/material/paginator";
6
+ export class EcabsStylePaginatorDirective {
7
+ matPaginator;
8
+ viewContainerRef;
9
+ renderer;
10
+ pageGapTxt = '...';
11
+ rangeStart;
12
+ rangeEnd;
13
+ buttons = [];
14
+ currentPageObj = {
15
+ length: 0,
16
+ pageIndex: 0,
17
+ pageSize: 0,
18
+ previousPageIndex: 0,
19
+ };
20
+ totalPages = 2;
21
+ unsubscribe$ = new Subject();
22
+ isNarrowPaginator = false;
23
+ paginatedData;
24
+ set showTotalPages(value) {
25
+ this.totalPages = value % 2 === 0 ? value + 1 : value;
26
+ }
27
+ get increment() {
28
+ return this.totalPages % 2 === 0 ? this.totalPages / 2 : (this.totalPages - 1) / 2;
29
+ }
30
+ get numOfPages() {
31
+ return this.matPaginator.getNumberOfPages();
32
+ }
33
+ get lastPageIndex() {
34
+ return this.matPaginator.getNumberOfPages() - 1;
35
+ }
36
+ constructor(matPaginator, viewContainerRef, renderer) {
37
+ this.matPaginator = matPaginator;
38
+ this.viewContainerRef = viewContainerRef;
39
+ this.renderer = renderer;
40
+ // to rerender buttons on items per page change and first, last, next and prior buttons
41
+ this.matPaginator.page.pipe(takeUntil(this.unsubscribe$)).subscribe((e) => {
42
+ this.initPaginator(e);
43
+ });
44
+ }
45
+ ngOnChanges() {
46
+ this.initPaginator({
47
+ length: this.matPaginator.length,
48
+ pageIndex: this.matPaginator.pageIndex,
49
+ pageSize: this.matPaginator.pageSize,
50
+ previousPageIndex: 0,
51
+ });
52
+ this.initPageRange();
53
+ }
54
+ // Initialize default state after view init
55
+ ngAfterViewInit() {
56
+ this.initPaginator({
57
+ length: this.matPaginator.length,
58
+ pageIndex: this.matPaginator.pageIndex,
59
+ pageSize: this.matPaginator.pageSize,
60
+ previousPageIndex: 0,
61
+ });
62
+ this.rangeStart = 0;
63
+ this.rangeEnd = this.totalPages - 1;
64
+ this.buildPaginator();
65
+ this.initPageRange();
66
+ }
67
+ ngOnDestroy() {
68
+ this.unsubscribe$.next(null);
69
+ this.unsubscribe$.complete();
70
+ }
71
+ buildPaginator() {
72
+ const pageSizeContainer = this.viewContainerRef.element.nativeElement.querySelector('div.mat-mdc-paginator-page-size');
73
+ const dropdownUnderline = this.viewContainerRef.element.nativeElement.querySelector('div.mat-mdc-paginator-page-size .mat-mdc-form-field-underline');
74
+ if (dropdownUnderline) {
75
+ this.renderer.removeChild(pageSizeContainer, dropdownUnderline);
76
+ }
77
+ }
78
+ buildPageNumbers() {
79
+ const actionContainer = this.viewContainerRef.element.nativeElement.querySelector('div.mat-mdc-paginator-range-actions');
80
+ const nextPageNode = this.viewContainerRef.element.nativeElement.querySelector('button.mat-mdc-paginator-navigation-next');
81
+ const rangeLabelContainer = this.viewContainerRef.element.nativeElement.querySelector('div.mat-mdc-paginator-range-label');
82
+ if (rangeLabelContainer) {
83
+ this.renderer.removeChild(actionContainer, rangeLabelContainer);
84
+ }
85
+ // remove buttons before creating new ones
86
+ if (this.buttons.length > 0) {
87
+ this.buttons.forEach((button) => {
88
+ this.renderer.removeChild(actionContainer, button);
89
+ });
90
+ // Empty state array
91
+ this.buttons.length = 0;
92
+ }
93
+ const buttonsArrayContainer = this.viewContainerRef.element.nativeElement.childNodes[0].childNodes[0].childNodes[2];
94
+ // initialize next page and previous page buttons
95
+ if (this.buttons.length === 0 && buttonsArrayContainer) {
96
+ const buttonsArray = buttonsArrayContainer.childNodes;
97
+ setTimeout(() => {
98
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
99
+ for (let i = 0; i < buttonsArray.length; i++) {
100
+ if (buttonsArray[i].nodeName === 'BUTTON') {
101
+ if (buttonsArray[i].innerHTML.length > 100) {
102
+ this.renderer.setAttribute(buttonsArray[i], 'tabindex', '-1');
103
+ this.renderer.setStyle(buttonsArray[i], 'border', '1px solid #A6A6A6');
104
+ this.renderer.setStyle(buttonsArray[i], 'box-sizing', 'border-box');
105
+ this.renderer.setStyle(buttonsArray[i], 'border-radius', '4px');
106
+ this.renderer.setStyle(buttonsArray[i], 'margin', '0 1rem');
107
+ const svgArrow = buttonsArray[i].childNodes[0].childNodes[0];
108
+ if (svgArrow) {
109
+ this.renderer.setStyle(svgArrow, 'padding-left', '8px');
110
+ }
111
+ }
112
+ else if (buttonsArray[i].disabled) {
113
+ this.renderer.setStyle(buttonsArray[i], 'font-weight', '700');
114
+ }
115
+ }
116
+ }
117
+ });
118
+ }
119
+ for (let i = 0; i < this.numOfPages; i++) {
120
+ if (i >= this.rangeStart && i <= this.rangeEnd) {
121
+ this.renderer.insertBefore(actionContainer, this.createButton(i, this.matPaginator.pageIndex), nextPageNode);
122
+ }
123
+ if (i === this.rangeEnd && this.numOfPages - 1 !== this.rangeEnd) {
124
+ this.renderer.insertBefore(actionContainer, this.createButton(this.pageGapTxt, this.rangeEnd), nextPageNode);
125
+ }
126
+ }
127
+ }
128
+ createButton(i, pageIndex) {
129
+ const linkBtn = this.renderer.createElement('button');
130
+ this.renderer.addClass(linkBtn, 'mat-button');
131
+ this.renderer.setStyle(linkBtn, 'background-color', 'white');
132
+ this.renderer.setStyle(linkBtn, 'padding', '0 8px');
133
+ this.renderer.setAttribute(linkBtn, 'tabindex', '-1');
134
+ if (this.isNarrowPaginator) {
135
+ this.renderer.setStyle(linkBtn, 'min-width', '32px');
136
+ this.renderer.setStyle(linkBtn, 'max-width', '32px');
137
+ }
138
+ else {
139
+ this.renderer.setStyle(linkBtn, 'min-width', '48px');
140
+ }
141
+ const pagingTxt = isNaN(i) ? this.pageGapTxt : +(i + 1);
142
+ const text = this.renderer.createText(pagingTxt + '');
143
+ this.renderer.addClass(linkBtn, 'mat-custom-page');
144
+ switch (i) {
145
+ case pageIndex:
146
+ this.renderer.setAttribute(linkBtn, 'disabled', 'disabled');
147
+ break;
148
+ case this.pageGapTxt:
149
+ let newIndex = this.currentPageObj.pageIndex + this.totalPages;
150
+ if (newIndex >= this.numOfPages) {
151
+ newIndex = this.lastPageIndex;
152
+ }
153
+ if (pageIndex !== this.lastPageIndex) {
154
+ this.renderer.listen(linkBtn, 'click', () => {
155
+ this.switchPage(newIndex);
156
+ });
157
+ }
158
+ if (pageIndex === this.lastPageIndex) {
159
+ this.renderer.setAttribute(linkBtn, 'disabled', 'disabled');
160
+ }
161
+ break;
162
+ default:
163
+ this.renderer.listen(linkBtn, 'click', () => {
164
+ this.switchPage(i);
165
+ });
166
+ break;
167
+ }
168
+ this.renderer.appendChild(linkBtn, text);
169
+ // Add button to private array for state
170
+ this.buttons.push(linkBtn);
171
+ return linkBtn;
172
+ }
173
+ // calculates the button range based on class input parameters and based on
174
+ // current page index value. Used to render new buttons after event.
175
+ initPageRange() {
176
+ const middleIndex = (this.rangeStart + this.rangeEnd) / 2;
177
+ this.rangeStart = this.calcRangeStart(middleIndex);
178
+ this.rangeEnd = this.calcRangeEnd(middleIndex);
179
+ this.buildPageNumbers();
180
+ }
181
+ // Helper function To calculate start of button range
182
+ calcRangeStart(middleIndex) {
183
+ switch (true) {
184
+ case this.currentPageObj.pageIndex === 0 && this.rangeStart !== 0:
185
+ return 0;
186
+ case this.currentPageObj.pageIndex > this.rangeEnd:
187
+ return this.currentPageObj.pageIndex + this.increment > this.lastPageIndex
188
+ ? this.lastPageIndex - this.increment * 2
189
+ : this.currentPageObj.pageIndex - this.increment;
190
+ case this.currentPageObj.pageIndex > this.currentPageObj.previousPageIndex &&
191
+ this.currentPageObj.pageIndex > middleIndex &&
192
+ this.rangeEnd < this.lastPageIndex:
193
+ return this.rangeStart + 1;
194
+ case this.currentPageObj.pageIndex < this.currentPageObj.previousPageIndex &&
195
+ this.currentPageObj.pageIndex < middleIndex &&
196
+ this.rangeStart > 0:
197
+ return this.rangeStart - 1;
198
+ default:
199
+ return this.rangeStart;
200
+ }
201
+ }
202
+ // Helpter function to calculate end of button range
203
+ calcRangeEnd(middleIndex) {
204
+ switch (true) {
205
+ case this.currentPageObj.pageIndex === 0 && this.rangeEnd !== this.totalPages:
206
+ return this.totalPages - 1;
207
+ case this.currentPageObj.pageIndex > this.rangeEnd:
208
+ return this.currentPageObj.pageIndex + this.increment > this.lastPageIndex
209
+ ? this.lastPageIndex
210
+ : this.currentPageObj.pageIndex + 1;
211
+ case this.currentPageObj.pageIndex > this.currentPageObj.previousPageIndex &&
212
+ this.currentPageObj.pageIndex > middleIndex &&
213
+ this.rangeEnd < this.lastPageIndex:
214
+ return this.rangeEnd + 1;
215
+ case this.currentPageObj.pageIndex < this.currentPageObj.previousPageIndex &&
216
+ this.currentPageObj.pageIndex < middleIndex &&
217
+ this.rangeStart >= 0 &&
218
+ this.rangeEnd > this.totalPages - 1:
219
+ return this.rangeEnd - 1;
220
+ default:
221
+ return this.rangeEnd;
222
+ }
223
+ }
224
+ // Helper function to switch page on non first, last, next and previous buttons only.
225
+ switchPage(i) {
226
+ const previousPageIndex = this.matPaginator.pageIndex;
227
+ this.matPaginator.pageIndex = i;
228
+ // tslint:disable-next-line: no-string-literal
229
+ this.matPaginator['_emitPageEvent'](previousPageIndex);
230
+ this.initPageRange();
231
+ }
232
+ initPaginator(pageObject) {
233
+ if (this.currentPageObj.pageSize !== pageObject.pageSize && this.currentPageObj.pageIndex !== 0) {
234
+ pageObject.pageIndex = 0;
235
+ this.rangeStart = 0;
236
+ this.rangeEnd = this.totalPages - 1;
237
+ }
238
+ this.currentPageObj = pageObject;
239
+ this.buildPaginator();
240
+ this.initPageRange();
241
+ }
242
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsStylePaginatorDirective, deps: [{ token: i1.MatPaginator, host: true, optional: true, self: true }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
243
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: EcabsStylePaginatorDirective, selector: "[ecabsStylePaginator]", inputs: { isNarrowPaginator: "isNarrowPaginator", paginatedData: "paginatedData", showTotalPages: "showTotalPages" }, usesOnChanges: true, ngImport: i0 });
244
+ }
245
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsStylePaginatorDirective, decorators: [{
246
+ type: Directive,
247
+ args: [{
248
+ selector: '[ecabsStylePaginator]',
249
+ }]
250
+ }], ctorParameters: function () { return [{ type: i1.MatPaginator, decorators: [{
251
+ type: Host
252
+ }, {
253
+ type: Self
254
+ }, {
255
+ type: Optional
256
+ }] }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }]; }, propDecorators: { isNarrowPaginator: [{
257
+ type: Input
258
+ }], paginatedData: [{
259
+ type: Input
260
+ }], showTotalPages: [{
261
+ type: Input
262
+ }] } });
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUtcGFnaW5hdG9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9iYXNlL2RpcmVjdGl2ZXMvc3R5bGUtcGFnaW5hdG9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULElBQUksRUFDSixLQUFLLEVBR0wsUUFBUSxFQUVSLElBQUksR0FFTCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBYTNDLE1BQU0sT0FBTyw0QkFBNEI7SUFvQ1E7SUFDckM7SUFDQTtJQXJDRixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLFVBQVUsQ0FBUztJQUNuQixRQUFRLENBQVM7SUFDakIsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNiLGNBQWMsR0FBZTtRQUNuQyxNQUFNLEVBQUUsQ0FBQztRQUNULFNBQVMsRUFBRSxDQUFDO1FBQ1osUUFBUSxFQUFFLENBQUM7UUFDWCxpQkFBaUIsRUFBRSxDQUFDO0tBQ3JCLENBQUM7SUFDTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBRU4sWUFBWSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7SUFFMUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQzFCLGFBQWEsQ0FBMEI7SUFFaEQsSUFDSSxjQUFjLENBQUUsS0FBYTtRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEtB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LENBQUMsWUFBWSxDQUFFLGdCQUFnQixDQUFFLENBQUUsaUJBQWlCLENBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLGFBQWEsQ0FBRSxVQUFzQjtRQUMzQyxJQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFHO1lBQ2pHLFVBQVUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7U0FDckM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQztRQUVqQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7d0dBbFNVLDRCQUE0Qjs0RkFBNUIsNEJBQTRCOzs0RkFBNUIsNEJBQTRCO2tCQUh4QyxTQUFTO21CQUFFO29CQUNWLFFBQVEsRUFBRSx1QkFBdUI7aUJBQ2xDOzswQkFxQ0ksSUFBSTs7MEJBQUksSUFBSTs7MEJBQUksUUFBUTttR0FyQmxCLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdGLGNBQWM7c0JBRGpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEhvc3QsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPcHRpb25hbCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2VsZixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUGFnaW5hdGlvblJlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcGFnaW5hdGlvbi5tb2RlbHMnO1xyXG5cclxuaW50ZXJmYWNlIFBhZ2VPYmplY3Qge1xyXG4gIGxlbmd0aDogbnVtYmVyO1xyXG4gIHBhZ2VJbmRleDogbnVtYmVyO1xyXG4gIHBhZ2VTaXplOiBudW1iZXI7XHJcbiAgcHJldmlvdXNQYWdlSW5kZXg6IG51bWJlcjtcclxufVxyXG5cclxuQERpcmVjdGl2ZSgge1xyXG4gIHNlbGVjdG9yOiAnW2VjYWJzU3R5bGVQYWdpbmF0b3JdJyxcclxufSApXHJcbmV4cG9ydCBjbGFzcyBFY2Fic1N0eWxlUGFnaW5hdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgcGFnZUdhcFR4dCA9ICcuLi4nO1xyXG4gIHByaXZhdGUgcmFuZ2VTdGFydDogbnVtYmVyO1xyXG4gIHByaXZhdGUgcmFuZ2VFbmQ6IG51bWJlcjtcclxuICBwcml2YXRlIGJ1dHRvbnMgPSBbXTtcclxuICBwcml2YXRlIGN1cnJlbnRQYWdlT2JqOiBQYWdlT2JqZWN0ID0ge1xyXG4gICAgbGVuZ3RoOiAwLFxyXG4gICAgcGFnZUluZGV4OiAwLFxyXG4gICAgcGFnZVNpemU6IDAsXHJcbiAgICBwcmV2aW91c1BhZ2VJbmRleDogMCxcclxuICB9O1xyXG4gIHByaXZhdGUgdG90YWxQYWdlcyA9IDI7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cclxuICBASW5wdXQoKSBpc05hcnJvd1BhZ2luYXRvciA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHBhZ2luYXRlZERhdGE6IFBhZ2luYXRpb25SZXNwb25zZU1vZGVsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBzaG93VG90YWxQYWdlcyggdmFsdWU6IG51bWJlciApIHtcclxuICAgIHRoaXMudG90YWxQYWdlcyA9IHZhbHVlICUgMiA9PT0gMCA/IHZhbHVlICsgMSA6IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGluY3JlbWVudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudG90YWxQYWdlcyAlIDIgPT09IDAgPyB0aGlzLnRvdGFsUGFnZXMgLyAyIDogKCB0aGlzLnRvdGFsUGFnZXMgLSAxICkgLyAyO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG51bU9mUGFnZXMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLm1hdFBhZ2luYXRvci5nZXROdW1iZXJPZlBhZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFzdFBhZ2VJbmRleCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMubWF0UGFnaW5hdG9yLmdldE51bWJlck9mUGFnZXMoKSAtIDE7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBIb3N0KCkgQFNlbGYoKSBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IG1hdFBhZ2luYXRvcjogTWF0UGFnaW5hdG9yLFxyXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXHJcbiAgKSB7XHJcbiAgICAvLyB0byByZXJlbmRlciBidXR0b25zIG9uIGl0ZW1zIHBlciBwYWdlIGNoYW5nZSBhbmQgZmlyc3QsIGxhc3QsIG5leHQgYW5kIHByaW9yIGJ1dHRvbnNcclxuICAgIHRoaXMubWF0UGFnaW5hdG9yLnBhZ2UucGlwZSggdGFrZVVudGlsKCB0aGlzLnVuc3Vic2NyaWJlJCApICkuc3Vic2NyaWJlKCAoIGU6IFBhZ2VPYmplY3QgKSA9PiB7XHJcbiAgICAgIHRoaXMuaW5pdFBhZ2luYXRvciggZSApO1xyXG4gICAgfSApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRQYWdpbmF0b3IoIHtcclxuICAgICAgbGVuZ3RoOiB0aGlzLm1hdFBhZ2luYXRvci5sZW5ndGgsXHJcbiAgICAgIHBhZ2VJbmRleDogdGhpcy5tYXRQYWdpbmF0b3IucGFnZUluZGV4LFxyXG4gICAgICBwYWdlU2l6ZTogdGhpcy5tYXRQYWdpbmF0b3IucGFnZVNpemUsXHJcbiAgICAgIHByZXZpb3VzUGFnZUluZGV4OiAwLFxyXG4gICAgfSApO1xyXG4gICAgdGhpcy5pbml0UGFnZVJhbmdlKCk7XHJcbiAgfVxyXG5cclxuICAvLyBJbml0aWFsaXplIGRlZmF1bHQgc3RhdGUgYWZ0ZXIgdmlldyBpbml0XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0UGFnaW5hdG9yKCB7XHJcbiAgICAgIGxlbmd0aDogdGhpcy5tYXRQYWdpbmF0b3IubGVuZ3RoLFxyXG4gICAgICBwYWdlSW5kZXg6IHRoaXMubWF0UGFnaW5hdG9yLnBhZ2VJbmRleCxcclxuICAgICAgcGFnZVNpemU6IHRoaXMubWF0UGFnaW5hdG9yLnBhZ2VTaXplLFxyXG4gICAgICBwcmV2aW91c1BhZ2VJbmRleDogMCxcclxuICAgIH0gKTtcclxuICAgIHRoaXMucmFuZ2VTdGFydCA9IDA7XHJcbiAgICB0aGlzLnJhbmdlRW5kID0gdGhpcy50b3RhbFBhZ2VzIC0gMTtcclxuICAgIHRoaXMuYnVpbGRQYWdpbmF0b3IoKTtcclxuICAgIHRoaXMuaW5pdFBhZ2VSYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCBudWxsICk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZFBhZ2luYXRvcigpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBhZ2VTaXplQ29udGFpbmVyID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAnZGl2Lm1hdC1tZGMtcGFnaW5hdG9yLXBhZ2Utc2l6ZSdcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZHJvcGRvd25VbmRlcmxpbmUgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICdkaXYubWF0LW1kYy1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtbWRjLWZvcm0tZmllbGQtdW5kZXJsaW5lJ1xyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIGRyb3Bkb3duVW5kZXJsaW5lICkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKCBwYWdlU2l6ZUNvbnRhaW5lciwgZHJvcGRvd25VbmRlcmxpbmUgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRQYWdlTnVtYmVycygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgJ2Rpdi5tYXQtbWRjLXBhZ2luYXRvci1yYW5nZS1hY3Rpb25zJ1xyXG4gICAgKTtcclxuICAgIGNvbnN0IG5leHRQYWdlTm9kZSA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgJ2J1dHRvbi5tYXQtbWRjLXBhZ2luYXRvci1uYXZpZ2F0aW9uLW5leHQnXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IHJhbmdlTGFiZWxDb250YWluZXIgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICdkaXYubWF0LW1kYy1wYWdpbmF0b3ItcmFuZ2UtbGFiZWwnXHJcbiAgICApO1xyXG5cclxuICAgIGlmICggcmFuZ2VMYWJlbENvbnRhaW5lciApIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCggYWN0aW9uQ29udGFpbmVyLCByYW5nZUxhYmVsQ29udGFpbmVyICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcmVtb3ZlIGJ1dHRvbnMgYmVmb3JlIGNyZWF0aW5nIG5ldyBvbmVzXHJcbiAgICBpZiAoIHRoaXMuYnV0dG9ucy5sZW5ndGggPiAwICkge1xyXG4gICAgICB0aGlzLmJ1dHRvbnMuZm9yRWFjaCggKCBidXR0b24gKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCggYWN0aW9uQ29udGFpbmVyLCBidXR0b24gKTtcclxuICAgICAgfSApO1xyXG4gICAgICAvLyBFbXB0eSBzdGF0ZSBhcnJheVxyXG4gICAgICB0aGlzLmJ1dHRvbnMubGVuZ3RoID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBidXR0b25zQXJyYXlDb250YWluZXIgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXNbIDAgXS5jaGlsZE5vZGVzWyAwIF0uY2hpbGROb2Rlc1sgMiBdO1xyXG4gICAgLy8gaW5pdGlhbGl6ZSBuZXh0IHBhZ2UgYW5kIHByZXZpb3VzIHBhZ2UgYnV0dG9uc1xyXG4gICAgaWYgKCB0aGlzLmJ1dHRvbnMubGVuZ3RoID09PSAwICYmIGJ1dHRvbnNBcnJheUNvbnRhaW5lciApIHtcclxuICAgICAgY29uc3QgYnV0dG9uc0FycmF5ID0gYnV0dG9uc0FycmF5Q29udGFpbmVyLmNoaWxkTm9kZXM7XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCAoKSA9PiB7XHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItZm9yLW9mXHJcbiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgYnV0dG9uc0FycmF5Lmxlbmd0aDsgaSsrICkge1xyXG4gICAgICAgICAgaWYgKCBidXR0b25zQXJyYXlbIGkgXS5ub2RlTmFtZSA9PT0gJ0JVVFRPTicgKSB7XHJcbiAgICAgICAgICAgIGlmICggYnV0dG9uc0FycmF5WyBpIF0uaW5uZXJIVE1MLmxlbmd0aCA+IDEwMCApIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSggYnV0dG9uc0FycmF5WyBpIF0sICd0YWJpbmRleCcsICctMScgKTtcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKCBidXR0b25zQXJyYXlbIGkgXSwgJ2JvcmRlcicsICcxcHggc29saWQgI0E2QTZBNicgKTtcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKCBidXR0b25zQXJyYXlbIGkgXSwgJ2JveC1zaXppbmcnLCAnYm9yZGVyLWJveCcgKTtcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKCBidXR0b25zQXJyYXlbIGkgXSwgJ2JvcmRlci1yYWRpdXMnLCAnNHB4JyApO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoIGJ1dHRvbnNBcnJheVsgaSBdLCAnbWFyZ2luJywgJzAgMXJlbScgKTtcclxuXHJcbiAgICAgICAgICAgICAgY29uc3Qgc3ZnQXJyb3cgPSBidXR0b25zQXJyYXlbIGkgXS5jaGlsZE5vZGVzWyAwIF0uY2hpbGROb2Rlc1sgMCBdO1xyXG4gICAgICAgICAgICAgIGlmICggc3ZnQXJyb3cgKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKCBzdmdBcnJvdywgJ3BhZGRpbmctbGVmdCcsICc4cHgnICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBidXR0b25zQXJyYXlbIGkgXS5kaXNhYmxlZCApIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKCBidXR0b25zQXJyYXlbIGkgXSwgJ2ZvbnQtd2VpZ2h0JywgJzcwMCcgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSApO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoIGxldCBpID0gMDsgaSA8IHRoaXMubnVtT2ZQYWdlczsgaSsrICkge1xyXG4gICAgICBpZiAoIGkgPj0gdGhpcy5yYW5nZVN0YXJ0ICYmIGkgPD0gdGhpcy5yYW5nZUVuZCApIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZSggYWN0aW9uQ29udGFpbmVyLCB0aGlzLmNyZWF0ZUJ1dHRvbiggaSwgdGhpcy5tYXRQYWdpbmF0b3IucGFnZUluZGV4ICksIG5leHRQYWdlTm9kZSApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIGkgPT09IHRoaXMucmFuZ2VFbmQgJiYgdGhpcy5udW1PZlBhZ2VzIC0gMSAhPT0gdGhpcy5yYW5nZUVuZCApIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZSggYWN0aW9uQ29udGFpbmVyLCB0aGlzLmNyZWF0ZUJ1dHRvbiggdGhpcy5wYWdlR2FwVHh0LCB0aGlzLnJhbmdlRW5kICksIG5leHRQYWdlTm9kZSApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUJ1dHRvbiggaTogYW55LCBwYWdlSW5kZXg6IG51bWJlciApOiBhbnkge1xyXG4gICAgY29uc3QgbGlua0J0bjogTWF0QnV0dG9uID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCAnYnV0dG9uJyApO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyggbGlua0J0biwgJ21hdC1idXR0b24nICk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKCBsaW5rQnRuLCAnYmFja2dyb3VuZC1jb2xvcicsICd3aGl0ZScgKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoIGxpbmtCdG4sICdwYWRkaW5nJywgJzAgOHB4JyApO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoIGxpbmtCdG4sICd0YWJpbmRleCcsICctMScgKTtcclxuXHJcbiAgICBpZiAoIHRoaXMuaXNOYXJyb3dQYWdpbmF0b3IgKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoIGxpbmtCdG4sICdtaW4td2lkdGgnLCAnMzJweCcgKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSggbGlua0J0biwgJ21heC13aWR0aCcsICczMnB4JyApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSggbGlua0J0biwgJ21pbi13aWR0aCcsICc0OHB4JyApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhZ2luZ1R4dCA9IGlzTmFOKCBpICkgPyB0aGlzLnBhZ2VHYXBUeHQgOiArKCBpICsgMSApO1xyXG4gICAgY29uc3QgdGV4dCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dCggcGFnaW5nVHh0ICsgJycgKTtcclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKCBsaW5rQnRuLCAnbWF0LWN1c3RvbS1wYWdlJyApO1xyXG4gICAgc3dpdGNoICggaSApIHtcclxuICAgICAgY2FzZSBwYWdlSW5kZXg6XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoIGxpbmtCdG4sICdkaXNhYmxlZCcsICdkaXNhYmxlZCcgKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgdGhpcy5wYWdlR2FwVHh0OlxyXG4gICAgICAgIGxldCBuZXdJbmRleCA9IHRoaXMuY3VycmVudFBhZ2VPYmoucGFnZUluZGV4ICsgdGhpcy50b3RhbFBhZ2VzO1xyXG5cclxuICAgICAgICBpZiAoIG5ld0luZGV4ID49IHRoaXMubnVtT2ZQYWdlcyApIHtcclxuICAgICAgICAgIG5ld0luZGV4ID0gdGhpcy5sYXN0UGFnZUluZGV4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCBwYWdlSW5kZXggIT09IHRoaXMubGFzdFBhZ2VJbmRleCApIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKCBsaW5rQnRuLCAnY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc3dpdGNoUGFnZSggbmV3SW5kZXggKTtcclxuICAgICAgICAgIH0gKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICggcGFnZUluZGV4ID09PSB0aGlzLmxhc3RQYWdlSW5kZXggKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSggbGlua0J0biwgJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oIGxpbmtCdG4sICdjbGljaycsICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc3dpdGNoUGFnZSggaSApO1xyXG4gICAgICAgIH0gKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKCBsaW5rQnRuLCB0ZXh0ICk7XHJcbiAgICAvLyBBZGQgYnV0dG9uIHRvIHByaXZhdGUgYXJyYXkgZm9yIHN0YXRlXHJcbiAgICB0aGlzLmJ1dHRvbnMucHVzaCggbGlua0J0biApO1xyXG5cclxuICAgIHJldHVybiBsaW5rQnRuO1xyXG4gIH1cclxuXHJcbiAgLy8gY2FsY3VsYXRlcyB0aGUgYnV0dG9uIHJhbmdlIGJhc2VkIG9uIGNsYXNzIGlucHV0IHBhcmFtZXRlcnMgYW5kIGJhc2VkIG9uXHJcbiAgLy8gY3VycmVudCBwYWdlIGluZGV4IHZhbHVlLiBVc2VkIHRvIHJlbmRlciBuZXcgYnV0dG9ucyBhZnRlciBldmVudC5cclxuICBwcml2YXRlIGluaXRQYWdlUmFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBtaWRkbGVJbmRleCA9ICggdGhpcy5yYW5nZVN0YXJ0ICsgdGhpcy5yYW5nZUVuZCApIC8gMjtcclxuXHJcbiAgICB0aGlzLnJhbmdlU3RhcnQgPSB0aGlzLmNhbGNSYW5nZVN0YXJ0KCBtaWRkbGVJbmRleCApO1xyXG4gICAgdGhpcy5yYW5nZUVuZCA9IHRoaXMuY2FsY1JhbmdlRW5kKCBtaWRkbGVJbmRleCApO1xyXG4gICAgdGhpcy5idWlsZFBhZ2VOdW1iZXJzKCk7XHJcbiAgfVxyXG5cclxuICAvLyBIZWxwZXIgZnVuY3Rpb24gVG8gY2FsY3VsYXRlIHN0YXJ0IG9mIGJ1dHRvbiByYW5nZVxyXG4gIHByaXZhdGUgY2FsY1JhbmdlU3RhcnQoIG1pZGRsZUluZGV4OiBudW1iZXIgKTogbnVtYmVyIHtcclxuICAgIHN3aXRjaCAoIHRydWUgKSB7XHJcbiAgICAgIGNhc2UgdGhpcy5jdXJyZW50UGFnZU9iai5wYWdlSW5kZXggPT09IDAgJiYgdGhpcy5yYW5nZVN0YXJ0ICE9PSAwOlxyXG4gICAgICAgIHJldHVybiAwO1xyXG5cclxuICAgICAgY2FzZSB0aGlzLmN1cnJlbnRQYWdlT2JqLnBhZ2VJbmRleCA+IHRoaXMucmFuZ2VFbmQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFBhZ2VPYmoucGFnZUluZGV4ICsgdGhpcy5pbmNyZW1lbnQgPiB0aGlzLmxhc3RQYWdlSW5kZXhcclxuICAgICAgICAgID8gdGhpcy5sYXN0UGFnZUluZGV4IC0gdGhpcy5pbmNyZW1lbnQgKiAyXHJcbiAgICAgICAgICA6IHRoaXMuY3VycmVudFBhZ2VPYmoucGFnZUluZGV4IC0gdGhpcy5pbmNyZW1lbnQ7XHJcblxyXG4gICAgICBjYXNlIHRoaXMuY3VycmVudFBhZ2VPYmoucGFnZUluZGV4ID4gdGhpcy5jdXJyZW50UGFnZU9iai5wcmV2aW91c1BhZ2VJbmRleCAmJlxyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VPYmoucGFnZUluZGV4ID4gbWlkZGxlSW5kZXggJiZcclxuICAgICAgICB0aGlzLnJhbmdlRW5kIDwgdGhpcy5sYXN0UGFnZUluZGV4OlxyXG4gICAgICAgIHJldHVybiB0aGlzLnJhbmdlU3RhcnQgKyAxO1xyXG5cclxuICAgICAgY2FzZSB0aGlzLmN1cnJlbnRQYWdlT2JqLnBhZ2VJbmRleCA8IHRoaXMuY3VycmVudFBhZ2VPYmoucHJldmlvdXNQYWdlSW5kZXggJiZcclxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlT2JqLnBhZ2VJbmRleCA8IG1pZGRsZUluZGV4ICYmXHJcbiAgICAgICAgdGhpcy5yYW5nZVN0YXJ0ID4gMDpcclxuICAgICAgICByZXR1cm4gdGhpcy5yYW5nZVN0YXJ0IC0gMTtcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VTdGFydDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEhlbHB0ZXIgZnVuY3Rpb24gdG8gY2FsY3VsYXRlIGVuZCBvZiBidXR0b24gcmFuZ2VcclxuICBwcml2YXRlIGNhbGNSYW5nZUVuZCggbWlkZGxlSW5kZXg6IG51bWJlciApOiBudW1iZXIge1xyXG4gICAgc3dpdGNoICggdHJ1ZSApIHtcclxuICAgICAgY2FzZSB0aGlzLmN1cnJlbnRQYWdlT2JqLnBhZ2VJbmRleCA9PT0gMCAmJiB0aGlzLnJhbmdlRW5kICE9PSB0aGlzLnRvdGFsUGFnZXM6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG90YWxQYWdlcyAtIDE7XHJcblxyXG4gICAgICBjYXNlIHRoaXMuY3VycmVudFBhZ2VPYmoucGFnZUluZGV4ID4gdGhpcy5yYW5nZUVuZDpcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZU9iai5wYWdlSW5kZXggKyB0aGlzLmluY3JlbWVudCA+IHRoaXMubGFzdFBhZ2VJbmRleFxyXG4gICAgICAgICAgPyB0aGlzLmxhc3RQYWdlSW5kZXhcclxuICAgICAgICAgIDogdGhpcy5jdXJyZW50UGFnZU9iai5wYWdlSW5kZXggKyAxO1xyXG5cclxuICAgICAgY2FzZSB0aGlzLmN1cnJlbnRQYWdlT2JqLnBhZ2VJbmRleCA+IHRoaXMuY3VycmVudFBhZ2VPYmoucHJldmlvdXNQYWdlSW5kZXggJiZcclxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlT2JqLnBhZ2VJbmRleCA+IG1pZGRsZUluZGV4ICYmXHJcbiAgICAgICAgdGhpcy5yYW5nZUVuZCA8IHRoaXMubGFzdFBhZ2VJbmRleDpcclxuICAgICAgICByZXR1cm4gdGhpcy5yYW5nZUVuZCArIDE7XHJcblxyXG4gICAgICBjYXNlIHRoaXMuY3VycmVudFBhZ2VPYmoucGFnZUluZGV4IDwgdGhpcy5jdXJyZW50UGFnZU9iai5wcmV2aW91c1BhZ2VJbmRleCAmJlxyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VPYmoucGFnZUluZGV4IDwgbWlkZGxlSW5kZXggJiZcclxuICAgICAgICB0aGlzLnJhbmdlU3RhcnQgPj0gMCAmJlxyXG4gICAgICAgIHRoaXMucmFuZ2VFbmQgPiB0aGlzLnRvdGFsUGFnZXMgLSAxOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnJhbmdlRW5kIC0gMTtcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VFbmQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gc3dpdGNoIHBhZ2Ugb24gbm9uIGZpcnN0LCBsYXN0LCBuZXh0IGFuZCBwcmV2aW91cyBidXR0b25zIG9ubHkuXHJcbiAgcHJpdmF0ZSBzd2l0Y2hQYWdlKCBpOiBudW1iZXIgKTogdm9pZCB7XHJcbiAgICBjb25zdCBwcmV2aW91c1BhZ2VJbmRleCA9IHRoaXMubWF0UGFnaW5hdG9yLnBhZ2VJbmRleDtcclxuICAgIHRoaXMubWF0UGFnaW5hdG9yLnBhZ2VJbmRleCA9IGk7XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXN0cmluZy1saXRlcmFsXHJcbiAgICB0aGlzLm1hdFBhZ2luYXRvclsgJ19lbWl0UGFnZUV2ZW50JyBdKCBwcmV2aW91c1BhZ2VJbmRleCApO1xyXG4gICAgdGhpcy5pbml0UGFnZVJhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRQYWdpbmF0b3IoIHBhZ2VPYmplY3Q6IFBhZ2VPYmplY3QgKTogdm9pZCB7XHJcbiAgICBpZiAoIHRoaXMuY3VycmVudFBhZ2VPYmoucGFnZVNpemUgIT09IHBhZ2VPYmplY3QucGFnZVNpemUgJiYgdGhpcy5jdXJyZW50UGFnZU9iai5wYWdlSW5kZXggIT09IDAgKSB7XHJcbiAgICAgIHBhZ2VPYmplY3QucGFnZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy5yYW5nZVN0YXJ0ID0gMDtcclxuICAgICAgdGhpcy5yYW5nZUVuZCA9IHRoaXMudG90YWxQYWdlcyAtIDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlT2JqID0gcGFnZU9iamVjdDtcclxuXHJcbiAgICB0aGlzLmJ1aWxkUGFnaW5hdG9yKCk7XHJcbiAgICB0aGlzLmluaXRQYWdlUmFuZ2UoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,19 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { EcabsStylePaginatorDirective } from './style-paginator.directive';
4
+ import * as i0 from "@angular/core";
5
+ const COMPONENTS = [EcabsStylePaginatorDirective];
6
+ export class EcabsStylePaginatorDirectiveModule {
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsStylePaginatorDirectiveModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: EcabsStylePaginatorDirectiveModule, declarations: [EcabsStylePaginatorDirective], imports: [CommonModule], exports: [EcabsStylePaginatorDirective] });
9
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsStylePaginatorDirectiveModule, imports: [CommonModule] });
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsStylePaginatorDirectiveModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ declarations: [COMPONENTS],
15
+ imports: [CommonModule],
16
+ exports: [COMPONENTS],
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUtcGFnaW5hdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9iYXNlL2RpcmVjdGl2ZXMvc3R5bGUtcGFnaW5hdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFM0UsTUFBTSxVQUFVLEdBQUcsQ0FBRSw0QkFBNEIsQ0FBRSxDQUFDO0FBT3BELE1BQU0sT0FBTyxrQ0FBa0M7d0dBQWxDLGtDQUFrQzt5R0FBbEMsa0NBQWtDLGlCQVAxQiw0QkFBNEIsYUFJcEMsWUFBWSxhQUpKLDRCQUE0Qjt5R0FPcEMsa0NBQWtDLFlBSGxDLFlBQVk7OzRGQUdaLGtDQUFrQztrQkFMOUMsUUFBUTttQkFBRTtvQkFDVCxZQUFZLEVBQUUsQ0FBRSxVQUFVLENBQUU7b0JBQzVCLE9BQU8sRUFBRSxDQUFFLFlBQVksQ0FBRTtvQkFDekIsT0FBTyxFQUFFLENBQUUsVUFBVSxDQUFFO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVjYWJzU3R5bGVQYWdpbmF0b3JEaXJlY3RpdmUgfSBmcm9tICcuL3N0eWxlLXBhZ2luYXRvci5kaXJlY3RpdmUnO1xyXG5cclxuY29uc3QgQ09NUE9ORU5UUyA9IFsgRWNhYnNTdHlsZVBhZ2luYXRvckRpcmVjdGl2ZSBdO1xyXG5cclxuQE5nTW9kdWxlKCB7XHJcbiAgZGVjbGFyYXRpb25zOiBbIENPTVBPTkVOVFMgXSxcclxuICBpbXBvcnRzOiBbIENvbW1vbk1vZHVsZSBdLFxyXG4gIGV4cG9ydHM6IFsgQ09NUE9ORU5UUyBdLFxyXG59IClcclxuZXhwb3J0IGNsYXNzIEVjYWJzU3R5bGVQYWdpbmF0b3JEaXJlY3RpdmVNb2R1bGUgeyB9XHJcbiJdfQ==
@@ -4,7 +4,7 @@ import * as i1 from "@angular/common";
4
4
  import * as i2 from "../../ecabs-loading/spinner/spinner.component";
5
5
  import * as i3 from "../validation/validation.component";
6
6
  import * as i4 from "@angular/material/icon";
7
- import * as i5 from "@angular/material/legacy-tooltip";
7
+ import * as i5 from "@angular/material/tooltip";
8
8
  import * as i6 from "../hint/hint.component";
9
9
  export class ElementWrapperComponent {
10
10
  data;
@@ -29,7 +29,7 @@ export class ElementWrapperComponent {
29
29
  this.decrease.emit();
30
30
  }
31
31
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElementWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
32
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ElementWrapperComponent, selector: "app-element-wrapper", inputs: { data: "data", showCloseIcon: "showCloseIcon", focusedFlag: "focusedFlag", showPassword: "showPassword", control: "control" }, outputs: { showHidePassword: "showHidePassword", clear: "clear", increase: "increase", decrease: "decrease" }, ngImport: i0, template: "<div\r\n class=\"form-field\"\r\n [ngClass]=\"{\r\n 'form-field--invalid':\r\n data?.showValidation && (data?.control?.touched || data?.showValidationOnNotTouched) && data?.control?.invalid,\r\n disabled: data?.disabled,\r\n 'form-field--required': data?.required && data?.showAsterisk\r\n }\"\r\n>\r\n <div>\r\n <label class=\"form-field__label\" [attr.for]=\"data?.name\" *ngIf=\"data?.label\">\r\n <span [innerHTML]=\"data?.label\"></span>\r\n <mat-icon class=\"icon\" *ngIf=\"data?.tooltip\" [matTooltip]=\"data?.tooltip\">error_outline</mat-icon>\r\n </label>\r\n </div>\r\n\r\n <ng-content></ng-content>\r\n\r\n <ecabs-loading-spinner class=\"spinner\" size=\"tiny\" *ngIf=\"data.loading\"></ecabs-loading-spinner>\r\n\r\n <app-hint [element]=\"data?.control\" [showHint]=\"data?.showHint\" [maxValue]=\"data?.maxLength\"></app-hint>\r\n\r\n <app-validations-messages\r\n *ngIf=\"data?.showValidation && !data?.hideValidationMessage\"\r\n [element]=\"data?.control\"\r\n [label]=\"data?.label ? data?.label : data?.placeholder ? data.placeholder : data?.validationLabel\"\r\n [showValidationOnNotTouched]=\"data?.showValidationOnNotTouched\"\r\n >\r\n </app-validations-messages>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EcabsSpinnerComponent, selector: "ecabs-loading-spinner", inputs: ["size"] }, { kind: "component", type: i3.ValidationComponent, selector: "app-validations-messages", inputs: ["element", "label", "showValidationOnNotTouched", "updatedErrors"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i6.HintComponent, selector: "app-hint", inputs: ["element", "maxValue", "showHint"] }] });
32
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ElementWrapperComponent, selector: "app-element-wrapper", inputs: { data: "data", showCloseIcon: "showCloseIcon", focusedFlag: "focusedFlag", showPassword: "showPassword", control: "control" }, outputs: { showHidePassword: "showHidePassword", clear: "clear", increase: "increase", decrease: "decrease" }, ngImport: i0, template: "<div\r\n class=\"form-field\"\r\n [ngClass]=\"{\r\n 'form-field--invalid':\r\n data?.showValidation && (data?.control?.touched || data?.showValidationOnNotTouched) && data?.control?.invalid,\r\n disabled: data?.disabled,\r\n 'form-field--required': data?.required && data?.showAsterisk\r\n }\"\r\n>\r\n <div>\r\n <label class=\"form-field__label\" [attr.for]=\"data?.name\" *ngIf=\"data?.label\">\r\n <span [innerHTML]=\"data?.label\"></span>\r\n <mat-icon class=\"icon\" *ngIf=\"data?.tooltip\" [matTooltip]=\"data?.tooltip\">error_outline</mat-icon>\r\n </label>\r\n </div>\r\n\r\n <ng-content></ng-content>\r\n\r\n <ecabs-loading-spinner class=\"spinner\" size=\"tiny\" *ngIf=\"data.loading\"></ecabs-loading-spinner>\r\n\r\n <app-hint [element]=\"data?.control\" [showHint]=\"data?.showHint\" [maxValue]=\"data?.maxLength\"></app-hint>\r\n\r\n <app-validations-messages\r\n *ngIf=\"data?.showValidation && !data?.hideValidationMessage\"\r\n [element]=\"data?.control\"\r\n [label]=\"data?.label ? data?.label : data?.placeholder ? data.placeholder : data?.validationLabel\"\r\n [showValidationOnNotTouched]=\"data?.showValidationOnNotTouched\"\r\n >\r\n </app-validations-messages>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EcabsSpinnerComponent, selector: "ecabs-loading-spinner", inputs: ["size"] }, { kind: "component", type: i3.ValidationComponent, selector: "app-validations-messages", inputs: ["element", "label", "showValidationOnNotTouched", "updatedErrors"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i6.HintComponent, selector: "app-hint", inputs: ["element", "maxValue", "showHint"] }] });
33
33
  }
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElementWrapperComponent, decorators: [{
35
35
  type: Component,
@@ -6,9 +6,9 @@ import { ValidationModule } from '../validation/validation.module';
6
6
  import { ElementWrapperComponent } from './element-wrapper.component';
7
7
  import { MatIconModule } from '@angular/material/icon';
8
8
  import { EcabsLoadingModule } from '../../ecabs-loading/ecabs-loading.module';
9
- import { MatLegacyFormFieldModule as MatFormFieldModule } from '@angular/material/legacy-form-field';
10
- import { MatLegacyInputModule as MatInputModule } from '@angular/material/legacy-input';
11
- import { MatLegacyTooltipModule as MatTooltipModule } from "@angular/material/legacy-tooltip";
9
+ import { MatFormFieldModule } from '@angular/material/form-field';
10
+ import { MatInputModule } from '@angular/material/input';
11
+ import { MatTooltipModule } from "@angular/material/tooltip";
12
12
  import * as i0 from "@angular/core";
13
13
  export class ElementWrapperModule {
14
14
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElementWrapperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -49,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
49
49
  exports: [ElementWrapperComponent],
50
50
  }]
51
51
  }] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC13cmFwcGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9iYXNlL2VsZW1lbnQtd3JhcHBlci9lbGVtZW50LXdyYXBwZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDcEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxrQkFBa0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ25HLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxjQUFjLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RixPQUFPLEVBQUMsc0JBQXNCLElBQUksZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFpQjVGLE1BQU0sT0FBTyxvQkFBb0I7d0dBQXBCLG9CQUFvQjt5R0FBcEIsb0JBQW9CLGlCQWRoQix1QkFBdUIsYUFFcEMsWUFBWTtZQUNaLFdBQVc7WUFDWCxrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsYUFBYTtZQUNiLGdCQUFnQjtZQUNoQixVQUFVLGFBRUYsdUJBQXVCO3lHQUV0QixvQkFBb0IsWUFaN0IsWUFBWTtZQUNaLFdBQVc7WUFDWCxrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsYUFBYTtZQUNiLGdCQUFnQjtZQUNoQixVQUFVOzs0RkFJRCxvQkFBb0I7a0JBZmhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsdUJBQXVCLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsVUFBVTtxQkFDWDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztpQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7SGludE1vZHVsZX0gZnJvbSAnLi4vaGludC9oaW50Lm1vZHVsZSc7XHJcbmltcG9ydCB7VmFsaWRhdGlvbk1vZHVsZX0gZnJvbSAnLi4vdmFsaWRhdGlvbi92YWxpZGF0aW9uLm1vZHVsZSc7XHJcbmltcG9ydCB7RWxlbWVudFdyYXBwZXJDb21wb25lbnR9IGZyb20gJy4vZWxlbWVudC13cmFwcGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7RWNhYnNMb2FkaW5nTW9kdWxlfSBmcm9tICcuLi8uLi9lY2Ficy1sb2FkaW5nL2VjYWJzLWxvYWRpbmcubW9kdWxlJztcclxuaW1wb3J0IHtNYXRMZWdhY3lGb3JtRmllbGRNb2R1bGUgYXMgTWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7TWF0TGVnYWN5SW5wdXRNb2R1bGUgYXMgTWF0SW5wdXRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1pbnB1dCc7XHJcbmltcG9ydCB7TWF0TGVnYWN5VG9vbHRpcE1vZHVsZSBhcyBNYXRUb29sdGlwTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXRvb2x0aXBcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbRWxlbWVudFdyYXBwZXJDb21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgRWNhYnNMb2FkaW5nTW9kdWxlLFxyXG4gICAgVmFsaWRhdGlvbk1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBIaW50TW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW0VsZW1lbnRXcmFwcGVyQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVsZW1lbnRXcmFwcGVyTW9kdWxlIHtcclxufVxyXG4iXX0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC13cmFwcGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9iYXNlL2VsZW1lbnQtd3JhcHBlci9lbGVtZW50LXdyYXBwZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFpQjdELE1BQU0sT0FBTyxvQkFBb0I7d0dBQXBCLG9CQUFvQjt5R0FBcEIsb0JBQW9CLGlCQWRmLHVCQUF1QixhQUVyQyxZQUFZO1lBQ1osV0FBVztZQUNYLGtCQUFrQjtZQUNsQixnQkFBZ0I7WUFDaEIsa0JBQWtCO1lBQ2xCLGNBQWM7WUFDZCxhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLFVBQVUsYUFFRCx1QkFBdUI7eUdBRXZCLG9CQUFvQixZQVo3QixZQUFZO1lBQ1osV0FBVztZQUNYLGtCQUFrQjtZQUNsQixnQkFBZ0I7WUFDaEIsa0JBQWtCO1lBQ2xCLGNBQWM7WUFDZCxhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLFVBQVU7OzRGQUlELG9CQUFvQjtrQkFmaEMsUUFBUTttQkFBRTtvQkFDVCxZQUFZLEVBQUUsQ0FBRSx1QkFBdUIsQ0FBRTtvQkFDekMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixVQUFVO3FCQUNYO29CQUNELE9BQU8sRUFBRSxDQUFFLHVCQUF1QixDQUFFO2lCQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgSGludE1vZHVsZSB9IGZyb20gJy4uL2hpbnQvaGludC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uTW9kdWxlIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi92YWxpZGF0aW9uLm1vZHVsZSc7XHJcbmltcG9ydCB7IEVsZW1lbnRXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9lbGVtZW50LXdyYXBwZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBFY2Fic0xvYWRpbmdNb2R1bGUgfSBmcm9tICcuLi8uLi9lY2Ficy1sb2FkaW5nL2VjYWJzLWxvYWRpbmcubW9kdWxlJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcclxuXHJcbkBOZ01vZHVsZSgge1xyXG4gIGRlY2xhcmF0aW9uczogWyBFbGVtZW50V3JhcHBlckNvbXBvbmVudCBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgRWNhYnNMb2FkaW5nTW9kdWxlLFxyXG4gICAgVmFsaWRhdGlvbk1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBIaW50TW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogWyBFbGVtZW50V3JhcHBlckNvbXBvbmVudCBdLFxyXG59IClcclxuZXhwb3J0IGNsYXNzIEVsZW1lbnRXcmFwcGVyTW9kdWxlIHtcclxufVxyXG4iXX0=
@@ -2,7 +2,7 @@ import { CommonModule } from '@angular/common';
2
2
  import { NgModule } from '@angular/core';
3
3
  import { FormsModule } from '@angular/forms';
4
4
  import { HintComponent } from './hint.component';
5
- import { MatLegacyFormFieldModule as MatFormFieldModule } from '@angular/material/legacy-form-field';
5
+ import { MatFormFieldModule } from '@angular/material/form-field';
6
6
  import * as i0 from "@angular/core";
7
7
  export class HintModule {
8
8
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HintModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -17,4 +17,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17
17
  exports: [HintComponent],
18
18
  }]
19
19
  }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvYmFzZS9oaW50L2hpbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFDLHdCQUF3QixJQUFJLGtCQUFrQixFQUFDLE1BQU0scUNBQXFDLENBQUM7O0FBT25HLE1BQU0sT0FBTyxVQUFVO3dHQUFWLFVBQVU7eUdBQVYsVUFBVSxpQkFKTixhQUFhLGFBQ2xCLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLGFBQzdDLGFBQWE7eUdBRVosVUFBVSxZQUhYLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCOzs0RkFHNUMsVUFBVTtrQkFMdEIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxhQUFhLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLENBQUM7b0JBQ3hELE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztpQkFDekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtIaW50Q29tcG9uZW50fSBmcm9tICcuL2hpbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHtNYXRMZWdhY3lGb3JtRmllbGRNb2R1bGUgYXMgTWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZm9ybS1maWVsZCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW0hpbnRDb21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGVdLFxyXG4gIGV4cG9ydHM6IFtIaW50Q29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpbnRNb2R1bGUge1xyXG59XHJcbiJdfQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvYmFzZS9oaW50L2hpbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBT2xFLE1BQU0sT0FBTyxVQUFVO3dHQUFWLFVBQVU7eUdBQVYsVUFBVSxpQkFKTCxhQUFhLGFBQ2xCLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLGFBQzdDLGFBQWE7eUdBRWIsVUFBVSxZQUhWLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCOzs0RkFHN0MsVUFBVTtrQkFMdEIsUUFBUTttQkFBRTtvQkFDVCxZQUFZLEVBQUUsQ0FBRSxhQUFhLENBQUU7b0JBQy9CLE9BQU8sRUFBRSxDQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLENBQUU7b0JBQzFELE9BQU8sRUFBRSxDQUFFLGFBQWEsQ0FBRTtpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSGludENvbXBvbmVudCB9IGZyb20gJy4vaGludC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuXHJcbkBOZ01vZHVsZSgge1xyXG4gIGRlY2xhcmF0aW9uczogWyBIaW50Q29tcG9uZW50IF0sXHJcbiAgaW1wb3J0czogWyBDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUgXSxcclxuICBleHBvcnRzOiBbIEhpbnRDb21wb25lbnQgXSxcclxufSApXHJcbmV4cG9ydCBjbGFzcyBIaW50TW9kdWxlIHtcclxufVxyXG4iXX0=
@@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
2
2
  import { ValidationComponent } from './validation.component';
3
3
  import { FormsModule } from '@angular/forms';
4
4
  import { CommonModule } from '@angular/common';
5
- import { MatLegacyFormFieldModule as MatFormFieldModule } from '@angular/material/legacy-form-field';
5
+ import { MatFormFieldModule } from '@angular/material/form-field';
6
6
  import * as i0 from "@angular/core";
7
7
  export class ValidationModule {
8
8
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -17,4 +17,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17
17
  exports: [ValidationComponent],
18
18
  }]
19
19
  }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvYmFzZS92YWxpZGF0aW9uL3ZhbGlkYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsd0JBQXdCLElBQUksa0JBQWtCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFPbkcsTUFBTSxPQUFPLGdCQUFnQjt3R0FBaEIsZ0JBQWdCO3lHQUFoQixnQkFBZ0IsaUJBSlosbUJBQW1CLGFBQ3hCLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLGFBQzdDLG1CQUFtQjt5R0FFbEIsZ0JBQWdCLFlBSGpCLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCOzs0RkFHNUMsZ0JBQWdCO2tCQUw1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixDQUFDO29CQUN4RCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtWYWxpZGF0aW9uQ29tcG9uZW50fSBmcm9tICcuL3ZhbGlkYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtNYXRMZWdhY3lGb3JtRmllbGRNb2R1bGUgYXMgTWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZm9ybS1maWVsZCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1ZhbGlkYXRpb25Db21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGVdLFxyXG4gIGV4cG9ydHM6IFtWYWxpZGF0aW9uQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25Nb2R1bGUge1xyXG59XHJcbiJdfQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvYmFzZS92YWxpZGF0aW9uL3ZhbGlkYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFPbEUsTUFBTSxPQUFPLGdCQUFnQjt3R0FBaEIsZ0JBQWdCO3lHQUFoQixnQkFBZ0IsaUJBSlgsbUJBQW1CLGFBQ3hCLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLGFBQzdDLG1CQUFtQjt5R0FFbkIsZ0JBQWdCLFlBSGhCLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCOzs0RkFHN0MsZ0JBQWdCO2tCQUw1QixRQUFRO21CQUFFO29CQUNULFlBQVksRUFBRSxDQUFFLG1CQUFtQixDQUFFO29CQUNyQyxPQUFPLEVBQUUsQ0FBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixDQUFFO29CQUMxRCxPQUFPLEVBQUUsQ0FBRSxtQkFBbUIsQ0FBRTtpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi92YWxpZGF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuXHJcbkBOZ01vZHVsZSgge1xyXG4gIGRlY2xhcmF0aW9uczogWyBWYWxpZGF0aW9uQ29tcG9uZW50IF0sXHJcbiAgaW1wb3J0czogWyBDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUgXSxcclxuICBleHBvcnRzOiBbIFZhbGlkYXRpb25Db21wb25lbnQgXSxcclxufSApXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uTW9kdWxlIHtcclxufVxyXG4iXX0=
@@ -0,0 +1,91 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import ElementBaseComponent from '../base/element-base';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/material/autocomplete";
7
+ import * as i3 from "@angular/material/core";
8
+ import * as i4 from "../base/element-wrapper/element-wrapper.component";
9
+ import * as i5 from "@angular/forms";
10
+ import * as i6 from "@angular/material/tooltip";
11
+ export class EcabsAutocompleteComponent extends ElementBaseComponent {
12
+ injector;
13
+ digitsOnly;
14
+ allowDecimal;
15
+ allowHyphen;
16
+ suffixTooltip;
17
+ displayWith;
18
+ items;
19
+ onblur = new EventEmitter();
20
+ val;
21
+ get value() {
22
+ return this.val;
23
+ }
24
+ set value(val) {
25
+ if (val !== undefined && this.val !== val) {
26
+ this.val = val;
27
+ this.onChange(val);
28
+ if (this.getData()?.control?.updateOn !== 'blur') {
29
+ this.onTouch(val);
30
+ }
31
+ }
32
+ }
33
+ constructor(injector) {
34
+ super();
35
+ this.injector = injector;
36
+ }
37
+ ngAfterViewInit() {
38
+ const ngControl = this.injector.get(NgControl, null);
39
+ if (ngControl) {
40
+ this.control = ngControl.control;
41
+ }
42
+ }
43
+ onChange = () => { };
44
+ onTouch = () => { };
45
+ writeValue(value) {
46
+ this.value = value;
47
+ }
48
+ registerOnChange(fn) {
49
+ this.onChange = fn;
50
+ }
51
+ registerOnTouched(fn) {
52
+ this.onTouch = fn;
53
+ }
54
+ blurChange(e) {
55
+ this.onTouch();
56
+ this.onblur.emit(e);
57
+ }
58
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsAutocompleteComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
59
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsAutocompleteComponent, selector: "ecabs-autocomplete", inputs: { digitsOnly: "digitsOnly", allowDecimal: "allowDecimal", allowHyphen: "allowHyphen", suffixTooltip: "suffixTooltip", displayWith: "displayWith", items: "items" }, outputs: { onblur: "onblur" }, providers: [
60
+ {
61
+ provide: NG_VALUE_ACCESSOR,
62
+ useExisting: EcabsAutocompleteComponent,
63
+ multi: true,
64
+ },
65
+ ], usesInheritance: true, ngImport: i0, template: "<app-element-wrapper [data]=\"getData()\">\r\n <div class=\"form-field__input--wrapper\">\r\n <input\r\n class=\"form-field__input\"\r\n type=\"text\"\r\n [id]=\"name\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n [matAutocomplete]=\"autocompleteItems\"\r\n (blur)=\"blurChange($event)\"\r\n />\r\n\r\n <div class=\"form-field__input--suffix\" [matTooltip]=\"suffixTooltip\">\r\n <ng-content select=\"mat-icon\"></ng-content>\r\n <ng-content select=\".suffix\"></ng-content>\r\n </div>\r\n\r\n <mat-autocomplete\r\n #autocompleteItems=\"matAutocomplete\"\r\n [displayWith]=\"displayWith\"\r\n class=\"mat-autocomplete-extended\"\r\n >\r\n <mat-option *ngFor=\"let item of items\" [value]=\"item.value\">\r\n {{ item.label }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </div>\r\n</app-element-wrapper>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i4.ElementWrapperComponent, selector: "app-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
66
+ }
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsAutocompleteComponent, decorators: [{
68
+ type: Component,
69
+ args: [{ selector: 'ecabs-autocomplete', providers: [
70
+ {
71
+ provide: NG_VALUE_ACCESSOR,
72
+ useExisting: EcabsAutocompleteComponent,
73
+ multi: true,
74
+ },
75
+ ], template: "<app-element-wrapper [data]=\"getData()\">\r\n <div class=\"form-field__input--wrapper\">\r\n <input\r\n class=\"form-field__input\"\r\n type=\"text\"\r\n [id]=\"name\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n [matAutocomplete]=\"autocompleteItems\"\r\n (blur)=\"blurChange($event)\"\r\n />\r\n\r\n <div class=\"form-field__input--suffix\" [matTooltip]=\"suffixTooltip\">\r\n <ng-content select=\"mat-icon\"></ng-content>\r\n <ng-content select=\".suffix\"></ng-content>\r\n </div>\r\n\r\n <mat-autocomplete\r\n #autocompleteItems=\"matAutocomplete\"\r\n [displayWith]=\"displayWith\"\r\n class=\"mat-autocomplete-extended\"\r\n >\r\n <mat-option *ngFor=\"let item of items\" [value]=\"item.value\">\r\n {{ item.label }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </div>\r\n</app-element-wrapper>\r\n" }]
76
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { digitsOnly: [{
77
+ type: Input
78
+ }], allowDecimal: [{
79
+ type: Input
80
+ }], allowHyphen: [{
81
+ type: Input
82
+ }], suffixTooltip: [{
83
+ type: Input
84
+ }], displayWith: [{
85
+ type: Input
86
+ }], items: [{
87
+ type: Input
88
+ }], onblur: [{
89
+ type: Output
90
+ }] } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1hdXRvY29tcGxldGUvZWNhYnMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1hdXRvY29tcGxldGUvZWNhYnMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBWSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBNEMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEcsT0FBTyxvQkFBb0IsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7QUFheEQsTUFBTSxPQUFPLDBCQUNYLFNBQVEsb0JBQW9CO0lBa0NQO0lBL0JyQixVQUFVLENBQVc7SUFHckIsWUFBWSxDQUFXO0lBR3ZCLFdBQVcsQ0FBVztJQUViLGFBQWEsQ0FBVTtJQUV2QixXQUFXLENBQXVDO0lBQ2xELEtBQUssQ0FBbUM7SUFFdkMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDM0MsR0FBRyxDQUFtQjtJQUV0QixJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksS0FBSyxDQUFFLEdBQUc7UUFDWixJQUFLLEdBQUcsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUc7WUFDM0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFDZixJQUFJLENBQUMsUUFBUSxDQUFFLEdBQUcsQ0FBRSxDQUFDO1lBRXJCLElBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEtBQUssTUFBTSxFQUFHO2dCQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFFLEdBQUcsQ0FBRSxDQUFDO2FBQ3JCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsWUFBcUIsUUFBa0I7UUFDckMsS0FBSyxFQUFFLENBQUM7UUFEVyxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBRXZDLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxTQUFTLEdBQWMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUUsU0FBUyxFQUFFLElBQUksQ0FBZSxDQUFDO1FBQy9FLElBQUssU0FBUyxFQUFHO1lBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBNkIsQ0FBQztTQUN4RDtJQUNILENBQUM7SUFFRCxRQUFRLEdBQVEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRTFCLE9BQU8sR0FBUSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFekIsVUFBVSxDQUFFLEtBQVU7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELGdCQUFnQixDQUFFLEVBQU87UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFFLEVBQU87UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVUsQ0FBRSxDQUFNO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFFLENBQUMsQ0FBRSxDQUFDO0lBQ3hCLENBQUM7d0dBakVVLDBCQUEwQjs0RkFBMUIsMEJBQTBCLHdQQVIxQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSwwQkFBMEI7Z0JBQ3ZDLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixpRENiSCxpN0JBNkJBOzs0RkRkYSwwQkFBMEI7a0JBWHRDLFNBQVM7K0JBQ0Usb0JBQW9CLGFBRW5CO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsNEJBQTRCOzRCQUN2QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjsrRkFNRCxVQUFVO3NCQURULEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1Db250cm9sLCBOZ0NvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgRWxlbWVudEJhc2VDb21wb25lbnQgZnJvbSAnLi4vYmFzZS9lbGVtZW50LWJhc2UnO1xyXG5cclxuQENvbXBvbmVudCgge1xyXG4gIHNlbGVjdG9yOiAnZWNhYnMtYXV0b2NvbXBsZXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWNhYnMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBFY2Fic0F1dG9jb21wbGV0ZUNvbXBvbmVudCxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0gKVxyXG5leHBvcnQgY2xhc3MgRWNhYnNBdXRvY29tcGxldGVDb21wb25lbnRcclxuICBleHRlbmRzIEVsZW1lbnRCYXNlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KClcclxuICBkaWdpdHNPbmx5ITogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBhbGxvd0RlY2ltYWwhOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFsbG93SHlwaGVuITogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KCkgc3VmZml4VG9vbHRpcCE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgZGlzcGxheVdpdGghOiAoICggdmFsdWU6IGFueSApID0+IHN0cmluZyApIHwgbnVsbDtcclxuICBASW5wdXQoKSBpdGVtcyE6IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IGFueSB9W107XHJcblxyXG4gIEBPdXRwdXQoKSBvbmJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICB2YWwhOiBzdHJpbmcgfCBudW1iZXI7XHJcblxyXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsO1xyXG4gIH1cclxuXHJcbiAgc2V0IHZhbHVlKCB2YWwgKSB7XHJcbiAgICBpZiAoIHZhbCAhPT0gdW5kZWZpbmVkICYmIHRoaXMudmFsICE9PSB2YWwgKSB7XHJcbiAgICAgIHRoaXMudmFsID0gdmFsO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKCB2YWwgKTtcclxuXHJcbiAgICAgIGlmICggdGhpcy5nZXREYXRhKCk/LmNvbnRyb2w/LnVwZGF0ZU9uICE9PSAnYmx1cicgKSB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoKCB2YWwgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoIE5nQ29udHJvbCwgbnVsbCApIGFzIE5nQ29udHJvbDtcclxuICAgIGlmICggbmdDb250cm9sICkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4geyB9O1xyXG5cclxuICBvblRvdWNoOiBhbnkgPSAoKSA9PiB7IH07XHJcblxyXG4gIHdyaXRlVmFsdWUoIHZhbHVlOiBhbnkgKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKCBmbjogYW55ICk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoIGZuOiBhbnkgKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcclxuICB9XHJcblxyXG4gIGJsdXJDaGFuZ2UoIGU6IGFueSApOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgdGhpcy5vbmJsdXIuZW1pdCggZSApO1xyXG4gIH1cclxufVxyXG4iLCI8YXBwLWVsZW1lbnQtd3JhcHBlciBbZGF0YV09XCJnZXREYXRhKClcIj5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQtLXdyYXBwZXJcIj5cclxuICAgIDxpbnB1dFxyXG4gICAgICBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0XCJcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBbaWRdPVwibmFtZVwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZUl0ZW1zXCJcclxuICAgICAgKGJsdXIpPVwiYmx1ckNoYW5nZSgkZXZlbnQpXCJcclxuICAgIC8+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0LS1zdWZmaXhcIiBbbWF0VG9vbHRpcF09XCJzdWZmaXhUb29sdGlwXCI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1pY29uXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCIuc3VmZml4XCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG1hdC1hdXRvY29tcGxldGVcclxuICAgICNhdXRvY29tcGxldGVJdGVtcz1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheVdpdGhcIlxyXG4gICAgY2xhc3M9XCJtYXQtYXV0b2NvbXBsZXRlLWV4dGVuZGVkXCJcclxuICA+XHJcbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCI+XHJcbiAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cclxuICAgIDwvbWF0LW9wdGlvbj5cclxuICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgPC9kaXY+XHJcbjwvYXBwLWVsZW1lbnQtd3JhcHBlcj5cclxuIl19