@den4ik92/ng2-smart-table 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/esm2020/den4ik92-ng2-smart-table.mjs +5 -0
  2. package/esm2020/lib/components/cell/cell-edit-mode/custom-edit.component.mjs +50 -0
  3. package/esm2020/lib/components/cell/cell-edit-mode/default-edit.component.mjs +84 -0
  4. package/esm2020/lib/components/cell/cell-edit-mode/edit-cell-default.mjs +35 -0
  5. package/esm2020/lib/components/cell/cell-edit-mode/edit-cell.component.mjs +75 -0
  6. package/esm2020/lib/components/cell/cell-editors/checkbox-editor.component.mjs +37 -0
  7. package/esm2020/lib/components/cell/cell-editors/completer-editor.component.mjs +38 -0
  8. package/esm2020/lib/components/cell/cell-editors/default-editor.mjs +29 -0
  9. package/esm2020/lib/components/cell/cell-editors/input-editor.component.mjs +33 -0
  10. package/esm2020/lib/components/cell/cell-editors/select-editor.component.mjs +55 -0
  11. package/esm2020/lib/components/cell/cell-editors/textarea-editor.component.mjs +35 -0
  12. package/esm2020/lib/components/cell/cell-view-mode/custom-view.component.mjs +63 -0
  13. package/esm2020/lib/components/cell/cell-view-mode/view-cell.component.mjs +59 -0
  14. package/esm2020/lib/components/cell/cell-view-mode/view-cell.mjs +2 -0
  15. package/esm2020/lib/components/cell/cell.component.mjs +82 -0
  16. package/esm2020/lib/components/cell/cell.module.mjs +80 -0
  17. package/esm2020/lib/components/filter/custom-filter.component.mjs +53 -0
  18. package/esm2020/lib/components/filter/default-filter.component.mjs +100 -0
  19. package/esm2020/lib/components/filter/filter-default.mjs +35 -0
  20. package/esm2020/lib/components/filter/filter-types/checkbox-filter.component.mjs +65 -0
  21. package/esm2020/lib/components/filter/filter-types/completer-filter.component.mjs +52 -0
  22. package/esm2020/lib/components/filter/filter-types/default-filter.mjs +34 -0
  23. package/esm2020/lib/components/filter/filter-types/input-filter.component.mjs +51 -0
  24. package/esm2020/lib/components/filter/filter-types/select-filter.component.mjs +71 -0
  25. package/esm2020/lib/components/filter/filter.component.mjs +91 -0
  26. package/esm2020/lib/components/filter/filter.module.mjs +67 -0
  27. package/esm2020/lib/components/pager/pager.component.mjs +284 -0
  28. package/esm2020/lib/components/pager/pager.module.mjs +29 -0
  29. package/esm2020/lib/components/tbody/cells/create-cancel.component.mjs +52 -0
  30. package/esm2020/lib/components/tbody/cells/custom.component.mjs +56 -0
  31. package/esm2020/lib/components/tbody/cells/edit-delete.component.mjs +103 -0
  32. package/esm2020/lib/components/tbody/tbody.component.mjs +206 -0
  33. package/esm2020/lib/components/tbody/tbody.module.mjs +48 -0
  34. package/esm2020/lib/components/thead/cells/actions-title.component.mjs +36 -0
  35. package/esm2020/lib/components/thead/cells/actions.component.mjs +44 -0
  36. package/esm2020/lib/components/thead/cells/add-button.component.mjs +63 -0
  37. package/esm2020/lib/components/thead/cells/checkbox-select-all.component.mjs +28 -0
  38. package/esm2020/lib/components/thead/cells/column-title.component.mjs +37 -0
  39. package/esm2020/lib/components/thead/cells/title/title.component.mjs +100 -0
  40. package/esm2020/lib/components/thead/rows/thead-filters-row.component.mjs +105 -0
  41. package/esm2020/lib/components/thead/rows/thead-form-row.component.mjs +108 -0
  42. package/esm2020/lib/components/thead/rows/thead-titles-row.component.mjs +103 -0
  43. package/esm2020/lib/components/thead/thead.component.mjs +76 -0
  44. package/esm2020/lib/components/thead/thead.module.mjs +76 -0
  45. package/esm2020/lib/lib/data-set/cell.mjs +41 -0
  46. package/esm2020/lib/lib/data-set/column.mjs +75 -0
  47. package/esm2020/lib/lib/data-set/data-set.mjs +98 -0
  48. package/esm2020/lib/lib/data-set/row.mjs +46 -0
  49. package/esm2020/lib/lib/data-source/data-source.mjs +101 -0
  50. package/esm2020/lib/lib/data-source/local/local.data-source.mjs +228 -0
  51. package/esm2020/lib/lib/data-source/local/local.filter.mjs +13 -0
  52. package/esm2020/lib/lib/data-source/local/local.pager.mjs +6 -0
  53. package/esm2020/lib/lib/data-source/local/local.sorter.mjs +19 -0
  54. package/esm2020/lib/lib/data-source/server/server-source.conf.mjs +20 -0
  55. package/esm2020/lib/lib/data-source/server/server.data-source.mjs +93 -0
  56. package/esm2020/lib/lib/grid.mjs +220 -0
  57. package/esm2020/lib/lib/helpers.mjs +84 -0
  58. package/esm2020/lib/lib/interfaces/smart-table.models.mjs +2 -0
  59. package/esm2020/lib/ng2-smart-table.component.mjs +203 -0
  60. package/esm2020/lib/ng2-smart-table.module.mjs +52 -0
  61. package/esm2020/public-api.mjs +8 -0
  62. package/fesm2015/den4ik92-ng2-smart-table.mjs +4329 -0
  63. package/fesm2015/den4ik92-ng2-smart-table.mjs.map +1 -0
  64. package/fesm2020/den4ik92-ng2-smart-table.mjs +3949 -0
  65. package/fesm2020/den4ik92-ng2-smart-table.mjs.map +1 -0
  66. package/index.d.ts +5 -0
  67. package/lib/components/cell/cell-edit-mode/custom-edit.component.d.ts +13 -0
  68. package/lib/components/cell/cell-edit-mode/default-edit.component.d.ts +8 -0
  69. package/lib/components/cell/cell-edit-mode/edit-cell-default.d.ts +13 -0
  70. package/lib/components/cell/cell-edit-mode/edit-cell.component.d.ts +12 -0
  71. package/lib/components/cell/cell-editors/checkbox-editor.component.d.ts +8 -0
  72. package/lib/components/cell/cell-editors/completer-editor.component.d.ts +13 -0
  73. package/lib/components/cell/cell-editors/default-editor.d.ts +19 -0
  74. package/lib/components/cell/cell-editors/input-editor.component.d.ts +7 -0
  75. package/lib/components/cell/cell-editors/select-editor.component.d.ts +7 -0
  76. package/lib/components/cell/cell-editors/textarea-editor.component.d.ts +7 -0
  77. package/lib/components/cell/cell-view-mode/custom-view.component.d.ts +19 -0
  78. package/lib/components/cell/cell-view-mode/view-cell.component.d.ts +7 -0
  79. package/lib/components/cell/cell-view-mode/view-cell.d.ts +4 -0
  80. package/lib/components/cell/cell.component.d.ts +20 -0
  81. package/lib/components/cell/cell.module.d.ts +21 -0
  82. package/lib/components/filter/custom-filter.component.d.ts +14 -0
  83. package/lib/components/filter/default-filter.component.d.ts +7 -0
  84. package/lib/components/filter/filter-default.d.ts +14 -0
  85. package/lib/components/filter/filter-types/checkbox-filter.component.d.ts +13 -0
  86. package/lib/components/filter/filter-types/completer-filter.component.d.ts +12 -0
  87. package/lib/components/filter/filter-types/default-filter.d.ts +24 -0
  88. package/lib/components/filter/filter-types/input-filter.component.d.ts +12 -0
  89. package/lib/components/filter/filter-types/select-filter.component.d.ts +11 -0
  90. package/lib/components/filter/filter.component.d.ts +11 -0
  91. package/lib/components/filter/filter.module.d.ts +17 -0
  92. package/lib/components/pager/pager.component.d.ts +35 -0
  93. package/lib/components/pager/pager.module.d.ts +9 -0
  94. package/lib/components/tbody/cells/create-cancel.component.d.ts +16 -0
  95. package/lib/components/tbody/cells/custom.component.d.ts +13 -0
  96. package/lib/components/tbody/cells/edit-delete.component.d.ts +24 -0
  97. package/lib/components/tbody/tbody.component.d.ts +37 -0
  98. package/lib/components/tbody/tbody.module.d.ts +13 -0
  99. package/lib/components/thead/cells/actions-title.component.d.ts +13 -0
  100. package/lib/components/thead/cells/actions.component.d.ts +12 -0
  101. package/lib/components/thead/cells/add-button.component.d.ts +18 -0
  102. package/lib/components/thead/cells/checkbox-select-all.component.d.ts +9 -0
  103. package/lib/components/thead/cells/column-title.component.d.ts +11 -0
  104. package/lib/components/thead/cells/title/title.component.d.ts +17 -0
  105. package/lib/components/thead/rows/thead-filters-row.component.d.ts +19 -0
  106. package/lib/components/thead/rows/thead-form-row.component.d.ts +20 -0
  107. package/lib/components/thead/rows/thead-titles-row.component.d.ts +18 -0
  108. package/lib/components/thead/thead.component.d.ts +18 -0
  109. package/lib/components/thead/thead.module.d.ts +20 -0
  110. package/lib/lib/data-set/cell.d.ts +20 -0
  111. package/lib/lib/data-set/column.d.ts +44 -0
  112. package/lib/lib/data-set/data-set.d.ts +37 -0
  113. package/lib/lib/data-set/row.d.ts +20 -0
  114. package/lib/lib/data-source/data-source.d.ts +35 -0
  115. package/lib/lib/data-source/local/local.data-source.d.ts +55 -0
  116. package/lib/lib/data-source/local/local.filter.d.ts +4 -0
  117. package/lib/lib/data-source/local/local.pager.d.ts +3 -0
  118. package/lib/lib/data-source/local/local.sorter.d.ts +4 -0
  119. package/lib/lib/data-source/server/server-source.conf.d.ts +27 -0
  120. package/lib/lib/data-source/server/server.data-source.d.ts +30 -0
  121. package/lib/lib/grid.d.ts +49 -0
  122. package/lib/lib/helpers.d.ts +18 -0
  123. package/lib/lib/interfaces/smart-table.models.d.ts +148 -0
  124. package/lib/ng2-smart-table.component.d.ts +43 -0
  125. package/lib/ng2-smart-table.module.d.ts +14 -0
  126. package/package.json +35 -0
  127. package/public-api.d.ts +8 -0
@@ -0,0 +1,51 @@
1
+ import { Component } from '@angular/core';
2
+ import { UntypedFormControl } from '@angular/forms';
3
+ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
4
+ import { DefaultFilter } from './default-filter';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@angular/forms";
8
+ export class InputFilterComponent extends DefaultFilter {
9
+ constructor() {
10
+ super();
11
+ this.inputControl = new UntypedFormControl();
12
+ }
13
+ ngOnInit() {
14
+ if (this.query) {
15
+ this.inputControl.setValue(this.query);
16
+ }
17
+ this.inputControl.valueChanges
18
+ .pipe(distinctUntilChanged(), debounceTime(this.delay))
19
+ .subscribe((value) => {
20
+ this.query = this.inputControl.value;
21
+ this.setFilter();
22
+ });
23
+ }
24
+ ngOnChanges(changes) {
25
+ if (changes.query) {
26
+ this.inputControl.setValue(this.query);
27
+ }
28
+ }
29
+ }
30
+ InputFilterComponent.ɵfac = function InputFilterComponent_Factory(t) { return new (t || InputFilterComponent)(); };
31
+ InputFilterComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: InputFilterComponent, selectors: [["input-filter"]], features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 1, vars: 3, consts: [["type", "text", 1, "form-control", 3, "ngClass", "formControl", "placeholder"]], template: function InputFilterComponent_Template(rf, ctx) { if (rf & 1) {
32
+ i0.ɵɵelement(0, "input", 0);
33
+ } if (rf & 2) {
34
+ i0.ɵɵpropertyInterpolate("placeholder", ctx.column.title);
35
+ i0.ɵɵproperty("ngClass", ctx.inputClass)("formControl", ctx.inputControl);
36
+ } }, dependencies: [i1.NgClass, i2.DefaultValueAccessor, i2.NgControlStatus, i2.FormControlDirective], encapsulation: 2 });
37
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InputFilterComponent, [{
38
+ type: Component,
39
+ args: [{
40
+ selector: 'input-filter',
41
+ template: `
42
+ <input
43
+ [ngClass]="inputClass"
44
+ [formControl]="inputControl"
45
+ class="form-control"
46
+ type="text"
47
+ placeholder="{{ column.title }}"/>
48
+ `,
49
+ }]
50
+ }], function () { return []; }, null); })();
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nMi1zbWFydC10YWJsZS9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVyL2ZpbHRlci10eXBlcy9pbnB1dC1maWx0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQVEsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFhakQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7SUFJckQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUhWLGlCQUFZLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBSXhDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZO2FBQzNCLElBQUksQ0FDSCxvQkFBb0IsRUFBRSxFQUN0QixZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUN6QjthQUNBLFNBQVMsQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDckMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQzs7d0ZBM0JVLG9CQUFvQjt1RUFBcEIsb0JBQW9CO1FBUjdCLDJCQUtvQzs7UUFBbEMseURBQWdDO1FBSmhDLHdDQUFzQixpQ0FBQTs7dUZBT2Ysb0JBQW9CO2NBWGhDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsY0FBYztnQkFDeEIsUUFBUSxFQUFFOzs7Ozs7O0dBT1Q7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHNraXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IERlZmF1bHRGaWx0ZXIgfSBmcm9tICcuL2RlZmF1bHQtZmlsdGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW5wdXQtZmlsdGVyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW5wdXRcbiAgICAgIFtuZ0NsYXNzXT1cImlucHV0Q2xhc3NcIlxuICAgICAgW2Zvcm1Db250cm9sXT1cImlucHV0Q29udHJvbFwiXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7IGNvbHVtbi50aXRsZSB9fVwiLz5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRGaWx0ZXJDb21wb25lbnQgZXh0ZW5kcyBEZWZhdWx0RmlsdGVyIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gIGlucHV0Q29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMucXVlcnkpIHtcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKHRoaXMucXVlcnkpO1xuICAgIH1cbiAgICB0aGlzLmlucHV0Q29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWxheSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMucXVlcnkgPSB0aGlzLmlucHV0Q29udHJvbC52YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRGaWx0ZXIoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLnF1ZXJ5KSB7XG4gICAgICB0aGlzLmlucHV0Q29udHJvbC5zZXRWYWx1ZSh0aGlzLnF1ZXJ5KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,71 @@
1
+ import { Component, ViewChild } from '@angular/core';
2
+ import { NgControl } from '@angular/forms';
3
+ import { distinctUntilChanged, debounceTime, skip } from 'rxjs/operators';
4
+ import { DefaultFilter } from './default-filter';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@angular/forms";
8
+ const _c0 = ["inputControl"];
9
+ function SelectFilterComponent_option_4_Template(rf, ctx) { if (rf & 1) {
10
+ i0.ɵɵelementStart(0, "option", 4);
11
+ i0.ɵɵtext(1);
12
+ i0.ɵɵelementEnd();
13
+ } if (rf & 2) {
14
+ const option_r2 = ctx.$implicit;
15
+ i0.ɵɵproperty("value", option_r2.value);
16
+ i0.ɵɵadvance(1);
17
+ i0.ɵɵtextInterpolate1(" ", option_r2.title, " ");
18
+ } }
19
+ export class SelectFilterComponent extends DefaultFilter {
20
+ constructor() {
21
+ super();
22
+ }
23
+ ngOnInit() {
24
+ this.inputControl.valueChanges
25
+ .pipe(skip(1), distinctUntilChanged(), debounceTime(this.delay))
26
+ .subscribe((value) => this.setFilter());
27
+ }
28
+ }
29
+ SelectFilterComponent.ɵfac = function SelectFilterComponent_Factory(t) { return new (t || SelectFilterComponent)(); };
30
+ SelectFilterComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SelectFilterComponent, selectors: [["select-filter"]], viewQuery: function SelectFilterComponent_Query(rf, ctx) { if (rf & 1) {
31
+ i0.ɵɵviewQuery(_c0, 7, NgControl);
32
+ } if (rf & 2) {
33
+ let _t;
34
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inputControl = _t.first);
35
+ } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 4, consts: [[1, "form-control", 3, "ngClass", "ngModel", "ngModelChange"], ["inputControl", ""], ["value", ""], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"]], template: function SelectFilterComponent_Template(rf, ctx) { if (rf & 1) {
36
+ i0.ɵɵelementStart(0, "select", 0, 1);
37
+ i0.ɵɵlistener("ngModelChange", function SelectFilterComponent_Template_select_ngModelChange_0_listener($event) { return ctx.query = $event; });
38
+ i0.ɵɵelementStart(2, "option", 2);
39
+ i0.ɵɵtext(3);
40
+ i0.ɵɵelementEnd();
41
+ i0.ɵɵtemplate(4, SelectFilterComponent_option_4_Template, 2, 2, "option", 3);
42
+ i0.ɵɵelementEnd();
43
+ } if (rf & 2) {
44
+ i0.ɵɵproperty("ngClass", ctx.inputClass)("ngModel", ctx.query);
45
+ i0.ɵɵadvance(3);
46
+ i0.ɵɵtextInterpolate(ctx.column.getFilterConfig().selectText);
47
+ i0.ɵɵadvance(1);
48
+ i0.ɵɵproperty("ngForOf", ctx.column.getFilterConfig().list);
49
+ } }, dependencies: [i1.NgClass, i1.NgForOf, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgModel], encapsulation: 2 });
50
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SelectFilterComponent, [{
51
+ type: Component,
52
+ args: [{
53
+ selector: 'select-filter',
54
+ template: `
55
+ <select [ngClass]="inputClass"
56
+ class="form-control"
57
+ #inputControl
58
+ [(ngModel)]="query">
59
+
60
+ <option value="">{{ column.getFilterConfig().selectText }}</option>
61
+ <option *ngFor="let option of column.getFilterConfig().list" [value]="option.value">
62
+ {{ option.title }}
63
+ </option>
64
+ </select>
65
+ `,
66
+ }]
67
+ }], function () { return []; }, { inputControl: [{
68
+ type: ViewChild,
69
+ args: ['inputControl', { read: NgControl, static: true }]
70
+ }] }); })();
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZzItc21hcnQtdGFibGUvc3JjL2xpYi9jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItdHlwZXMvc2VsZWN0LWZpbHRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7SUFXekMsaUNBQW9GO0lBQ2xGLFlBQ0Y7SUFBQSxpQkFBUzs7O0lBRm9ELHVDQUFzQjtJQUNqRixlQUNGO0lBREUsZ0RBQ0Y7O0FBSVIsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGFBQWE7SUFJdEQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZO2FBQzNCLElBQUksQ0FDSCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1Asb0JBQW9CLEVBQUUsRUFDdEIsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FDekI7YUFDQSxTQUFTLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7OzBGQWhCVSxxQkFBcUI7d0VBQXJCLHFCQUFxQjsrQkFFRyxTQUFTOzs7OztRQWQxQyxvQ0FHNEI7UUFBcEIsOElBQW1CO1FBRXZCLGlDQUFpQjtRQUFBLFlBQXlDO1FBQUEsaUJBQVM7UUFDbkUsNEVBRVM7UUFDYixpQkFBUzs7UUFURCx3Q0FBc0Isc0JBQUE7UUFLVCxlQUF5QztRQUF6Qyw2REFBeUM7UUFDL0IsZUFBZ0M7UUFBaEMsMkRBQWdDOzt1RkFNdEQscUJBQXFCO2NBZmpDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsUUFBUSxFQUFFOzs7Ozs7Ozs7OztHQVdUO2FBQ0Y7c0NBRytELFlBQVk7a0JBQXpFLFNBQVM7bUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGRlYm91bmNlVGltZSwgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGVmYXVsdEZpbHRlciB9IGZyb20gJy4vZGVmYXVsdC1maWx0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWxlY3QtZmlsdGVyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8c2VsZWN0IFtuZ0NsYXNzXT1cImlucHV0Q2xhc3NcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgI2lucHV0Q29udHJvbFxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJxdWVyeVwiPlxuXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj57eyBjb2x1bW4uZ2V0RmlsdGVyQ29uZmlnKCkuc2VsZWN0VGV4dCB9fTwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29sdW1uLmdldEZpbHRlckNvbmZpZygpLmxpc3RcIiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XG4gICAgICAgICAge3sgb3B0aW9uLnRpdGxlIH19XG4gICAgICAgIDwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RGaWx0ZXJDb21wb25lbnQgZXh0ZW5kcyBEZWZhdWx0RmlsdGVyIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBAVmlld0NoaWxkKCdpbnB1dENvbnRyb2wnLCB7IHJlYWQ6IE5nQ29udHJvbCwgc3RhdGljOiB0cnVlIH0pIGlucHV0Q29udHJvbDogTmdDb250cm9sO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlucHV0Q29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWxheSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHRoaXMuc2V0RmlsdGVyKCkpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,91 @@
1
+ import { Component } from '@angular/core';
2
+ import { FilterDefault } from './filter-default';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "./default-filter.component";
6
+ import * as i3 from "./custom-filter.component";
7
+ function FilterComponent_div_0_custom_table_filter_1_Template(rf, ctx) { if (rf & 1) {
8
+ const _r4 = i0.ɵɵgetCurrentView();
9
+ i0.ɵɵelementStart(0, "custom-table-filter", 4);
10
+ i0.ɵɵlistener("filter", function FilterComponent_div_0_custom_table_filter_1_Template_custom_table_filter_filter_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.onFilter($event)); });
11
+ i0.ɵɵelementEnd();
12
+ } if (rf & 2) {
13
+ const ctx_r1 = i0.ɵɵnextContext(2);
14
+ i0.ɵɵproperty("query", ctx_r1.query)("column", ctx_r1.column)("source", ctx_r1.source)("inputClass", ctx_r1.inputClass);
15
+ } }
16
+ function FilterComponent_div_0_default_table_filter_2_Template(rf, ctx) { if (rf & 1) {
17
+ const _r6 = i0.ɵɵgetCurrentView();
18
+ i0.ɵɵelementStart(0, "default-table-filter", 4);
19
+ i0.ɵɵlistener("filter", function FilterComponent_div_0_default_table_filter_2_Template_default_table_filter_filter_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r5 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r5.onFilter($event)); });
20
+ i0.ɵɵelementEnd();
21
+ } if (rf & 2) {
22
+ const ctx_r2 = i0.ɵɵnextContext(2);
23
+ i0.ɵɵproperty("query", ctx_r2.query)("column", ctx_r2.column)("source", ctx_r2.source)("inputClass", ctx_r2.inputClass);
24
+ } }
25
+ function FilterComponent_div_0_Template(rf, ctx) { if (rf & 1) {
26
+ i0.ɵɵelementStart(0, "div", 1);
27
+ i0.ɵɵtemplate(1, FilterComponent_div_0_custom_table_filter_1_Template, 1, 4, "custom-table-filter", 2);
28
+ i0.ɵɵtemplate(2, FilterComponent_div_0_default_table_filter_2_Template, 1, 4, "default-table-filter", 3);
29
+ i0.ɵɵelementEnd();
30
+ } if (rf & 2) {
31
+ const ctx_r0 = i0.ɵɵnextContext();
32
+ i0.ɵɵproperty("ngSwitch", ctx_r0.column.getFilterType());
33
+ i0.ɵɵadvance(1);
34
+ i0.ɵɵproperty("ngSwitchCase", "custom");
35
+ } }
36
+ export class FilterComponent extends FilterDefault {
37
+ constructor() {
38
+ super(...arguments);
39
+ this.query = '';
40
+ }
41
+ ngOnChanges(changes) {
42
+ if (changes.source) {
43
+ if (!changes.source.firstChange) {
44
+ this.dataChangedSub.unsubscribe();
45
+ }
46
+ this.dataChangedSub = this.source.onChanged().subscribe((dataChanges) => {
47
+ const filterConf = this.source.getFilter();
48
+ if (filterConf && filterConf.filters && filterConf.filters.length === 0) {
49
+ this.query = '';
50
+ // add a check for existing filters an set the query if one exists for this column
51
+ // this covers instances where the filter is set by user code while maintaining existing functionality
52
+ }
53
+ else if (filterConf && filterConf.filters && filterConf.filters.length > 0) {
54
+ filterConf.filters.forEach((k, v) => {
55
+ if (k.field == this.column.id) {
56
+ this.query = k.search;
57
+ }
58
+ });
59
+ }
60
+ });
61
+ }
62
+ }
63
+ }
64
+ FilterComponent.ɵfac = /*@__PURE__*/ function () { let ɵFilterComponent_BaseFactory; return function FilterComponent_Factory(t) { return (ɵFilterComponent_BaseFactory || (ɵFilterComponent_BaseFactory = i0.ɵɵgetInheritedFactory(FilterComponent)))(t || FilterComponent); }; }();
65
+ FilterComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FilterComponent, selectors: [["ng2-smart-table-filter"]], features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["class", "ng2-smart-filter", 3, "ngSwitch", 4, "ngIf"], [1, "ng2-smart-filter", 3, "ngSwitch"], [3, "query", "column", "source", "inputClass", "filter", 4, "ngSwitchCase"], [3, "query", "column", "source", "inputClass", "filter", 4, "ngSwitchDefault"], [3, "query", "column", "source", "inputClass", "filter"]], template: function FilterComponent_Template(rf, ctx) { if (rf & 1) {
66
+ i0.ɵɵtemplate(0, FilterComponent_div_0_Template, 3, 2, "div", 0);
67
+ } if (rf & 2) {
68
+ i0.ɵɵproperty("ngIf", ctx.column.isFilterable);
69
+ } }, dependencies: [i1.NgIf, i1.NgSwitch, i1.NgSwitchCase, i1.NgSwitchDefault, i2.DefaultFilterComponent, i3.CustomFilterComponent], styles: ["[_nghost-%COMP%] .ng2-smart-filter[_ngcontent-%COMP%] input, [_nghost-%COMP%] .ng2-smart-filter[_ngcontent-%COMP%] select{width:100%;line-height:normal;padding:.375em .75em;font-weight:400}[_nghost-%COMP%] .ng2-smart-filter[_ngcontent-%COMP%] input[type=search]{box-sizing:inherit}[_nghost-%COMP%] .ng2-smart-filter[_ngcontent-%COMP%] .completer-dropdown-holder{font-weight:400}[_nghost-%COMP%] .ng2-smart-filter[_ngcontent-%COMP%] a{font-weight:400}"] });
70
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FilterComponent, [{
71
+ type: Component,
72
+ args: [{ selector: 'ng2-smart-table-filter', template: `
73
+ <div class="ng2-smart-filter" *ngIf="column.isFilterable" [ngSwitch]="column.getFilterType()">
74
+ <custom-table-filter *ngSwitchCase="'custom'"
75
+ [query]="query"
76
+ [column]="column"
77
+ [source]="source"
78
+ [inputClass]="inputClass"
79
+ (filter)="onFilter($event)">
80
+ </custom-table-filter>
81
+ <default-table-filter *ngSwitchDefault
82
+ [query]="query"
83
+ [column]="column"
84
+ [source]="source"
85
+ [inputClass]="inputClass"
86
+ (filter)="onFilter($event)">
87
+ </default-table-filter>
88
+ </div>
89
+ `, styles: [":host .ng2-smart-filter ::ng-deep input,:host .ng2-smart-filter ::ng-deep select{width:100%;line-height:normal;padding:.375em .75em;font-weight:400}:host .ng2-smart-filter ::ng-deep input[type=search]{box-sizing:inherit}:host .ng2-smart-filter ::ng-deep .completer-dropdown-holder{font-weight:400}:host .ng2-smart-filter ::ng-deep a{font-weight:400}\n"] }]
90
+ }], null, null); })();
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nMi1zbWFydC10YWJsZS9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVyL2ZpbHRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7O0lBUXpDLDhDQUtpRDtJQUE1Qix3TUFBVSxlQUFBLHVCQUFnQixDQUFBLElBQUM7SUFDaEQsaUJBQXNCOzs7SUFMRCxvQ0FBZSx5QkFBQSx5QkFBQSxpQ0FBQTs7OztJQU1wQywrQ0FLa0Q7SUFBNUIsME1BQVUsZUFBQSx1QkFBZ0IsQ0FBQSxJQUFDO0lBQ2pELGlCQUF1Qjs7O0lBTEQsb0NBQWUseUJBQUEseUJBQUEsaUNBQUE7OztJQVR2Qyw4QkFBOEY7SUFDNUYsc0dBTXNCO0lBQ3RCLHdHQU11QjtJQUN6QixpQkFBTTs7O0lBZm9ELHdEQUFtQztJQUNyRSxlQUFzQjtJQUF0Qix1Q0FBc0I7O0FBaUJwRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxhQUFhO0lBdEJsRDs7UUF1QkUsVUFBSyxHQUFXLEVBQUUsQ0FBQztLQXlCcEI7SUF0QkMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDbkM7WUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQ3RFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzNDLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO29CQUN2RSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztvQkFFaEIsa0ZBQWtGO29CQUNsRixzR0FBc0c7aUJBQ3ZHO3FCQUFNLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUM1RSxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRTt3QkFDNUMsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFOzRCQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7eUJBQ3ZCO29CQUNILENBQUMsQ0FBQyxDQUFDO2lCQUNKO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O21PQXpCVSxlQUFlLFNBQWYsZUFBZTtrRUFBZixlQUFlO1FBbEJ0QixnRUFlTTs7UUFmeUIsOENBQXlCOzt1RkFrQmpELGVBQWU7Y0F0QjNCLFNBQVM7MkJBQ0Usd0JBQXdCLFlBRXhCOzs7Ozs7Ozs7Ozs7Ozs7OztLQWlCUCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWx0ZXJEZWZhdWx0IH0gZnJvbSAnLi9maWx0ZXItZGVmYXVsdCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmcyLXNtYXJ0LXRhYmxlLWZpbHRlcicsXG4gIHN0eWxlVXJsczogWycuL2ZpbHRlci5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZTogYFxuICAgICAgPGRpdiBjbGFzcz1cIm5nMi1zbWFydC1maWx0ZXJcIiAqbmdJZj1cImNvbHVtbi5pc0ZpbHRlcmFibGVcIiBbbmdTd2l0Y2hdPVwiY29sdW1uLmdldEZpbHRlclR5cGUoKVwiPlxuICAgICAgICA8Y3VzdG9tLXRhYmxlLWZpbHRlciAqbmdTd2l0Y2hDYXNlPVwiJ2N1c3RvbSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnldPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzb3VyY2VdPVwic291cmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q2xhc3NdPVwiaW5wdXRDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWx0ZXIpPVwib25GaWx0ZXIoJGV2ZW50KVwiPlxuICAgICAgICA8L2N1c3RvbS10YWJsZS1maWx0ZXI+XG4gICAgICAgIDxkZWZhdWx0LXRhYmxlLWZpbHRlciAqbmdTd2l0Y2hEZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnldPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NvdXJjZV09XCJzb3VyY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q2xhc3NdPVwiaW5wdXRDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsdGVyKT1cIm9uRmlsdGVyKCRldmVudClcIj5cbiAgICAgICAgPC9kZWZhdWx0LXRhYmxlLWZpbHRlcj5cbiAgICAgIDwvZGl2PlxuICAgIGAsXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlckNvbXBvbmVudCBleHRlbmRzIEZpbHRlckRlZmF1bHQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBxdWVyeTogc3RyaW5nID0gJyc7XG4gIHByb3RlY3RlZCBkYXRhQ2hhbmdlZFN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5zb3VyY2UpIHtcbiAgICAgIGlmICghY2hhbmdlcy5zb3VyY2UuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5kYXRhQ2hhbmdlZFN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5kYXRhQ2hhbmdlZFN1YiA9IHRoaXMuc291cmNlLm9uQ2hhbmdlZCgpLnN1YnNjcmliZSgoZGF0YUNoYW5nZXMpID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyQ29uZiA9IHRoaXMuc291cmNlLmdldEZpbHRlcigpO1xuICAgICAgICBpZiAoZmlsdGVyQ29uZiAmJiBmaWx0ZXJDb25mLmZpbHRlcnMgJiYgZmlsdGVyQ29uZi5maWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMucXVlcnkgPSAnJztcblxuICAgICAgICAgIC8vIGFkZCBhIGNoZWNrIGZvciBleGlzdGluZyBmaWx0ZXJzIGFuIHNldCB0aGUgcXVlcnkgaWYgb25lIGV4aXN0cyBmb3IgdGhpcyBjb2x1bW5cbiAgICAgICAgICAvLyB0aGlzIGNvdmVycyBpbnN0YW5jZXMgd2hlcmUgdGhlIGZpbHRlciBpcyBzZXQgYnkgdXNlciBjb2RlIHdoaWxlIG1haW50YWluaW5nIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJDb25mICYmIGZpbHRlckNvbmYuZmlsdGVycyAmJiBmaWx0ZXJDb25mLmZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZpbHRlckNvbmYuZmlsdGVycy5mb3JFYWNoKChrOiBhbnksIHY6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGsuZmllbGQgPT0gdGhpcy5jb2x1bW4uaWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5xdWVyeSA9IGsuc2VhcmNoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,67 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
+ import { FilterComponent } from './filter.component';
5
+ import { DefaultFilterComponent } from "./default-filter.component";
6
+ import { CustomFilterComponent } from "./custom-filter.component";
7
+ import { CheckboxFilterComponent } from './filter-types/checkbox-filter.component';
8
+ import { CompleterFilterComponent } from './filter-types/completer-filter.component';
9
+ import { InputFilterComponent } from './filter-types/input-filter.component';
10
+ import { SelectFilterComponent } from './filter-types/select-filter.component';
11
+ import { DefaultFilter } from './filter-types/default-filter';
12
+ import { FilterDefault } from './filter-default';
13
+ import * as i0 from "@angular/core";
14
+ const FILTER_COMPONENTS = [
15
+ FilterDefault,
16
+ DefaultFilter,
17
+ FilterComponent,
18
+ DefaultFilterComponent,
19
+ CustomFilterComponent,
20
+ CheckboxFilterComponent,
21
+ CompleterFilterComponent,
22
+ InputFilterComponent,
23
+ SelectFilterComponent,
24
+ ];
25
+ export class FilterModule {
26
+ }
27
+ FilterModule.ɵfac = function FilterModule_Factory(t) { return new (t || FilterModule)(); };
28
+ FilterModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: FilterModule });
29
+ FilterModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule,
30
+ FormsModule,
31
+ ReactiveFormsModule] });
32
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FilterModule, [{
33
+ type: NgModule,
34
+ args: [{
35
+ imports: [
36
+ CommonModule,
37
+ FormsModule,
38
+ ReactiveFormsModule,
39
+ ],
40
+ declarations: [
41
+ ...FILTER_COMPONENTS,
42
+ ],
43
+ exports: [
44
+ ...FILTER_COMPONENTS,
45
+ ],
46
+ }]
47
+ }], null, null); })();
48
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(FilterModule, { declarations: [FilterDefault,
49
+ DefaultFilter,
50
+ FilterComponent,
51
+ DefaultFilterComponent,
52
+ CustomFilterComponent,
53
+ CheckboxFilterComponent,
54
+ CompleterFilterComponent,
55
+ InputFilterComponent,
56
+ SelectFilterComponent], imports: [CommonModule,
57
+ FormsModule,
58
+ ReactiveFormsModule], exports: [FilterDefault,
59
+ DefaultFilter,
60
+ FilterComponent,
61
+ DefaultFilterComponent,
62
+ CustomFilterComponent,
63
+ CheckboxFilterComponent,
64
+ CompleterFilterComponent,
65
+ InputFilterComponent,
66
+ SelectFilterComponent] }); })();
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nMi1zbWFydC10YWJsZS9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVyL2ZpbHRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUVqRCxNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLGFBQWE7SUFDYixhQUFhO0lBQ2IsZUFBZTtJQUNmLHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIsdUJBQXVCO0lBQ3ZCLHdCQUF3QjtJQUN4QixvQkFBb0I7SUFDcEIscUJBQXFCO0NBQ3RCLENBQUM7QUFlRixNQUFNLE9BQU8sWUFBWTs7d0VBQVosWUFBWTs4REFBWixZQUFZO2tFQVhyQixZQUFZO1FBQ1osV0FBVztRQUNYLG1CQUFtQjt1RkFTVixZQUFZO2NBYnhCLFFBQVE7ZUFBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixXQUFXO29CQUNYLG1CQUFtQjtpQkFDcEI7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLEdBQUcsaUJBQWlCO2lCQUNyQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsR0FBRyxpQkFBaUI7aUJBQ3JCO2FBQ0Y7O3dGQUNZLFlBQVksbUJBeEJ2QixhQUFhO1FBQ2IsYUFBYTtRQUNiLGVBQWU7UUFDZixzQkFBc0I7UUFDdEIscUJBQXFCO1FBQ3JCLHVCQUF1QjtRQUN2Qix3QkFBd0I7UUFDeEIsb0JBQW9CO1FBQ3BCLHFCQUFxQixhQUtuQixZQUFZO1FBQ1osV0FBVztRQUNYLG1CQUFtQixhQWZyQixhQUFhO1FBQ2IsYUFBYTtRQUNiLGVBQWU7UUFDZixzQkFBc0I7UUFDdEIscUJBQXFCO1FBQ3JCLHVCQUF1QjtRQUN2Qix3QkFBd0I7UUFDeEIsb0JBQW9CO1FBQ3BCLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWZhdWx0RmlsdGVyQ29tcG9uZW50IH0gZnJvbSBcIi4vZGVmYXVsdC1maWx0ZXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDdXN0b21GaWx0ZXJDb21wb25lbnQgfSBmcm9tIFwiLi9jdXN0b20tZmlsdGVyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ2hlY2tib3hGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL2ZpbHRlci10eXBlcy9jaGVja2JveC1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBsZXRlckZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vZmlsdGVyLXR5cGVzL2NvbXBsZXRlci1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0RmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXItdHlwZXMvaW5wdXQtZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL2ZpbHRlci10eXBlcy9zZWxlY3QtZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWZhdWx0RmlsdGVyIH0gZnJvbSAnLi9maWx0ZXItdHlwZXMvZGVmYXVsdC1maWx0ZXInO1xuaW1wb3J0IHsgRmlsdGVyRGVmYXVsdCB9IGZyb20gJy4vZmlsdGVyLWRlZmF1bHQnO1xuXG5jb25zdCBGSUxURVJfQ09NUE9ORU5UUyA9IFtcbiAgRmlsdGVyRGVmYXVsdCxcbiAgRGVmYXVsdEZpbHRlcixcbiAgRmlsdGVyQ29tcG9uZW50LFxuICBEZWZhdWx0RmlsdGVyQ29tcG9uZW50LFxuICBDdXN0b21GaWx0ZXJDb21wb25lbnQsXG4gIENoZWNrYm94RmlsdGVyQ29tcG9uZW50LFxuICBDb21wbGV0ZXJGaWx0ZXJDb21wb25lbnQsXG4gIElucHV0RmlsdGVyQ29tcG9uZW50LFxuICBTZWxlY3RGaWx0ZXJDb21wb25lbnQsXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIC4uLkZJTFRFUl9DT01QT05FTlRTLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgLi4uRklMVEVSX0NPTVBPTkVOVFMsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlck1vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,284 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { DataSource } from '../../lib/data-source/data-source';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/forms";
6
+ function PagerComponent_nav_0_li_14_span_1_Template(rf, ctx) { if (rf & 1) {
7
+ i0.ɵɵelementStart(0, "span", 14);
8
+ i0.ɵɵtext(1);
9
+ i0.ɵɵelementStart(2, "span", 7);
10
+ i0.ɵɵtext(3, "(current)");
11
+ i0.ɵɵelementEnd()();
12
+ } if (rf & 2) {
13
+ const page_r3 = i0.ɵɵnextContext().$implicit;
14
+ i0.ɵɵadvance(1);
15
+ i0.ɵɵtextInterpolate1("", page_r3, " ");
16
+ } }
17
+ function PagerComponent_nav_0_li_14_a_2_Template(rf, ctx) { if (rf & 1) {
18
+ const _r9 = i0.ɵɵgetCurrentView();
19
+ i0.ɵɵelementStart(0, "a", 15);
20
+ i0.ɵɵlistener("click", function PagerComponent_nav_0_li_14_a_2_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r9); const page_r3 = i0.ɵɵnextContext().$implicit; const ctx_r7 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r7.paginate(page_r3)); });
21
+ i0.ɵɵtext(1);
22
+ i0.ɵɵelementEnd();
23
+ } if (rf & 2) {
24
+ const page_r3 = i0.ɵɵnextContext().$implicit;
25
+ i0.ɵɵadvance(1);
26
+ i0.ɵɵtextInterpolate(page_r3);
27
+ } }
28
+ const _c0 = function (a0) { return { active: a0 }; };
29
+ function PagerComponent_nav_0_li_14_Template(rf, ctx) { if (rf & 1) {
30
+ i0.ɵɵelementStart(0, "li", 4);
31
+ i0.ɵɵtemplate(1, PagerComponent_nav_0_li_14_span_1_Template, 4, 1, "span", 12);
32
+ i0.ɵɵtemplate(2, PagerComponent_nav_0_li_14_a_2_Template, 2, 1, "a", 13);
33
+ i0.ɵɵelementEnd();
34
+ } if (rf & 2) {
35
+ const page_r3 = ctx.$implicit;
36
+ const ctx_r2 = i0.ɵɵnextContext(2);
37
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c0, ctx_r2.getPage() == page_r3));
38
+ i0.ɵɵadvance(1);
39
+ i0.ɵɵproperty("ngIf", ctx_r2.getPage() == page_r3);
40
+ i0.ɵɵadvance(1);
41
+ i0.ɵɵproperty("ngIf", ctx_r2.getPage() != page_r3);
42
+ } }
43
+ const _c1 = function (a0) { return { disabled: a0 }; };
44
+ function PagerComponent_nav_0_Template(rf, ctx) { if (rf & 1) {
45
+ const _r12 = i0.ɵɵgetCurrentView();
46
+ i0.ɵɵelementStart(0, "nav", 2)(1, "ul", 3)(2, "li", 4)(3, "a", 5);
47
+ i0.ɵɵlistener("click", function PagerComponent_nav_0_Template_a_click_3_listener() { i0.ɵɵrestoreView(_r12); const ctx_r11 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r11.getPage() == 1 ? false : ctx_r11.paginate(1)); });
48
+ i0.ɵɵelementStart(4, "span", 6);
49
+ i0.ɵɵtext(5, "\u00AB");
50
+ i0.ɵɵelementEnd();
51
+ i0.ɵɵelementStart(6, "span", 7);
52
+ i0.ɵɵtext(7, "First");
53
+ i0.ɵɵelementEnd()()();
54
+ i0.ɵɵelementStart(8, "li", 4)(9, "a", 8);
55
+ i0.ɵɵlistener("click", function PagerComponent_nav_0_Template_a_click_9_listener() { i0.ɵɵrestoreView(_r12); const ctx_r13 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r13.getPage() == 1 ? false : ctx_r13.prev()); });
56
+ i0.ɵɵelementStart(10, "span", 6);
57
+ i0.ɵɵtext(11, "<");
58
+ i0.ɵɵelementEnd();
59
+ i0.ɵɵelementStart(12, "span", 7);
60
+ i0.ɵɵtext(13, "Prev");
61
+ i0.ɵɵelementEnd()()();
62
+ i0.ɵɵtemplate(14, PagerComponent_nav_0_li_14_Template, 3, 5, "li", 9);
63
+ i0.ɵɵelementStart(15, "li", 4)(16, "a", 10);
64
+ i0.ɵɵlistener("click", function PagerComponent_nav_0_Template_a_click_16_listener() { i0.ɵɵrestoreView(_r12); const ctx_r14 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r14.getPage() == ctx_r14.getLast() ? false : ctx_r14.next()); });
65
+ i0.ɵɵelementStart(17, "span", 6);
66
+ i0.ɵɵtext(18, ">");
67
+ i0.ɵɵelementEnd();
68
+ i0.ɵɵelementStart(19, "span", 7);
69
+ i0.ɵɵtext(20, "Next");
70
+ i0.ɵɵelementEnd()()();
71
+ i0.ɵɵelementStart(21, "li", 4)(22, "a", 11);
72
+ i0.ɵɵlistener("click", function PagerComponent_nav_0_Template_a_click_22_listener() { i0.ɵɵrestoreView(_r12); const ctx_r15 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r15.getPage() == ctx_r15.getLast() ? false : ctx_r15.paginate(ctx_r15.getLast())); });
73
+ i0.ɵɵelementStart(23, "span", 6);
74
+ i0.ɵɵtext(24, "\u00BB");
75
+ i0.ɵɵelementEnd();
76
+ i0.ɵɵelementStart(25, "span", 7);
77
+ i0.ɵɵtext(26, "Last");
78
+ i0.ɵɵelementEnd()()()()();
79
+ } if (rf & 2) {
80
+ const ctx_r0 = i0.ɵɵnextContext();
81
+ i0.ɵɵadvance(2);
82
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(5, _c1, ctx_r0.getPage() == 1));
83
+ i0.ɵɵadvance(6);
84
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c1, ctx_r0.getPage() == 1));
85
+ i0.ɵɵadvance(6);
86
+ i0.ɵɵproperty("ngForOf", ctx_r0.getPages());
87
+ i0.ɵɵadvance(1);
88
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(9, _c1, ctx_r0.getPage() == ctx_r0.getLast()));
89
+ i0.ɵɵadvance(6);
90
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(11, _c1, ctx_r0.getPage() == ctx_r0.getLast()));
91
+ } }
92
+ function PagerComponent_nav_1_option_4_Template(rf, ctx) { if (rf & 1) {
93
+ i0.ɵɵelementStart(0, "option", 20);
94
+ i0.ɵɵtext(1);
95
+ i0.ɵɵelementEnd();
96
+ } if (rf & 2) {
97
+ const item_r17 = ctx.$implicit;
98
+ i0.ɵɵproperty("value", item_r17);
99
+ i0.ɵɵadvance(1);
100
+ i0.ɵɵtextInterpolate(item_r17);
101
+ } }
102
+ function PagerComponent_nav_1_Template(rf, ctx) { if (rf & 1) {
103
+ const _r19 = i0.ɵɵgetCurrentView();
104
+ i0.ɵɵelementStart(0, "nav", 16)(1, "label", 17);
105
+ i0.ɵɵtext(2, " Per Page: ");
106
+ i0.ɵɵelementEnd();
107
+ i0.ɵɵelementStart(3, "select", 18);
108
+ i0.ɵɵlistener("change", function PagerComponent_nav_1_Template_select_change_3_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r18.onChangePerPage($event)); })("ngModelChange", function PagerComponent_nav_1_Template_select_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r20 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r20.currentPerPage = $event); });
109
+ i0.ɵɵtemplate(4, PagerComponent_nav_1_option_4_Template, 2, 2, "option", 19);
110
+ i0.ɵɵelementEnd()();
111
+ } if (rf & 2) {
112
+ const ctx_r1 = i0.ɵɵnextContext();
113
+ i0.ɵɵadvance(3);
114
+ i0.ɵɵproperty("ngModel", ctx_r1.currentPerPage);
115
+ i0.ɵɵadvance(1);
116
+ i0.ɵɵproperty("ngForOf", ctx_r1.perPageSelect);
117
+ } }
118
+ export class PagerComponent {
119
+ constructor() {
120
+ this.perPageSelect = [];
121
+ this.changePage = new EventEmitter();
122
+ this.count = 0;
123
+ }
124
+ ngOnChanges(changes) {
125
+ if (changes.source) {
126
+ if (!changes.source.firstChange) {
127
+ this.dataChangedSub.unsubscribe();
128
+ }
129
+ this.dataChangedSub = this.source.onChanged().subscribe((dataChanges) => {
130
+ this.page = this.source.getPaging().page;
131
+ this.perPage = this.source.getPaging().perPage;
132
+ this.currentPerPage = this.perPage;
133
+ this.count = this.source.count();
134
+ if (this.isPageOutOfBounce()) {
135
+ this.source.setPage(--this.page);
136
+ }
137
+ this.processPageChange(dataChanges);
138
+ this.initPages();
139
+ });
140
+ }
141
+ }
142
+ /**
143
+ * We change the page here depending on the action performed against data source
144
+ * if a new element was added to the end of the table - then change the page to the last
145
+ * if a new element was added to the beginning of the table - then to the first page
146
+ * @param changes
147
+ */
148
+ processPageChange(changes) {
149
+ if (changes['action'] === 'prepend') {
150
+ this.source.setPage(1);
151
+ }
152
+ if (changes['action'] === 'append') {
153
+ this.source.setPage(this.getLast());
154
+ }
155
+ }
156
+ shouldShow() {
157
+ return this.source.count() > this.perPage;
158
+ }
159
+ paginate(page) {
160
+ this.source.setPage(page);
161
+ this.page = page;
162
+ this.changePage.emit({ page });
163
+ return false;
164
+ }
165
+ next() {
166
+ return this.paginate(this.getPage() + 1);
167
+ }
168
+ prev() {
169
+ return this.paginate(this.getPage() - 1);
170
+ }
171
+ getPage() {
172
+ return this.page;
173
+ }
174
+ getPages() {
175
+ return this.pages;
176
+ }
177
+ getLast() {
178
+ return Math.ceil(this.count / this.perPage);
179
+ }
180
+ isPageOutOfBounce() {
181
+ return (this.page * this.perPage) >= (this.count + this.perPage) && this.page > 1;
182
+ }
183
+ initPages() {
184
+ const pagesCount = this.getLast();
185
+ let showPagesCount = 4;
186
+ showPagesCount = pagesCount < showPagesCount ? pagesCount : showPagesCount;
187
+ this.pages = [];
188
+ if (this.shouldShow()) {
189
+ let middleOne = Math.ceil(showPagesCount / 2);
190
+ middleOne = this.page >= middleOne ? this.page : middleOne;
191
+ let lastOne = middleOne + Math.floor(showPagesCount / 2);
192
+ lastOne = lastOne >= pagesCount ? pagesCount : lastOne;
193
+ const firstOne = lastOne - showPagesCount + 1;
194
+ for (let i = firstOne; i <= lastOne; i++) {
195
+ this.pages.push(i);
196
+ }
197
+ }
198
+ }
199
+ onChangePerPage(event) {
200
+ if (this.currentPerPage) {
201
+ if (typeof this.currentPerPage === 'string' && this.currentPerPage.toLowerCase() === 'all') {
202
+ this.source.getPaging().perPage = null;
203
+ }
204
+ else {
205
+ this.source.getPaging().perPage = this.currentPerPage * 1;
206
+ this.source.refresh();
207
+ }
208
+ this.initPages();
209
+ }
210
+ }
211
+ }
212
+ PagerComponent.ɵfac = function PagerComponent_Factory(t) { return new (t || PagerComponent)(); };
213
+ PagerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PagerComponent, selectors: [["ng2-smart-table-pager"]], inputs: { source: "source", perPageSelect: "perPageSelect" }, outputs: { changePage: "changePage" }, features: [i0.ɵɵNgOnChangesFeature], decls: 2, vars: 2, consts: [["class", "ng2-smart-pagination-nav", 4, "ngIf"], ["class", "ng2-smart-pagination-per-page", 4, "ngIf"], [1, "ng2-smart-pagination-nav"], [1, "ng2-smart-pagination", "pagination"], [1, "ng2-smart-page-item", "page-item", 3, "ngClass"], ["href", "#", "aria-label", "First", 1, "ng2-smart-page-link", "page-link", 3, "click"], ["aria-hidden", "true"], [1, "sr-only"], ["href", "#", "aria-label", "Prev", 1, "ng2-smart-page-link", "page-link", "page-link-prev", 3, "click"], ["class", "ng2-smart-page-item page-item", 3, "ngClass", 4, "ngFor", "ngForOf"], ["href", "#", "aria-label", "Next", 1, "ng2-smart-page-link", "page-link", "page-link-next", 3, "click"], ["href", "#", "aria-label", "Last", 1, "ng2-smart-page-link", "page-link", 3, "click"], ["class", "ng2-smart-page-link page-link", 4, "ngIf"], ["class", "ng2-smart-page-link page-link", "href", "#", 3, "click", 4, "ngIf"], [1, "ng2-smart-page-link", "page-link"], ["href", "#", 1, "ng2-smart-page-link", "page-link", 3, "click"], [1, "ng2-smart-pagination-per-page"], ["for", "per-page"], ["id", "per-page", 3, "ngModel", "change", "ngModelChange"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"]], template: function PagerComponent_Template(rf, ctx) { if (rf & 1) {
214
+ i0.ɵɵtemplate(0, PagerComponent_nav_0_Template, 27, 13, "nav", 0);
215
+ i0.ɵɵtemplate(1, PagerComponent_nav_1_Template, 5, 2, "nav", 1);
216
+ } if (rf & 2) {
217
+ i0.ɵɵproperty("ngIf", ctx.shouldShow());
218
+ i0.ɵɵadvance(1);
219
+ i0.ɵɵproperty("ngIf", ctx.perPageSelect && ctx.perPageSelect.length > 0);
220
+ } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgModel], styles: [".ng2-smart-pagination[_ngcontent-%COMP%]{display:inline-flex;font-size:.875em;padding:0}.ng2-smart-pagination[_ngcontent-%COMP%] .sr-only[_ngcontent-%COMP%]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.ng2-smart-pagination[_ngcontent-%COMP%] .ng2-smart-page-item[_ngcontent-%COMP%]{display:inline}.ng2-smart-pagination[_ngcontent-%COMP%] .page-link-next[_ngcontent-%COMP%], .ng2-smart-pagination[_ngcontent-%COMP%] .page-link-prev[_ngcontent-%COMP%]{font-size:10px}[_nghost-%COMP%]{display:flex;justify-content:space-between}[_nghost-%COMP%] select[_ngcontent-%COMP%]{margin:1rem 0 1rem 1rem}[_nghost-%COMP%] label[_ngcontent-%COMP%]{margin:1rem 0 1rem 1rem;line-height:2.5rem}"] });
221
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PagerComponent, [{
222
+ type: Component,
223
+ args: [{ selector: 'ng2-smart-table-pager', template: `
224
+ <nav *ngIf="shouldShow()" class="ng2-smart-pagination-nav">
225
+ <ul class="ng2-smart-pagination pagination">
226
+ <li class="ng2-smart-page-item page-item" [ngClass]="{disabled: getPage() == 1}">
227
+ <a class="ng2-smart-page-link page-link" href="#"
228
+ (click)="getPage() == 1 ? false : paginate(1)" aria-label="First">
229
+ <span aria-hidden="true">&laquo;</span>
230
+ <span class="sr-only">First</span>
231
+ </a>
232
+ </li>
233
+ <li class="ng2-smart-page-item page-item" [ngClass]="{disabled: getPage() == 1}">
234
+ <a class="ng2-smart-page-link page-link page-link-prev" href="#"
235
+ (click)="getPage() == 1 ? false : prev()" aria-label="Prev">
236
+ <span aria-hidden="true">&lt;</span>
237
+ <span class="sr-only">Prev</span>
238
+ </a>
239
+ </li>
240
+ <li class="ng2-smart-page-item page-item"
241
+ [ngClass]="{active: getPage() == page}" *ngFor="let page of getPages()">
242
+ <span class="ng2-smart-page-link page-link"
243
+ *ngIf="getPage() == page">{{ page }} <span class="sr-only">(current)</span></span>
244
+ <a class="ng2-smart-page-link page-link" href="#"
245
+ (click)="paginate(page)" *ngIf="getPage() != page">{{ page }}</a>
246
+ </li>
247
+
248
+ <li class="ng2-smart-page-item page-item"
249
+ [ngClass]="{disabled: getPage() == getLast()}">
250
+ <a class="ng2-smart-page-link page-link page-link-next" href="#"
251
+ (click)="getPage() == getLast() ? false : next()" aria-label="Next">
252
+ <span aria-hidden="true">&gt;</span>
253
+ <span class="sr-only">Next</span>
254
+ </a>
255
+ </li>
256
+
257
+ <li class="ng2-smart-page-item page-item"
258
+ [ngClass]="{disabled: getPage() == getLast()}">
259
+ <a class="ng2-smart-page-link page-link" href="#"
260
+ (click)="getPage() == getLast() ? false : paginate(getLast())" aria-label="Last">
261
+ <span aria-hidden="true">&raquo;</span>
262
+ <span class="sr-only">Last</span>
263
+ </a>
264
+ </li>
265
+ </ul>
266
+ </nav>
267
+
268
+ <nav *ngIf="perPageSelect && perPageSelect.length > 0" class="ng2-smart-pagination-per-page">
269
+ <label for="per-page">
270
+ Per Page:
271
+ </label>
272
+ <select (change)="onChangePerPage($event)" [(ngModel)]="currentPerPage" id="per-page">
273
+ <option *ngFor="let item of perPageSelect" [value]="item">{{ item }}</option>
274
+ </select>
275
+ </nav>
276
+ `, styles: [".ng2-smart-pagination{display:inline-flex;font-size:.875em;padding:0}.ng2-smart-pagination .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.ng2-smart-pagination .ng2-smart-page-item{display:inline}.ng2-smart-pagination .page-link-next,.ng2-smart-pagination .page-link-prev{font-size:10px}:host{display:flex;justify-content:space-between}:host select{margin:1rem 0 1rem 1rem}:host label{margin:1rem 0 1rem 1rem;line-height:2.5rem}\n"] }]
277
+ }], null, { source: [{
278
+ type: Input
279
+ }], perPageSelect: [{
280
+ type: Input
281
+ }], changePage: [{
282
+ type: Output
283
+ }] }); })();
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcyLXNtYXJ0LXRhYmxlL3NyYy9saWIvY29tcG9uZW50cy9wYWdlci9wYWdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFHakcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7OztJQXdCckQsZ0NBQzBCO0lBQUEsWUFBVztJQUFBLCtCQUFzQjtJQUFBLHlCQUFTO0lBQUEsaUJBQU8sRUFBQTs7O0lBQWpELGVBQVc7SUFBWCx1Q0FBVzs7OztJQUNyQyw2QkFDbUQ7SUFBbkQsK01BQVMsZUFBQSx3QkFBYyxDQUFBLElBQUM7SUFBMkIsWUFBVTtJQUFBLGlCQUFJOzs7SUFBZCxlQUFVO0lBQVYsNkJBQVU7Ozs7SUFML0QsNkJBQ3dFO0lBQ3RFLDhFQUNrRjtJQUNsRix3RUFDaUU7SUFDbkUsaUJBQUs7Ozs7SUFMTCxpRkFBdUM7SUFFcEMsZUFBdUI7SUFBdkIsa0RBQXVCO0lBRUUsZUFBdUI7SUFBdkIsa0RBQXVCOzs7OztJQXJCdkQsOEJBQTJELFlBQUEsWUFBQSxXQUFBO0lBSXJELHdKQUFTLGVBQUEsaUJBQVMsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLGlCQUFTLENBQUMsQ0FBQyxDQUFBLElBQUM7SUFDNUMsK0JBQXlCO0lBQUEsc0JBQU87SUFBQSxpQkFBTztJQUN2QywrQkFBc0I7SUFBQSxxQkFBSztJQUFBLGlCQUFPLEVBQUEsRUFBQTtJQUd0Qyw2QkFBaUYsV0FBQTtJQUU1RSx3SkFBUyxlQUFBLGlCQUFTLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxjQUFNLENBQUEsSUFBQztJQUMxQyxnQ0FBeUI7SUFBQSxrQkFBSTtJQUFBLGlCQUFP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RixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDeEM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7Z0JBQzFELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDdkI7WUFDRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDbEI7SUFDSCxDQUFDOzs0RUF2SFUsY0FBYztpRUFBZCxjQUFjO1FBdER2QixpRUEwQ007UUFFTiwrREFPTTs7UUFuREEsdUNBQWtCO1FBNENsQixlQUErQztRQUEvQyx3RUFBK0M7O3VGQVU1QyxjQUFjO2NBMUQxQixTQUFTOzJCQUNFLHVCQUF1QixZQUV2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxRFQ7Z0JBSVEsTUFBTTtrQkFBZCxLQUFLO1lBQ0csYUFBYTtrQkFBckIsS0FBSztZQUVJLFVBQVU7a0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2xpYi9kYXRhLXNvdXJjZS9kYXRhLXNvdXJjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nMi1zbWFydC10YWJsZS1wYWdlcicsXG4gIHN0eWxlVXJsczogWycuL3BhZ2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5hdiAqbmdJZj1cInNob3VsZFNob3coKVwiIGNsYXNzPVwibmcyLXNtYXJ0LXBhZ2luYXRpb24tbmF2XCI+XG4gICAgICA8dWwgY2xhc3M9XCJuZzItc21hcnQtcGFnaW5hdGlvbiBwYWdpbmF0aW9uXCI+XG4gICAgICAgIDxsaSBjbGFzcz1cIm5nMi1zbWFydC1wYWdlLWl0ZW0gcGFnZS1pdGVtXCIgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiBnZXRQYWdlKCkgPT0gMX1cIj5cbiAgICAgICAgICA8YSBjbGFzcz1cIm5nMi1zbWFydC1wYWdlLWxpbmsgcGFnZS1saW5rXCIgaHJlZj1cIiNcIlxuICAgICAgICAgIChjbGljayk9XCJnZXRQYWdlKCkgPT0gMSA/IGZhbHNlIDogcGFnaW5hdGUoMSlcIiBhcmlhLWxhYmVsPVwiRmlyc3RcIj5cbiAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZsYXF1bzs8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5GaXJzdDwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzcz1cIm5nMi1zbWFydC1wYWdlLWl0ZW0gcGFnZS1pdGVtXCIgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiBnZXRQYWdlKCkgPT0gMX1cIj5cbiAgICAgICAgICA8YSBjbGFzcz1cIm5nMi1zbWFydC1wYWdlLWxpbmsgcGFnZS1saW5rIHBhZ2UtbGluay1wcmV2XCIgaHJlZj1cIiNcIlxuICAgICAgICAgICAgIChjbGljayk9XCJnZXRQYWdlKCkgPT0gMSA/IGZhbHNlIDogcHJldigpXCIgYXJpYS1sYWJlbD1cIlByZXZcIj5cbiAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZsdDs8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5QcmV2PC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzPVwibmcyLXNtYXJ0LXBhZ2UtaXRlbSBwYWdlLWl0ZW1cIlxuICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlOiBnZXRQYWdlKCkgPT0gcGFnZX1cIiAqbmdGb3I9XCJsZXQgcGFnZSBvZiBnZXRQYWdlcygpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZzItc21hcnQtcGFnZS1saW5rIHBhZ2UtbGlua1wiXG4gICAgICAgICAgKm5nSWY9XCJnZXRQYWdlKCkgPT0gcGFnZVwiPnt7IHBhZ2UgfX0gPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+KGN1cnJlbnQpPC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICA8YSBjbGFzcz1cIm5nMi1zbWFydC1wYWdlLWxpbmsgcGFnZS1saW5rXCIgaHJlZj1cIiNcIlxuICAgICAgICAgIChjbGljayk9XCJwYWdpbmF0ZShwYWdlKVwiICpuZ0lmPVwiZ2V0UGFnZSgpICE9IHBhZ2VcIj57eyBwYWdlIH19PC9hPlxuICAgICAgICA8L2xpPlxuXG4gICAgICAgIDxsaSBjbGFzcz1cIm5nMi1zbWFydC1wYWdlLWl0ZW0gcGFnZS1pdGVtXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogZ2V0UGFnZSgpID09IGdldExhc3QoKX1cIj5cbiAgICAgICAgICA8YSBjbGFzcz1cIm5nMi1zbWFydC1wYWdlLWxpbmsgcGFnZS1saW5rIHBhZ2UtbGluay1uZXh0XCIgaHJlZj1cIiNcIlxuICAgICAgICAgICAgIChjbGljayk9XCJnZXRQYWdlKCkgPT0gZ2V0TGFzdCgpID8gZmFsc2UgOiBuZXh0KClcIiBhcmlhLWxhYmVsPVwiTmV4dFwiPlxuICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+Jmd0Ozwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPk5leHQ8L3NwYW4+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgICBcbiAgICAgICAgPGxpIGNsYXNzPVwibmcyLXNtYXJ0LXBhZ2UtaXRlbSBwYWdlLWl0ZW1cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6IGdldFBhZ2UoKSA9PSBnZXRMYXN0KCl9XCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJuZzItc21hcnQtcGFnZS1saW5rIHBhZ2UtbGlua1wiIGhyZWY9XCIjXCJcbiAgICAgICAgICAoY2xpY2spPVwiZ2V0UGFnZSgpID09IGdldExhc3QoKSA/IGZhbHNlIDogcGFnaW5hdGUoZ2V0TGFzdCgpKVwiIGFyaWEtbGFiZWw9XCJMYXN0XCI+XG4gICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mcmFxdW87PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+TGFzdDwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvbmF2PlxuICAgIFxuICAgIDxuYXYgKm5nSWY9XCJwZXJQYWdlU2VsZWN0ICYmIHBlclBhZ2VTZWxlY3QubGVuZ3RoID4gMFwiIGNsYXNzPVwibmcyLXNtYXJ0LXBhZ2luYXRpb24tcGVyLXBhZ2VcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJwZXItcGFnZVwiPlxuICAgICAgICBQZXIgUGFnZTpcbiAgICAgIDwvbGFiZWw+XG4gICAgICA8c2VsZWN0IChjaGFuZ2UpPVwib25DaGFuZ2VQZXJQYWdlKCRldmVudClcIiBbKG5nTW9kZWwpXT1cImN1cnJlbnRQZXJQYWdlXCIgaWQ9XCJwZXItcGFnZVwiPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIHBlclBhZ2VTZWxlY3RcIiBbdmFsdWVdPVwiaXRlbVwiPnt7IGl0ZW0gfX08L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvbmF2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KCkgc291cmNlOiBEYXRhU291cmNlO1xuICBASW5wdXQoKSBwZXJQYWdlU2VsZWN0OiBhbnlbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2VQYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY3VycmVudFBlclBhZ2U6IGFueTtcblxuICBwcm90ZWN0ZWQgcGFnZXM6IEFycmF5PGFueT47XG4gIHByb3RlY3RlZCBwYWdlOiBudW1iZXI7XG4gIHByb3RlY3RlZCBjb3VudDogbnVtYmVyID0gMDtcbiAgcHJvdGVjdGVkIHBlclBhZ2U6IG51bWJlcjtcblxuICBwcm90ZWN0ZWQgZGF0YUNoYW5nZWRTdWI6IFN1YnNjcmlwdGlvbjtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuc291cmNlKSB7XG4gICAgICBpZiAoIWNoYW5nZXMuc291cmNlLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgIHRoaXMuZGF0YUNoYW5nZWRTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YUNoYW5nZWRTdWIgPSB0aGlzLnNvdXJjZS5vbkNoYW5nZWQoKS5zdWJzY3JpYmUoKGRhdGFDaGFuZ2VzKSA9PiB7XG4gICAgICAgIHRoaXMucGFnZSA9IHRoaXMuc291cmNlLmdldFBhZ2luZygpLnBhZ2U7XG4gICAgICAgIHRoaXMucGVyUGFnZSA9IHRoaXMuc291cmNlLmdldFBhZ2luZygpLnBlclBhZ2U7XG4gICAgICAgIHRoaXMuY3VycmVudFBlclBhZ2UgPSB0aGlzLnBlclBhZ2U7XG4gICAgICAgIHRoaXMuY291bnQgPSB0aGlzLnNvdXJjZS5jb3VudCgpO1xuICAgICAgICBpZiAodGhpcy5pc1BhZ2VPdXRPZkJvdW5jZSgpKSB7XG4gICAgICAgICAgdGhpcy5zb3VyY2Uuc2V0UGFnZSgtLXRoaXMucGFnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByb2Nlc3NQYWdlQ2hhbmdlKGRhdGFDaGFuZ2VzKTtcbiAgICAgICAgdGhpcy5pbml0UGFnZXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXZSBjaGFuZ2UgdGhlIHBhZ2UgaGVyZSBkZXBlbmRpbmcgb24gdGhlIGFjdGlvbiBwZXJmb3JtZWQgYWdhaW5zdCBkYXRhIHNvdXJjZVxuICAgKiBpZiBhIG5ldyBlbGVtZW50IHdhcyBhZGRlZCB0byB0aGUgZW5kIG9mIHRoZSB0YWJsZSAtIHRoZW4gY2hhbmdlIHRoZSBwYWdlIHRvIHRoZSBsYXN0XG4gICAqIGlmIGEgbmV3IGVsZW1lbnQgd2FzIGFkZGVkIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRhYmxlIC0gdGhlbiB0byB0aGUgZmlyc3QgcGFnZVxuICAgKiBAcGFyYW0gY2hhbmdlc1xuICAgKi9cbiAgcHJvY2Vzc1BhZ2VDaGFuZ2UoY2hhbmdlczogYW55KSB7XG4gICAgaWYgKGNoYW5nZXNbJ2FjdGlvbiddID09PSAncHJlcGVuZCcpIHtcbiAgICAgIHRoaXMuc291cmNlLnNldFBhZ2UoMSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydhY3Rpb24nXSA9PT0gJ2FwcGVuZCcpIHtcbiAgICAgIHRoaXMuc291cmNlLnNldFBhZ2UodGhpcy5nZXRMYXN0KCkpO1xuICAgIH1cbiAgfVxuXG4gIHNob3VsZFNob3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLmNvdW50KCkgPiB0aGlzLnBlclBhZ2U7XG4gIH1cblxuICBwYWdpbmF0ZShwYWdlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICB0aGlzLnNvdXJjZS5zZXRQYWdlKHBhZ2UpO1xuICAgIHRoaXMucGFnZSA9IHBhZ2U7XG4gICAgdGhpcy5jaGFuZ2VQYWdlLmVtaXQoeyBwYWdlIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIG5leHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGFnaW5hdGUodGhpcy5nZXRQYWdlKCkgKyAxKTtcbiAgfVxuXG4gIHByZXYoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGFnaW5hdGUodGhpcy5nZXRQYWdlKCkgLSAxKTtcbiAgfVxuXG4gIGdldFBhZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlO1xuICB9XG5cbiAgZ2V0UGFnZXMoKTogQXJyYXk8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucGFnZXM7XG4gIH1cblxuICBnZXRMYXN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLmNvdW50IC8gdGhpcy5wZXJQYWdlKTtcbiAgfVxuXG4gIGlzUGFnZU91dE9mQm91bmNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5wYWdlICogdGhpcy5wZXJQYWdlKSA+PSAodGhpcy5jb3VudCArIHRoaXMucGVyUGFnZSkgJiYgdGhpcy5wYWdlID4gMTtcbiAgfVxuXG4gIGluaXRQYWdlcygpIHtcbiAgICBjb25zdCBwYWdlc0NvdW50ID0gdGhpcy5nZXRMYXN0KCk7XG4gICAgbGV0IHNob3dQYWdlc0NvdW50ID0gNDtcbiAgICBzaG93UGFnZXNDb3VudCA9IHBhZ2VzQ291bnQgPCBzaG93UGFnZXNDb3VudCA/IHBhZ2VzQ291bnQgOiBzaG93UGFnZXNDb3VudDtcbiAgICB0aGlzLnBhZ2VzID0gW107XG5cbiAgICBpZiAodGhpcy5zaG91bGRTaG93KCkpIHtcblxuICAgICAgbGV0IG1pZGRsZU9uZSA9IE1hdGguY2VpbChzaG93UGFnZXNDb3VudCAvIDIpO1xuICAgICAgbWlkZGxlT25lID0gdGhpcy5wYWdlID49IG1pZGRsZU9uZSA/IHRoaXMucGFnZSA6IG1pZGRsZU9uZTtcblxuICAgICAgbGV0IGxhc3RPbmUgPSBtaWRkbGVPbmUgKyBNYXRoLmZsb29yKHNob3dQYWdlc0NvdW50IC8gMik7XG4gICAgICBsYXN0T25lID0gbGFzdE9uZSA+PSBwYWdlc0NvdW50ID8gcGFnZXNDb3VudCA6IGxhc3RPbmU7XG5cbiAgICAgIGNvbnN0IGZpcnN0T25lID0gbGFzdE9uZSAtIHNob3dQYWdlc0NvdW50ICsgMTtcblxuICAgICAgZm9yIChsZXQgaSA9IGZpcnN0T25lOyBpIDw9IGxhc3RPbmU7IGkrKykge1xuICAgICAgICB0aGlzLnBhZ2VzLnB1c2goaSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2VQZXJQYWdlKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50UGVyUGFnZSkge1xuXG4gICAgICBpZiAodHlwZW9mIHRoaXMuY3VycmVudFBlclBhZ2UgPT09ICdzdHJpbmcnICYmIHRoaXMuY3VycmVudFBlclBhZ2UudG9Mb3dlckNhc2UoKSA9PT0gJ2FsbCcpIHtcbiAgICAgICAgdGhpcy5zb3VyY2UuZ2V0UGFnaW5nKCkucGVyUGFnZSA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNvdXJjZS5nZXRQYWdpbmcoKS5wZXJQYWdlID0gdGhpcy5jdXJyZW50UGVyUGFnZSAqIDE7XG4gICAgICAgIHRoaXMuc291cmNlLnJlZnJlc2goKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW5pdFBhZ2VzKCk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==