@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.
- package/esm2020/den4ik92-ng2-smart-table.mjs +5 -0
- package/esm2020/lib/components/cell/cell-edit-mode/custom-edit.component.mjs +50 -0
- package/esm2020/lib/components/cell/cell-edit-mode/default-edit.component.mjs +84 -0
- package/esm2020/lib/components/cell/cell-edit-mode/edit-cell-default.mjs +35 -0
- package/esm2020/lib/components/cell/cell-edit-mode/edit-cell.component.mjs +75 -0
- package/esm2020/lib/components/cell/cell-editors/checkbox-editor.component.mjs +37 -0
- package/esm2020/lib/components/cell/cell-editors/completer-editor.component.mjs +38 -0
- package/esm2020/lib/components/cell/cell-editors/default-editor.mjs +29 -0
- package/esm2020/lib/components/cell/cell-editors/input-editor.component.mjs +33 -0
- package/esm2020/lib/components/cell/cell-editors/select-editor.component.mjs +55 -0
- package/esm2020/lib/components/cell/cell-editors/textarea-editor.component.mjs +35 -0
- package/esm2020/lib/components/cell/cell-view-mode/custom-view.component.mjs +63 -0
- package/esm2020/lib/components/cell/cell-view-mode/view-cell.component.mjs +59 -0
- package/esm2020/lib/components/cell/cell-view-mode/view-cell.mjs +2 -0
- package/esm2020/lib/components/cell/cell.component.mjs +82 -0
- package/esm2020/lib/components/cell/cell.module.mjs +80 -0
- package/esm2020/lib/components/filter/custom-filter.component.mjs +53 -0
- package/esm2020/lib/components/filter/default-filter.component.mjs +100 -0
- package/esm2020/lib/components/filter/filter-default.mjs +35 -0
- package/esm2020/lib/components/filter/filter-types/checkbox-filter.component.mjs +65 -0
- package/esm2020/lib/components/filter/filter-types/completer-filter.component.mjs +52 -0
- package/esm2020/lib/components/filter/filter-types/default-filter.mjs +34 -0
- package/esm2020/lib/components/filter/filter-types/input-filter.component.mjs +51 -0
- package/esm2020/lib/components/filter/filter-types/select-filter.component.mjs +71 -0
- package/esm2020/lib/components/filter/filter.component.mjs +91 -0
- package/esm2020/lib/components/filter/filter.module.mjs +67 -0
- package/esm2020/lib/components/pager/pager.component.mjs +284 -0
- package/esm2020/lib/components/pager/pager.module.mjs +29 -0
- package/esm2020/lib/components/tbody/cells/create-cancel.component.mjs +52 -0
- package/esm2020/lib/components/tbody/cells/custom.component.mjs +56 -0
- package/esm2020/lib/components/tbody/cells/edit-delete.component.mjs +103 -0
- package/esm2020/lib/components/tbody/tbody.component.mjs +206 -0
- package/esm2020/lib/components/tbody/tbody.module.mjs +48 -0
- package/esm2020/lib/components/thead/cells/actions-title.component.mjs +36 -0
- package/esm2020/lib/components/thead/cells/actions.component.mjs +44 -0
- package/esm2020/lib/components/thead/cells/add-button.component.mjs +63 -0
- package/esm2020/lib/components/thead/cells/checkbox-select-all.component.mjs +28 -0
- package/esm2020/lib/components/thead/cells/column-title.component.mjs +37 -0
- package/esm2020/lib/components/thead/cells/title/title.component.mjs +100 -0
- package/esm2020/lib/components/thead/rows/thead-filters-row.component.mjs +105 -0
- package/esm2020/lib/components/thead/rows/thead-form-row.component.mjs +108 -0
- package/esm2020/lib/components/thead/rows/thead-titles-row.component.mjs +103 -0
- package/esm2020/lib/components/thead/thead.component.mjs +76 -0
- package/esm2020/lib/components/thead/thead.module.mjs +76 -0
- package/esm2020/lib/lib/data-set/cell.mjs +41 -0
- package/esm2020/lib/lib/data-set/column.mjs +75 -0
- package/esm2020/lib/lib/data-set/data-set.mjs +98 -0
- package/esm2020/lib/lib/data-set/row.mjs +46 -0
- package/esm2020/lib/lib/data-source/data-source.mjs +101 -0
- package/esm2020/lib/lib/data-source/local/local.data-source.mjs +228 -0
- package/esm2020/lib/lib/data-source/local/local.filter.mjs +13 -0
- package/esm2020/lib/lib/data-source/local/local.pager.mjs +6 -0
- package/esm2020/lib/lib/data-source/local/local.sorter.mjs +19 -0
- package/esm2020/lib/lib/data-source/server/server-source.conf.mjs +20 -0
- package/esm2020/lib/lib/data-source/server/server.data-source.mjs +93 -0
- package/esm2020/lib/lib/grid.mjs +220 -0
- package/esm2020/lib/lib/helpers.mjs +84 -0
- package/esm2020/lib/lib/interfaces/smart-table.models.mjs +2 -0
- package/esm2020/lib/ng2-smart-table.component.mjs +203 -0
- package/esm2020/lib/ng2-smart-table.module.mjs +52 -0
- package/esm2020/public-api.mjs +8 -0
- package/fesm2015/den4ik92-ng2-smart-table.mjs +4329 -0
- package/fesm2015/den4ik92-ng2-smart-table.mjs.map +1 -0
- package/fesm2020/den4ik92-ng2-smart-table.mjs +3949 -0
- package/fesm2020/den4ik92-ng2-smart-table.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/cell/cell-edit-mode/custom-edit.component.d.ts +13 -0
- package/lib/components/cell/cell-edit-mode/default-edit.component.d.ts +8 -0
- package/lib/components/cell/cell-edit-mode/edit-cell-default.d.ts +13 -0
- package/lib/components/cell/cell-edit-mode/edit-cell.component.d.ts +12 -0
- package/lib/components/cell/cell-editors/checkbox-editor.component.d.ts +8 -0
- package/lib/components/cell/cell-editors/completer-editor.component.d.ts +13 -0
- package/lib/components/cell/cell-editors/default-editor.d.ts +19 -0
- package/lib/components/cell/cell-editors/input-editor.component.d.ts +7 -0
- package/lib/components/cell/cell-editors/select-editor.component.d.ts +7 -0
- package/lib/components/cell/cell-editors/textarea-editor.component.d.ts +7 -0
- package/lib/components/cell/cell-view-mode/custom-view.component.d.ts +19 -0
- package/lib/components/cell/cell-view-mode/view-cell.component.d.ts +7 -0
- package/lib/components/cell/cell-view-mode/view-cell.d.ts +4 -0
- package/lib/components/cell/cell.component.d.ts +20 -0
- package/lib/components/cell/cell.module.d.ts +21 -0
- package/lib/components/filter/custom-filter.component.d.ts +14 -0
- package/lib/components/filter/default-filter.component.d.ts +7 -0
- package/lib/components/filter/filter-default.d.ts +14 -0
- package/lib/components/filter/filter-types/checkbox-filter.component.d.ts +13 -0
- package/lib/components/filter/filter-types/completer-filter.component.d.ts +12 -0
- package/lib/components/filter/filter-types/default-filter.d.ts +24 -0
- package/lib/components/filter/filter-types/input-filter.component.d.ts +12 -0
- package/lib/components/filter/filter-types/select-filter.component.d.ts +11 -0
- package/lib/components/filter/filter.component.d.ts +11 -0
- package/lib/components/filter/filter.module.d.ts +17 -0
- package/lib/components/pager/pager.component.d.ts +35 -0
- package/lib/components/pager/pager.module.d.ts +9 -0
- package/lib/components/tbody/cells/create-cancel.component.d.ts +16 -0
- package/lib/components/tbody/cells/custom.component.d.ts +13 -0
- package/lib/components/tbody/cells/edit-delete.component.d.ts +24 -0
- package/lib/components/tbody/tbody.component.d.ts +37 -0
- package/lib/components/tbody/tbody.module.d.ts +13 -0
- package/lib/components/thead/cells/actions-title.component.d.ts +13 -0
- package/lib/components/thead/cells/actions.component.d.ts +12 -0
- package/lib/components/thead/cells/add-button.component.d.ts +18 -0
- package/lib/components/thead/cells/checkbox-select-all.component.d.ts +9 -0
- package/lib/components/thead/cells/column-title.component.d.ts +11 -0
- package/lib/components/thead/cells/title/title.component.d.ts +17 -0
- package/lib/components/thead/rows/thead-filters-row.component.d.ts +19 -0
- package/lib/components/thead/rows/thead-form-row.component.d.ts +20 -0
- package/lib/components/thead/rows/thead-titles-row.component.d.ts +18 -0
- package/lib/components/thead/thead.component.d.ts +18 -0
- package/lib/components/thead/thead.module.d.ts +20 -0
- package/lib/lib/data-set/cell.d.ts +20 -0
- package/lib/lib/data-set/column.d.ts +44 -0
- package/lib/lib/data-set/data-set.d.ts +37 -0
- package/lib/lib/data-set/row.d.ts +20 -0
- package/lib/lib/data-source/data-source.d.ts +35 -0
- package/lib/lib/data-source/local/local.data-source.d.ts +55 -0
- package/lib/lib/data-source/local/local.filter.d.ts +4 -0
- package/lib/lib/data-source/local/local.pager.d.ts +3 -0
- package/lib/lib/data-source/local/local.sorter.d.ts +4 -0
- package/lib/lib/data-source/server/server-source.conf.d.ts +27 -0
- package/lib/lib/data-source/server/server.data-source.d.ts +30 -0
- package/lib/lib/grid.d.ts +49 -0
- package/lib/lib/helpers.d.ts +18 -0
- package/lib/lib/interfaces/smart-table.models.d.ts +148 -0
- package/lib/ng2-smart-table.component.d.ts +43 -0
- package/lib/ng2-smart-table.module.d.ts +14 -0
- package/package.json +35 -0
- 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">«</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"><</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">></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">»</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==
|