@theseam/ui-common 0.4.26 → 0.4.28-beta.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/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +1 -1
- package/datatable/datatable/datatable.component.d.ts +60 -9
- package/datatable/datatable-column-filter-menu/datatable-column-filter-menu.component.d.ts +25 -0
- package/datatable/datatable-column-filter-search-date/datatable-column-filter-search-date.component.d.ts +18 -0
- package/datatable/datatable-column-filter-search-numeric/datatable-column-filter-search-numeric.component.d.ts +16 -0
- package/datatable/datatable-column-filter-search-text/datatable-column-filter-search-text.component.d.ts +15 -0
- package/datatable/datatable-menu-bar/datatable-menu-bar.component.d.ts +2 -2
- package/datatable/datatable.module.d.ts +29 -20
- package/datatable/directives/datatable-column-filter-tpl.directive.d.ts +8 -0
- package/datatable/directives/datatable-column-filter.directive.d.ts +10 -0
- package/datatable/models/action-item-column-position.d.ts +13 -0
- package/datatable/models/columns-data-filter.d.ts +57 -0
- package/datatable/models/columns-data-filters/models.d.ts +65 -0
- package/datatable/models/columns-data-filters/search-date.columns-data-filter.d.ts +23 -0
- package/datatable/models/columns-data-filters/search-numeric.columns-data-filter.d.ts +22 -0
- package/datatable/models/columns-data-filters/search-text.columns-data-filter.d.ts +21 -0
- package/datatable/models/columns-data-filters/utils.d.ts +15 -0
- package/datatable/models/datatable-config.d.ts +90 -0
- package/datatable/models/table-column.d.ts +22 -1
- package/datatable/public-api.d.ts +14 -0
- package/datatable/services/columns-filters.service.d.ts +29 -0
- package/datatable/services/columns-manager.service.d.ts +7 -0
- package/datatable/utils/create-action-menu-column.d.ts +1 -1
- package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +2 -2
- package/esm2020/datatable/datatable/datatable.component.mjs +231 -31
- package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +2 -2
- package/esm2020/datatable/datatable-column-filter-menu/datatable-column-filter-menu.component.mjs +55 -0
- package/esm2020/datatable/datatable-column-filter-search-date/datatable-column-filter-search-date.component.mjs +54 -0
- package/esm2020/datatable/datatable-column-filter-search-numeric/datatable-column-filter-search-numeric.component.mjs +48 -0
- package/esm2020/datatable/datatable-column-filter-search-text/datatable-column-filter-search-text.component.mjs +44 -0
- package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
- package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
- package/esm2020/datatable/datatable-menu-bar/datatable-menu-bar.component.mjs +1 -1
- package/esm2020/datatable/datatable.module.mjs +49 -7
- package/esm2020/datatable/directives/datatable-column-filter-tpl.directive.mjs +16 -0
- package/esm2020/datatable/directives/datatable-column-filter.directive.mjs +26 -0
- package/esm2020/datatable/models/action-item-column-position.mjs +5 -0
- package/esm2020/datatable/models/columns-data-filter.mjs +10 -0
- package/esm2020/datatable/models/columns-data-filters/models.mjs +74 -0
- package/esm2020/datatable/models/columns-data-filters/search-date.columns-data-filter.mjs +113 -0
- package/esm2020/datatable/models/columns-data-filters/search-numeric.columns-data-filter.mjs +104 -0
- package/esm2020/datatable/models/columns-data-filters/search-text.columns-data-filter.mjs +86 -0
- package/esm2020/datatable/models/columns-data-filters/utils.mjs +28 -0
- package/esm2020/datatable/models/datatable-config.mjs +3 -0
- package/esm2020/datatable/models/table-column.mjs +1 -1
- package/esm2020/datatable/public-api.mjs +15 -1
- package/esm2020/datatable/services/columns-filters.service.mjs +109 -0
- package/esm2020/datatable/services/columns-manager.service.mjs +27 -2
- package/esm2020/datatable/utils/create-action-menu-column.mjs +4 -3
- package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
- package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +1 -1
- package/esm2020/framework/base-layout/base-layout.component.mjs +14 -4
- package/esm2020/framework/base-layout/base-layout.module.mjs +6 -1
- package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +21 -5
- package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +16 -0
- package/esm2020/framework/base-layout/index.mjs +2 -1
- package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +55 -0
- package/esm2020/framework/nav/index.mjs +6 -0
- package/esm2020/framework/nav/nav-item/nav-item.component.mjs +227 -0
- package/esm2020/framework/nav/nav-utils.mjs +107 -0
- package/esm2020/framework/nav/nav.models.mjs +2 -0
- package/esm2020/framework/nav/nav.module.mjs +67 -0
- package/esm2020/framework/nav/nav.service.mjs +204 -0
- package/esm2020/framework/public-api.mjs +2 -1
- package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +2 -2
- package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +28 -67
- package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +12 -5
- package/esm2020/framework/side-nav/side-nav.component.mjs +116 -38
- package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
- package/esm2020/framework/side-nav/side-nav.module.mjs +9 -39
- package/esm2020/framework/side-nav/side-nav.service.mjs +1 -1
- package/esm2020/framework/top-bar/index.mjs +3 -1
- package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +16 -0
- package/esm2020/framework/top-bar/top-bar-item.directive.mjs +10 -4
- package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +6 -4
- package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +16 -0
- package/esm2020/framework/top-bar/top-bar.component.mjs +55 -11
- package/esm2020/framework/top-bar/top-bar.module.mjs +15 -5
- package/esm2020/graphql/datatable/datatable-graphql.service.mjs +1 -1
- package/esm2020/graphql/datatable/index.mjs +4 -1
- package/esm2020/graphql/datatable/map-filter-states.mjs +1 -1
- package/esm2020/graphql/datatable/map-search-date-columns-data-filter-state-to-gql.mjs +139 -0
- package/esm2020/graphql/datatable/map-search-numeric-columns-data-filter-state-to-gql.mjs +75 -0
- package/esm2020/graphql/datatable/map-search-text-columns-data-filter-state-to-gql.mjs +44 -0
- package/esm2020/layout/layout.service.mjs +12 -2
- package/esm2020/menu/menu-toggle.directive.mjs +7 -2
- package/esm2020/popover/popover/popover.component.mjs +7 -3
- package/esm2020/popover/popover.directive.mjs +6 -2
- package/esm2020/rich-text/public-api.mjs +1 -1
- package/esm2020/rich-text/rich-text/rich-text.component.mjs +24 -3
- package/esm2020/rich-text/utils/models.mjs +1 -1
- package/esm2020/rich-text/utils/utils.mjs +1 -1
- package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +5 -3
- package/fesm2015/theseam-ui-common-breadcrumbs.mjs +2 -2
- package/fesm2015/theseam-ui-common-breadcrumbs.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +2 -2
- package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-datatable.mjs +1025 -62
- package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-framework.mjs +905 -156
- package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-graphql.mjs +254 -1
- package/fesm2015/theseam-ui-common-graphql.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-layout.mjs +11 -2
- package/fesm2015/theseam-ui-common-layout.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-menu.mjs +6 -1
- package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-popover.mjs +11 -3
- package/fesm2015/theseam-ui-common-popover.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-rich-text.mjs +25 -2
- package/fesm2015/theseam-ui-common-rich-text.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-table-cell-types.mjs +4 -2
- package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-breadcrumbs.mjs +2 -2
- package/fesm2020/theseam-ui-common-breadcrumbs.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +2 -2
- package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-datatable.mjs +1010 -62
- package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-framework.mjs +907 -156
- package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-graphql.mjs +254 -1
- package/fesm2020/theseam-ui-common-graphql.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-layout.mjs +11 -2
- package/fesm2020/theseam-ui-common-layout.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-menu.mjs +6 -1
- package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-popover.mjs +11 -3
- package/fesm2020/theseam-ui-common-popover.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-rich-text.mjs +23 -2
- package/fesm2020/theseam-ui-common-rich-text.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-table-cell-types.mjs +4 -2
- package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
- package/framework/base-layout/base-layout.component.d.ts +4 -2
- package/framework/base-layout/base-layout.component.scss +18 -10
- package/framework/base-layout/base-layout.module.d.ts +11 -10
- package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +8 -3
- package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +9 -0
- package/framework/base-layout/index.d.ts +1 -0
- package/framework/base-layout/styles/_variables.scss +21 -0
- package/framework/nav/_nav-theme.scss +4 -0
- package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +25 -0
- package/framework/nav/horizontal-nav/horizontal-nav.component.scss +50 -0
- package/framework/nav/index.d.ts +5 -0
- package/framework/nav/nav-item/nav-item.component.d.ts +74 -0
- package/framework/nav/nav-item/nav-item.component.scss +203 -0
- package/framework/nav/nav-utils.d.ts +20 -0
- package/framework/nav/nav.models.d.ts +77 -0
- package/framework/nav/nav.module.d.ts +17 -0
- package/framework/nav/nav.service.d.ts +27 -0
- package/framework/nav/styles/_themes/light/_variables.scss +56 -0
- package/framework/nav/styles/_themes/primary/_variables.scss +56 -0
- package/framework/nav/styles/_utilities.scss +3 -0
- package/framework/nav/styles/_variables.scss +2 -0
- package/framework/public-api.d.ts +1 -0
- package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +7 -14
- package/framework/side-nav/side-nav-item/side-nav-item.component.scss +7 -5
- package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +5 -3
- package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +3 -6
- package/framework/side-nav/side-nav.component.d.ts +13 -1
- package/framework/side-nav/side-nav.component.scss +0 -1
- package/framework/side-nav/side-nav.models.d.ts +7 -1
- package/framework/side-nav/side-nav.module.d.ts +1 -9
- package/framework/side-nav/styles/_themes/light/_variables.scss +24 -14
- package/framework/side-nav/styles/_themes/primary/_variables.scss +8 -0
- package/framework/top-bar/index.d.ts +2 -0
- package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +8 -0
- package/framework/top-bar/top-bar-item.directive.d.ts +4 -1
- package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +5 -2
- package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +8 -0
- package/framework/top-bar/top-bar.component.d.ts +25 -3
- package/framework/top-bar/top-bar.component.scss +7 -2
- package/framework/top-bar/top-bar.module.d.ts +10 -8
- package/graphql/datatable/datatable-graphql.service.d.ts +1 -1
- package/graphql/datatable/index.d.ts +3 -0
- package/graphql/datatable/map-filter-states.d.ts +2 -2
- package/graphql/datatable/map-search-date-columns-data-filter-state-to-gql.d.ts +4 -0
- package/graphql/datatable/map-search-numeric-columns-data-filter-state-to-gql.d.ts +4 -0
- package/graphql/datatable/map-search-text-columns-data-filter-state-to-gql.d.ts +4 -0
- package/layout/layout.service.d.ts +9 -1
- package/menu/menu-toggle.directive.d.ts +2 -1
- package/package.json +2 -2
- package/popover/popover/popover.component.d.ts +4 -1
- package/popover/popover.directive.d.ts +2 -1
- package/rich-text/rich-text/rich-text.component.d.ts +6 -4
- package/styles/vendor/ngx-datatable/_ngx-datatable.scss +83 -14
- package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +38 -3
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { ColumnsDataFilter } from "../columns-data-filter";
|
|
2
|
+
import { FormControl, FormGroup } from "@angular/forms";
|
|
3
|
+
import { isNullOrUndefined, isNullOrUndefinedOrEmpty, notNullOrUndefined, notNullOrUndefinedOrEmpty } from "@theseam/ui-common/utils";
|
|
4
|
+
import { Subject, map, startWith } from "rxjs";
|
|
5
|
+
import { THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SELECT_SEARCH_TYPES } from "./models";
|
|
6
|
+
export class SearchNumericColumnsDataFilter extends ColumnsDataFilter {
|
|
7
|
+
constructor(prop, initialValue, column) {
|
|
8
|
+
super(prop, initialValue, column);
|
|
9
|
+
this.name = THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME;
|
|
10
|
+
this._updateFilterValue = new Subject;
|
|
11
|
+
this.form = new FormGroup({
|
|
12
|
+
searchType: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchType : 'eq'),
|
|
13
|
+
searchText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchText : null),
|
|
14
|
+
fromText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.fromText : null),
|
|
15
|
+
toText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.toText : null),
|
|
16
|
+
});
|
|
17
|
+
this.uid = `${this.name}--${prop}`;
|
|
18
|
+
this.filterStateChanges = this._updateFilterValue.pipe(startWith(undefined), map(() => this.filterState()));
|
|
19
|
+
}
|
|
20
|
+
dataFilter(data, filterValue, options) {
|
|
21
|
+
if (isNullOrUndefined(filterValue) || this.isDefault()) {
|
|
22
|
+
return data;
|
|
23
|
+
}
|
|
24
|
+
return this.numberSearchDataFilter(this.prop, data, filterValue.searchText, filterValue.fromText, filterValue.toText, filterValue.searchType || null);
|
|
25
|
+
}
|
|
26
|
+
_isInvalidSearchTerm(searchText, fromText, toText, comparator) {
|
|
27
|
+
if (isNaN(searchText) && THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES.includes(comparator)) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
else if ((isNaN(fromText) || isNaN(toText)) && THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES.includes(comparator)) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
numberSearchDataFilter(prop, data, text, fromText, toText, comparator) {
|
|
36
|
+
if (!data || data.length <= 0 || isNullOrUndefined(comparator)) {
|
|
37
|
+
console.warn('No filter applied - invalid options.');
|
|
38
|
+
return data;
|
|
39
|
+
}
|
|
40
|
+
const textNumeric = notNullOrUndefinedOrEmpty(text) ? parseFloat(text) : NaN;
|
|
41
|
+
const toTextNumeric = notNullOrUndefinedOrEmpty(toText) ? parseFloat(toText) : NaN;
|
|
42
|
+
const fromTextNumeric = notNullOrUndefinedOrEmpty(fromText) ? parseFloat(fromText) : NaN;
|
|
43
|
+
if (this._isInvalidSearchTerm(textNumeric, fromTextNumeric, toTextNumeric, comparator)) {
|
|
44
|
+
console.warn('No filter applied - invalid search terms.');
|
|
45
|
+
return data;
|
|
46
|
+
}
|
|
47
|
+
return data.filter(item => {
|
|
48
|
+
let propNumeric = parseFloat(item[prop]);
|
|
49
|
+
if ((comparator === 'blank' && (isNullOrUndefined(item[prop]) || isNullOrUndefinedOrEmpty(`${item[prop]}`))) ||
|
|
50
|
+
(comparator === 'not-blank' && notNullOrUndefined(item[prop]) && notNullOrUndefinedOrEmpty(`${item[prop]}`)) ||
|
|
51
|
+
(comparator === 'lt' && propNumeric < textNumeric) ||
|
|
52
|
+
(comparator === 'lte' && propNumeric <= textNumeric) ||
|
|
53
|
+
(comparator === 'gt' && propNumeric > textNumeric) ||
|
|
54
|
+
(comparator === 'gte' && propNumeric >= textNumeric) ||
|
|
55
|
+
(comparator === 'eq' && propNumeric === textNumeric) ||
|
|
56
|
+
(comparator === 'between' && propNumeric >= fromTextNumeric && propNumeric <= toTextNumeric) ||
|
|
57
|
+
(comparator === 'not-between' && !(propNumeric >= fromTextNumeric && propNumeric <= toTextNumeric))) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
return false;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
filter(data) {
|
|
64
|
+
return this._updateFilterValue.pipe(startWith(undefined), map(() => this.dataFilter(data, this.form.value, undefined)));
|
|
65
|
+
}
|
|
66
|
+
filterState() {
|
|
67
|
+
return {
|
|
68
|
+
name: this.name,
|
|
69
|
+
state: {
|
|
70
|
+
prop: this.prop,
|
|
71
|
+
formValue: this.form.value
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
applyFilter() {
|
|
76
|
+
this._updateFilterValue.next();
|
|
77
|
+
}
|
|
78
|
+
clearFilter() {
|
|
79
|
+
this.form.setValue({
|
|
80
|
+
searchType: 'eq',
|
|
81
|
+
searchText: null,
|
|
82
|
+
fromText: null,
|
|
83
|
+
toText: null
|
|
84
|
+
});
|
|
85
|
+
this._updateFilterValue.next();
|
|
86
|
+
}
|
|
87
|
+
isDefault() {
|
|
88
|
+
const formValue = this.form.value;
|
|
89
|
+
if (isNullOrUndefinedOrEmpty(formValue.searchType)) {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
else if (THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SELECT_SEARCH_TYPES.includes(formValue.searchType)) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
else if (THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.searchText)) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
else if (THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.fromText) && notNullOrUndefinedOrEmpty(formValue.toText)) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLW51bWVyaWMuY29sdW1ucy1kYXRhLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9kYXRhdGFibGUvbW9kZWxzL2NvbHVtbnMtZGF0YS1maWx0ZXJzL3NlYXJjaC1udW1lcmljLmNvbHVtbnMtZGF0YS1maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUEwQixNQUFNLHdCQUF3QixDQUFDO0FBRW5GLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEksT0FBTyxFQUFjLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNELE9BQU8sRUFBNkYsK0NBQStDLEVBQTZDLHFEQUFxRCxFQUFFLHNEQUFzRCxFQUFFLHVEQUF1RCxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXpYLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSxpQkFBdUg7SUFhekssWUFDRSxJQUFZLEVBQ1osWUFBNEQsRUFDNUQsTUFBOEI7UUFFOUIsS0FBSyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFqQm5CLFNBQUksR0FBRywrQ0FBK0MsQ0FBQTtRQVU5RCx1QkFBa0IsR0FBRyxJQUFJLE9BQWEsQ0FBQTtRQVM1QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDO1lBQ3hCLFVBQVUsRUFBRSxJQUFJLFdBQVcsQ0FBbUQsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNoSixVQUFVLEVBQUUs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LENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNoSixPQUFPLEtBQUssQ0FBQTtTQUNiO2FBQ0ksSUFBSSxzREFBc0QsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUwsT0FBTyxLQUFLLENBQUE7U0FDYjtRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sdW1uc0RhdGFGaWx0ZXIsIENvbHVtbnNEYXRhRmlsdGVyU3RhdGUgfSBmcm9tIFwiLi4vY29sdW1ucy1kYXRhLWZpbHRlclwiO1xuaW1wb3J0IHsgVGhlU2VhbURhdGF0YWJsZUNvbHVtbiB9IGZyb20gXCIuLi90YWJsZS1jb2x1bW5cIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IERhdGFGaWx0ZXJTdGF0ZSB9IGZyb20gXCJAdGhlc2VhbS91aS1jb21tb24vZGF0YS1maWx0ZXJzXCI7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCwgaXNOdWxsT3JVbmRlZmluZWRPckVtcHR5LCBub3ROdWxsT3JVbmRlZmluZWQsIG5vdE51bGxPclVuZGVmaW5lZE9yRW1wdHkgfSBmcm9tIFwiQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBUaGVTZWFtQ29sdW1uc0RhdGFGaWx0ZXJOdW1lcmljU2VhcmNoRm9ybVN0YXRlLCBUaGVTZWFtQ29sdW1uc0RhdGFGaWx0ZXJOdW1lcmljU2VhcmNoRm9ybSwgVEhFU0VBTV9DT0xVTU5TX0RBVEFfRklMVEVSX05VTUVSSUNfU0VBUkNIX05BTUUsIFRoZVNlYW1Db2x1bW5zRGF0YUZpbHRlck51bWVyaWNTZWFyY2hUeXBlLCBUSEVTRUFNX0NPTFVNTlNfREFUQV9GSUxURVJfTlVNRVJJQ19URVhUX1NFQVJDSF9UWVBFUywgVEhFU0VBTV9DT0xVTU5TX0RBVEFfRklMVEVSX05VTUVSSUNfUkFOR0VfU0VBUkNIX1RZUEVTLCBUSEVTRUFNX0NPTFVNTlNfREFUQV9GSUxURVJfTlVNRVJJQ19TRUxFQ1RfU0VBUkNIX1RZUEVTIH0gZnJvbSBcIi4vbW9kZWxzXCI7XG5cbmV4cG9ydCBjbGFzcyBTZWFyY2hOdW1lcmljQ29sdW1uc0RhdGFGaWx0ZXIgZXh0ZW5kcyBDb2x1bW5zRGF0YUZpbHRlcjxUaGVTZWFtQ29sdW1uc0RhdGFGaWx0ZXJOdW1lcmljU2VhcmNoRm9ybVN0YXRlLCBUaGVTZWFtQ29sdW1uc0RhdGFGaWx0ZXJOdW1lcmljU2VhcmNoRm9ybSwgdW5kZWZpbmVkPiB7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lID0gVEhFU0VBTV9DT0xVTU5TX0RBVEFfRklMVEVSX05VTUVSSUNfU0VBUkNIX05BTUVcblxuICBwdWJsaWMgcmVhZG9ubHkgdWlkOiBzdHJpbmdcblxuICBwdWJsaWMgZm9ybTogVGhlU2VhbUNvbHVtbnNEYXRhRmlsdGVyTnVtZXJpY1NlYXJjaEZvcm1cblxuICBwdWJsaWMgZmlsdGVyU3RhdGVDaGFuZ2VzOiBPYnNlcnZhYmxlPERhdGFGaWx0ZXJTdGF0ZT5cblxuICBwdWJsaWMgb3B0aW9uczogYW55XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRmlsdGVyVmFsdWUgPSBuZXcgU3ViamVjdDx2b2lkPlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3A6IHN0cmluZyxcbiAgICBpbml0aWFsVmFsdWU6IFRoZVNlYW1Db2x1bW5zRGF0YUZpbHRlck51bWVyaWNTZWFyY2hGb3JtU3RhdGUsXG4gICAgY29sdW1uOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uXG4gICkge1xuICAgIHN1cGVyKHByb3AsIGluaXRpYWxWYWx1ZSwgY29sdW1uKVxuXG4gICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICBzZWFyY2hUeXBlOiBuZXcgRm9ybUNvbnRyb2w8VGhlU2VhbUNvbHVtbnNEYXRhRmlsdGVyTnVtZXJpY1NlYXJjaFR5cGUgfCBudWxsPihub3ROdWxsT3JVbmRlZmluZWQoaW5pdGlhbFZhbHVlKSA/IGluaXRpYWxWYWx1ZS5zZWFyY2hUeXBlIDogJ2VxJyksXG4gICAgICBzZWFyY2hUZXh0OiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obm90TnVsbE9yVW5kZWZpbmVkKGluaXRpYWxWYWx1ZSkgPyBpbml0aWFsVmFsdWUuc2VhcmNoVGV4dCA6IG51bGwpLFxuICAgICAgZnJvbVRleHQ6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihub3ROdWxsT3JVbmRlZmluZWQoaW5pdGlhbFZhbHVlKSA/IGluaXRpYWxWYWx1ZS5mcm9tVGV4dCA6IG51bGwpLFxuICAgICAgdG9UZXh0OiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obm90TnVsbE9yVW5kZWZpbmVkKGluaXRpYWxWYWx1ZSkgPyBpbml0aWFsVmFsdWUudG9UZXh0IDogbnVsbCksXG4gICAgfSlcblxuICAgIHRoaXMudWlkID0gYCR7dGhpcy5uYW1lfS0tJHtwcm9wfWBcblxuICAgIHRoaXMuZmlsdGVyU3RhdGVDaGFuZ2VzID0gdGhpcy5fdXBkYXRlRmlsdGVyVmFsdWUucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgbWFwKCgpID0+IHRoaXMuZmlsdGVyU3RhdGUoKSlcbiAgICApXG4gIH1cblxuICBwdWJsaWMgZGF0YUZpbHRlcihkYXRhOiBhbnlbXSwgZmlsdGVyVmFsdWU6IFBhcnRpYWw8VGhlU2VhbUNvbHVtbnNEYXRhRmlsdGVyTnVtZXJpY1NlYXJjaEZvcm1TdGF0ZT4sIG9wdGlvbnM6IGFueSk6IGFueVtdIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoZmlsdGVyVmFsdWUpIHx8IHRoaXMuaXNEZWZhdWx0KCkpIHtcbiAgICAgIHJldHVybiBkYXRhXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubnVtYmVyU2VhcmNoRGF0YUZpbHRlcih0aGlzLnByb3AsIGRhdGEsIGZpbHRlclZhbHVlLnNlYXJjaFRleHQsIGZpbHRlclZhbHVlLmZyb21UZXh0LCBmaWx0ZXJWYWx1ZS50b1RleHQsIGZpbHRlclZhbHVlLnNlYXJjaFR5cGUgfHwgbnVsbClcbiAgfVxuXG4gIHByaXZhdGUgX2lzSW52YWxpZFNlYXJjaFRlcm0oc2VhcmNoVGV4dDogbnVtYmVyLCBmcm9tVGV4dDogbnVtYmVyLCB0b1RleHQ6IG51bWJlciwgY29tcGFyYXRvcjogVGhlU2VhbUNvbHVtbnNEYXRhRmlsdGVyTnVtZXJpY1NlYXJjaFR5cGUpOiBib29sZWFuIHtcbiAgICBpZiAoaXNOYU4oc2VhcmNoVGV4dCkgJiYgVEhFU0VBTV9DT0xVTU5TX0RBVEFfRklMVEVSX05VTUVSSUNfVEVYVF9TRUFSQ0hfVFlQRVMuaW5jbHVkZXMoY29tcGFyYXRvcikpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIGVsc2UgaWYgKChpc05hTihmcm9tVGV4dCkgfHwgaXNOYU4odG9UZXh0KSkgJiYgVEhFU0VBTV9DT0xVTU5TX0RBVEFfRklMVEVSX05VTUVSSUNfUkFOR0VfU0VBUkNIX1RZUEVTLmluY2x1ZGVzKGNvbXBhcmF0b3IpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcHJpdmF0ZSBudW1iZXJTZWFyY2hEYXRhRmlsdGVyKHByb3A6IHN0cmluZywgZGF0YTogYW55W10sIHRleHQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIGZyb21UZXh0OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCB0b1RleHQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIGNvbXBhcmF0b3I6IFRoZVNlYW1Db2x1bW5zRGF0YUZpbHRlck51bWVyaWNTZWFyY2hUeXBlIHwgbnVsbCkge1xuICAgIGlmICghZGF0YSB8fCBkYXRhLmxlbmd0aCA8PSAwIHx8IGlzTnVsbE9yVW5kZWZpbmVkKGNvbXBhcmF0b3IpKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ05vIGZpbHRlciBhcHBsaWVkIC0gaW52YWxpZCBvcHRpb25zLicpXG4gICAgICByZXR1cm4gZGF0YVxuICAgIH1cblxuICAgIGNvbnN0IHRleHROdW1lcmljID0gbm90TnVsbE9yVW5kZWZpbmVkT3JFbXB0eSh0ZXh0KSA/IHBhcnNlRmxvYXQodGV4dCkgOiBOYU5cbiAgICBjb25zdCB0b1RleHROdW1lcmljID0gbm90TnVsbE9yVW5kZWZpbmVkT3JFbXB0eSh0b1RleHQpID8gcGFyc2VGbG9hdCh0b1RleHQpIDogTmFOXG4gICAgY29uc3QgZnJvbVRleHROdW1lcmljID0gbm90TnVsbE9yVW5kZWZpbmVkT3JFbXB0eShmcm9tVGV4dCkgPyBwYXJzZUZsb2F0KGZyb21UZXh0KSA6IE5hTlxuXG4gICAgaWYgKHRoaXMuX2lzSW52YWxpZFNlYXJjaFRlcm0odGV4dE51bWVyaWMsIGZyb21UZXh0TnVtZXJpYywgdG9UZXh0TnVtZXJpYywgY29tcGFyYXRvcikpIHtcbiAgICAgIGNvbnNvbGUud2FybignTm8gZmlsdGVyIGFwcGxpZWQgLSBpbnZhbGlkIHNlYXJjaCB0ZXJtcy4nKVxuICAgICAgcmV0dXJuIGRhdGFcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YS5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICBsZXQgcHJvcE51bWVyaWMgPSBwYXJzZUZsb2F0KGl0ZW1bcHJvcF0pXG5cbiAgICAgIGlmIChcbiAgICAgICAgKGNvbXBhcmF0b3IgPT09ICdibGFuaycgJiYgKGlzTnVsbE9yVW5kZWZpbmVkKGl0ZW1bcHJvcF0pIHx8IGlzTnVsbE9yVW5kZWZpbmVkT3JFbXB0eShgJHtpdGVtW3Byb3BdfWApKSkgfHxcbiAgICAgICAgKGNvbXBhcmF0b3IgPT09ICdub3QtYmxhbmsnICYmIG5vdE51bGxPclVuZGVmaW5lZChpdGVtW3Byb3BdKSAmJiBub3ROdWxsT3JVbmRlZmluZWRPckVtcHR5KGAke2l0ZW1bcHJvcF19YCkpIHx8XG4gICAgICAgIChjb21wYXJhdG9yID09PSAnbHQnICYmIHByb3BOdW1lcmljIDwgdGV4dE51bWVyaWMpIHx8XG4gICAgICAgIChjb21wYXJhdG9yID09PSAnbHRlJyAmJiBwcm9wTnVtZXJpYyA8PSB0ZXh0TnVtZXJpYykgfHxcbiAgICAgICAgKGNvbXBhcmF0b3IgPT09ICdndCcgJiYgcHJvcE51bWVyaWMgPiB0ZXh0TnVtZXJpYykgfHxcbiAgICAgICAgKGNvbXBhcmF0b3IgPT09ICdndGUnICYmIHByb3BOdW1lcmljID49IHRleHROdW1lcmljKSB8fFxuICAgICAgICAoY29tcGFyYXRvciA9PT0gJ2VxJyAmJiBwcm9wTnVtZXJpYyA9PT0gdGV4dE51bWVyaWMpIHx8XG4gICAgICAgIChjb21wYXJhdG9yID09PSAnYmV0d2VlbicgJiYgcHJvcE51bWVyaWMgPj0gZnJvbVRleHROdW1lcmljICYmIHByb3BOdW1lcmljIDw9IHRvVGV4dE51bWVyaWMpIHx8XG4gICAgICAgIChjb21wYXJhdG9yID09PSAnbm90LWJldHdlZW4nICYmICEocHJvcE51bWVyaWMgPj0gZnJvbVRleHROdW1lcmljICYmIHByb3BOdW1lcmljIDw9IHRvVGV4dE51bWVyaWMpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgZmlsdGVyKGRhdGE6IGFueVtdKTogT2JzZXJ2YWJsZTxhbnlbXT4ge1xuICAgIHJldHVybiB0aGlzLl91cGRhdGVGaWx0ZXJWYWx1ZS5waXBlKFxuICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5kYXRhRmlsdGVyKGRhdGEsIHRoaXMuZm9ybS52YWx1ZSwgdW5kZWZpbmVkKSlcbiAgICApXG4gIH1cblxuICBwdWJsaWMgZmlsdGVyU3RhdGUoKTogQ29sdW1uc0RhdGFGaWx0ZXJTdGF0ZTxUaGVTZWFtQ29sdW1uc0RhdGFGaWx0ZXJOdW1lcmljU2VhcmNoRm9ybVN0YXRlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIHN0YXRlOiB7XG4gICAgICAgIHByb3A6IHRoaXMucHJvcCxcbiAgICAgICAgZm9ybVZhbHVlOiB0aGlzLmZvcm0udmFsdWVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXBwbHlGaWx0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fdXBkYXRlRmlsdGVyVmFsdWUubmV4dCgpXG4gIH1cblxuICBwdWJsaWMgY2xlYXJGaWx0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtLnNldFZhbHVlKHtcbiAgICAgIHNlYXJjaFR5cGU6ICdlcScsXG4gICAgICBzZWFyY2hUZXh0OiBudWxsLFxuICAgICAgZnJvbVRleHQ6IG51bGwsXG4gICAgICB0b1RleHQ6IG51bGxcbiAgICB9KVxuXG4gICAgdGhpcy5fdXBkYXRlRmlsdGVyVmFsdWUubmV4dCgpXG4gIH1cblxuICBwdWJsaWMgaXNEZWZhdWx0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZm9ybS52YWx1ZVxuXG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkT3JFbXB0eShmb3JtVmFsdWUuc2VhcmNoVHlwZSkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIGVsc2UgaWYgKFRIRVNFQU1fQ09MVU1OU19EQVRBX0ZJTFRFUl9OVU1FUklDX1NFTEVDVF9TRUFSQ0hfVFlQRVMuaW5jbHVkZXMoZm9ybVZhbHVlLnNlYXJjaFR5cGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgZWxzZSBpZiAoVEhFU0VBTV9DT0xVTU5TX0RBVEFfRklMVEVSX05VTUVSSUNfVEVYVF9TRUFSQ0hfVFlQRVMuaW5jbHVkZXMoZm9ybVZhbHVlLnNlYXJjaFR5cGUpICYmIG5vdE51bGxPclVuZGVmaW5lZE9yRW1wdHkoZm9ybVZhbHVlLnNlYXJjaFRleHQpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgZWxzZSBpZiAoVEhFU0VBTV9DT0xVTU5TX0RBVEFfRklMVEVSX05VTUVSSUNfUkFOR0VfU0VBUkNIX1RZUEVTLmluY2x1ZGVzKGZvcm1WYWx1ZS5zZWFyY2hUeXBlKSAmJiBub3ROdWxsT3JVbmRlZmluZWRPckVtcHR5KGZvcm1WYWx1ZS5mcm9tVGV4dCkgJiYgbm90TnVsbE9yVW5kZWZpbmVkT3JFbXB0eShmb3JtVmFsdWUudG9UZXh0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { ColumnsDataFilter } from "../columns-data-filter";
|
|
2
|
+
import { FormControl, FormGroup } from "@angular/forms";
|
|
3
|
+
import { isNullOrUndefined, isNullOrUndefinedOrEmpty, notNullOrUndefined, notNullOrUndefinedOrEmpty } from "@theseam/ui-common/utils";
|
|
4
|
+
import { Subject, map, startWith } from "rxjs";
|
|
5
|
+
import { THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME, THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_TEXT_SELECT_SEARCH_TYPES } from "./models";
|
|
6
|
+
export class SearchTextColumnsDataFilter extends ColumnsDataFilter {
|
|
7
|
+
constructor(prop, initialValue, column) {
|
|
8
|
+
super(prop, initialValue, column);
|
|
9
|
+
this.name = THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME;
|
|
10
|
+
this._updateFilterValue = new Subject;
|
|
11
|
+
this.form = new FormGroup({
|
|
12
|
+
searchType: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchType : 'contains'),
|
|
13
|
+
searchText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchText : null),
|
|
14
|
+
// caseSensitive: new FormControl<boolean | null>(notNullOrUndefined(initialValue) ? initialValue.caseSensitive : null),
|
|
15
|
+
});
|
|
16
|
+
this.uid = `${this.name}--${prop}`;
|
|
17
|
+
this.filterStateChanges = this._updateFilterValue.pipe(startWith(undefined), map(() => this.filterState()));
|
|
18
|
+
}
|
|
19
|
+
dataFilter(data, filterValue, options) {
|
|
20
|
+
if (isNullOrUndefined(filterValue) || this.isDefault()) {
|
|
21
|
+
return data;
|
|
22
|
+
}
|
|
23
|
+
return this._textSearchDataFilter(this.prop, data, filterValue.searchText, filterValue.searchType || null);
|
|
24
|
+
}
|
|
25
|
+
_textSearchDataFilter(prop, data, text, comparator) {
|
|
26
|
+
if (!data || data.length < 0 || isNullOrUndefined(comparator)) {
|
|
27
|
+
return data;
|
|
28
|
+
}
|
|
29
|
+
return data.filter(item => {
|
|
30
|
+
let value1 = `${notNullOrUndefined(item[prop]) ? item[prop] : ''}`;
|
|
31
|
+
let value2 = text || '';
|
|
32
|
+
// if (!options.caseSensitive) {
|
|
33
|
+
// value1 = value1.toLowerCase()
|
|
34
|
+
// value2 = value2.toLowerCase()
|
|
35
|
+
// }
|
|
36
|
+
value1 = value1.toLowerCase();
|
|
37
|
+
value2 = value2.toLowerCase();
|
|
38
|
+
if ((comparator === 'eq' && value1 === value2) ||
|
|
39
|
+
(comparator === 'neq' && value1 !== value2) ||
|
|
40
|
+
(comparator === 'contains' && value1.indexOf(value2) !== -1) ||
|
|
41
|
+
(comparator === 'ncontains' && value1.indexOf(value2) === -1) ||
|
|
42
|
+
(comparator === 'blank' && isNullOrUndefinedOrEmpty(value1)) ||
|
|
43
|
+
(comparator === 'not-blank' && notNullOrUndefinedOrEmpty(value1))) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
return false;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
filter(data) {
|
|
50
|
+
return this._updateFilterValue.pipe(startWith(undefined), map(() => this.dataFilter(data, this.form.value, undefined)));
|
|
51
|
+
}
|
|
52
|
+
filterState() {
|
|
53
|
+
return {
|
|
54
|
+
name: this.name,
|
|
55
|
+
state: {
|
|
56
|
+
prop: this.prop,
|
|
57
|
+
formValue: this.form.value,
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
applyFilter() {
|
|
62
|
+
this._updateFilterValue.next();
|
|
63
|
+
}
|
|
64
|
+
clearFilter() {
|
|
65
|
+
this.form.setValue({
|
|
66
|
+
searchType: 'contains',
|
|
67
|
+
searchText: null,
|
|
68
|
+
// caseSensitive: null
|
|
69
|
+
});
|
|
70
|
+
this._updateFilterValue.next();
|
|
71
|
+
}
|
|
72
|
+
isDefault() {
|
|
73
|
+
const formValue = this.form.value;
|
|
74
|
+
if (isNullOrUndefinedOrEmpty(formValue.searchType)) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
else if (THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.searchText)) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
else if (THESEAM_COLUMNS_DATA_FILTER_TEXT_SELECT_SEARCH_TYPES.includes(formValue.searchType)) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXRleHQuY29sdW1ucy1kYXRhLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9kYXRhdGFibGUvbW9kZWxzL2NvbHVtbnMtZGF0YS1maWx0ZXJzL3NlYXJjaC10ZXh0LmNvbHVtbnMtZGF0YS1maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUEwQixNQUFNLHdCQUF3QixDQUFDO0FBRW5GLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEksT0FBTyxFQUFjLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNELE9BQU8sRUFBdUYsNENBQTRDLEVBQTBDLGtEQUFrRCxFQUFFLG9EQUFvRCxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9TLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxpQkFBc0c7SUFhckosWUFDRSxJQUFZLEVBQ1osWUFBeUQsRUFDekQsTUFBOEI7UUFFOUIsS0FBSyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFqQm5CLFNBQUksR0FBRyw0Q0FBNEMsQ0FBQTtRQVUzRCx1QkFBa0IsR0FBRyxJQUFJLE9BQWEsQ0FBQTtRQVM1QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDO1lBQ3hCLFVBQVUsRUFBRSxJQUFJLFdBQVcsQ0FBZ0Qsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUNuSixVQUFVLEVBQUUsSUFBSSxXQUFXLENBQWdCLGtC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TCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7YUFDM0I7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ2pCLFVBQVUsRUFBRSxVQUFVO1lBQ3RCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLHNCQUFzQjtTQUN2QixDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDaEMsQ0FBQztJQUVNLFNBQVM7UUFDZCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUVqQyxJQUFJLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNsRCxPQUFPLElBQUksQ0FBQTtTQUNaO2FBQ0ksSUFBSSxrREFBa0QsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM3SSxPQUFPLEtBQUssQ0FBQTtTQUNiO2FBQ0ksSUFBSSxvREFBb0QsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzVGLE9BQU8sS0FBSyxDQUFBO1NBQ2I7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbHVtbnNEYXRhRmlsdGVyLCBDb2x1bW5zRGF0YUZpbHRlclN0YXRlIH0gZnJvbSBcIi4uL2NvbHVtbnMtZGF0YS1maWx0ZXJcIjtcbmltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4gfSBmcm9tIFwiLi4vdGFibGUtY29sdW1uXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBEYXRhRmlsdGVyU3RhdGUgfSBmcm9tIFwiQHRoZXNlYW0vdWktY29tbW9uL2RhdGEtZmlsdGVyc1wiO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQsIGlzTnVsbE9yVW5kZWZpbmVkT3JFbXB0eSwgbm90TnVsbE9yVW5kZWZpbmVkLCBub3ROdWxsT3JVbmRlZmluZWRPckVtcHR5IH0gZnJvbSBcIkB0aGVzZWFtL3VpLWNvbW1vbi91dGlsc1wiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgbWFwLCBzdGFydFdpdGggfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgVGhlU2VhbUNvbHVtbnNEYXRhRmlsdGVyVGV4dFNlYXJjaEZvcm1TdGF0ZSwgVGhlU2VhbUNvbHVtbnNEYXRhRmlsdGVyVGV4dFNlYXJjaEZvcm0sIFRIRVNFQU1fQ09MVU1OU19EQVRBX0ZJTFRFUl9URVhUX1NFQVJDSF9OQU1FLCBUaGVTZWFtQ29sdW1uc0RhdGFGaWx0ZXJUZXh0U2VhcmNoVHlwZSwgVEhFU0VBTV9DT0xVTU5TX0RBVEFfRklMVEVSX1RFWFRfVEVYVF9TRUFSQ0hfVFlQRVMsIFRIRVNFQU1fQ09MVU1OU19EQVRBX0ZJTFRFUl9URVhUX1NFTEVDVF9TRUFSQ0hfVFlQRVMgfSBmcm9tIFwiLi9tb2RlbHNcIjtcblxuZXhwb3J0IGNsYXNzIFNlYXJjaFRleHRDb2x1bW5zRGF0YUZpbHRlciBleHRlbmRzIENvbHVtbnNEYXRhRmlsdGVyPFRoZVNlYW1Db2x1bW5zRGF0YUZpbHRlclRleHRTZWFyY2hGb3JtU3RhdGUsIFRoZVNlYW1Db2x1bW5zRGF0YUZpbHRlclRleHRTZWFyY2hGb3JtPiB7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lID0gVEhFU0VBTV9DT0xVTU5TX0RBVEFfRklMVEVSX1RFWFRfU0VBUkNIX05BTUVcblxuICBwdWJsaWMgcmVhZG9ubHkgdWlkOiBzdHJpbmdcblxuICBwdWJsaWMgZm9ybTogVGhlU2VhbUNvbHVtbnNEYXRhRmlsdGVyVGV4dFNlYXJjaEZvcm1cblxuICBwdWJsaWMgZmlsdGVyU3RhdGVDaGFuZ2VzOiBPYnNlcnZhYmxlPERhdGFGaWx0ZXJTdGF0ZT5cblxuICBwdWJsaWMgb3B0aW9uczogYW55XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRmlsdGVyVmFsdWUgPSBuZXcgU3ViamVjdDx2b2lkPlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3A6IHN0cmluZyxcbiAgICBpbml0aWFsVmFsdWU6IFRoZVNlYW1Db2x1bW5zRGF0YUZpbHRlclRleHRTZWFyY2hGb3JtU3RhdGUsXG4gICAgY29sdW1uOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uXG4gICkge1xuICAgIHN1cGVyKHByb3AsIGluaXRpYWxWYWx1ZSwgY29sdW1uKVxuXG4gICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICBzZWFyY2hUeXBlOiBuZXcgRm9ybUNvbnRyb2w8VGhlU2VhbUNvbHVtbnNEYXRhRmlsdGVyVGV4dFNlYXJjaFR5cGUgfCBudWxsPihub3ROdWxsT3JVbmRlZmluZWQoaW5pdGlhbFZhbHVlKSA/IGluaXRpYWxWYWx1ZS5zZWFyY2hUeXBlIDogJ2NvbnRhaW5zJyksXG4gICAgICBzZWFyY2hUZXh0OiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obm90TnVsbE9yVW5kZWZpbmVkKGluaXRpYWxWYWx1ZSkgPyBpbml0aWFsVmFsdWUuc2VhcmNoVGV4dCA6IG51bGwpLFxuICAgICAgLy8gY2FzZVNlbnNpdGl2ZTogbmV3IEZvcm1Db250cm9sPGJvb2xlYW4gfCBudWxsPihub3ROdWxsT3JVbmRlZmluZWQoaW5pdGlhbFZhbHVlKSA/IGluaXRpYWxWYWx1ZS5jYXNlU2Vuc2l0aXZlIDogbnVsbCksXG4gICAgfSlcblxuICAgIHRoaXMudWlkID0gYCR7dGhpcy5uYW1lfS0tJHtwcm9wfWBcblxuICAgIHRoaXMuZmlsdGVyU3RhdGVDaGFuZ2VzID0gdGhpcy5fdXBkYXRlRmlsdGVyVmFsdWUucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgbWFwKCgpID0+IHRoaXMuZmlsdGVyU3RhdGUoKSlcbiAgICApXG4gIH1cblxuICBwdWJsaWMgZGF0YUZpbHRlcihkYXRhOiBhbnlbXSwgZmlsdGVyVmFsdWU6IFBhcnRpYWw8VGhlU2VhbUNvbHVtbnNEYXRhRmlsdGVyVGV4dFNlYXJjaEZvcm1TdGF0ZT4sIG9wdGlvbnM6IGFueSk6IGFueVtdIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoZmlsdGVyVmFsdWUpIHx8IHRoaXMuaXNEZWZhdWx0KCkpIHtcbiAgICAgIHJldHVybiBkYXRhXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3RleHRTZWFyY2hEYXRhRmlsdGVyKHRoaXMucHJvcCwgZGF0YSwgZmlsdGVyVmFsdWUuc2VhcmNoVGV4dCwgZmlsdGVyVmFsdWUuc2VhcmNoVHlwZSB8fCBudWxsKVxuICB9XG5cbiAgcHJpdmF0ZSBfdGV4dFNlYXJjaERhdGFGaWx0ZXIocHJvcDogc3RyaW5nLCBkYXRhOiBhbnlbXSwgdGV4dDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCwgY29tcGFyYXRvcjogVGhlU2VhbUNvbHVtbnNEYXRhRmlsdGVyVGV4dFNlYXJjaFR5cGUgfCBudWxsKSB7XG4gICAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoIDwgMCB8fCBpc051bGxPclVuZGVmaW5lZChjb21wYXJhdG9yKSkge1xuICAgICAgcmV0dXJuIGRhdGFcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YS5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICBsZXQgdmFsdWUxID0gYCR7bm90TnVsbE9yVW5kZWZpbmVkKGl0ZW1bcHJvcF0pID8gaXRlbVtwcm9wXSA6ICcnfWBcbiAgICAgIGxldCB2YWx1ZTIgPSB0ZXh0IHx8ICcnXG5cbiAgICAgIC8vIGlmICghb3B0aW9ucy5jYXNlU2Vuc2l0aXZlKSB7XG4gICAgICAvLyAgIHZhbHVlMSA9IHZhbHVlMS50b0xvd2VyQ2FzZSgpXG4gICAgICAvLyAgIHZhbHVlMiA9IHZhbHVlMi50b0xvd2VyQ2FzZSgpXG4gICAgICAvLyB9XG5cbiAgICAgIHZhbHVlMSA9IHZhbHVlMS50b0xvd2VyQ2FzZSgpXG4gICAgICB2YWx1ZTIgPSB2YWx1ZTIudG9Mb3dlckNhc2UoKVxuXG4gICAgICBpZiAoXG4gICAgICAgIChjb21wYXJhdG9yID09PSAnZXEnICYmIHZhbHVlMSA9PT0gdmFsdWUyKSB8fFxuICAgICAgICAoY29tcGFyYXRvciA9PT0gJ25lcScgJiYgdmFsdWUxICE9PSB2YWx1ZTIpIHx8XG4gICAgICAgIChjb21wYXJhdG9yID09PSAnY29udGFpbnMnICYmIHZhbHVlMS5pbmRleE9mKHZhbHVlMikgIT09IC0xKSB8fFxuICAgICAgICAoY29tcGFyYXRvciA9PT0gJ25jb250YWlucycgJiYgdmFsdWUxLmluZGV4T2YodmFsdWUyKSA9PT0gLTEpIHx8XG4gICAgICAgIChjb21wYXJhdG9yID09PSAnYmxhbmsnICYmIGlzTnVsbE9yVW5kZWZpbmVkT3JFbXB0eSh2YWx1ZTEpKSB8fFxuICAgICAgICAoY29tcGFyYXRvciA9PT0gJ25vdC1ibGFuaycgJiYgbm90TnVsbE9yVW5kZWZpbmVkT3JFbXB0eSh2YWx1ZTEpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgZmlsdGVyKGRhdGE6IGFueVtdKTogT2JzZXJ2YWJsZTxhbnlbXT4ge1xuICAgIHJldHVybiB0aGlzLl91cGRhdGVGaWx0ZXJWYWx1ZS5waXBlKFxuICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5kYXRhRmlsdGVyKGRhdGEsIHRoaXMuZm9ybS52YWx1ZSwgdW5kZWZpbmVkKSlcbiAgICApXG4gIH1cblxuICBwdWJsaWMgZmlsdGVyU3RhdGUoKTogQ29sdW1uc0RhdGFGaWx0ZXJTdGF0ZTxUaGVTZWFtQ29sdW1uc0RhdGFGaWx0ZXJUZXh0U2VhcmNoRm9ybVN0YXRlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIHN0YXRlOiB7XG4gICAgICAgIHByb3A6IHRoaXMucHJvcCxcbiAgICAgICAgZm9ybVZhbHVlOiB0aGlzLmZvcm0udmFsdWUsXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFwcGx5RmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0ZUZpbHRlclZhbHVlLm5leHQoKVxuICB9XG5cbiAgcHVibGljIGNsZWFyRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybS5zZXRWYWx1ZSh7XG4gICAgICBzZWFyY2hUeXBlOiAnY29udGFpbnMnLFxuICAgICAgc2VhcmNoVGV4dDogbnVsbCxcbiAgICAgIC8vIGNhc2VTZW5zaXRpdmU6IG51bGxcbiAgICB9KVxuXG4gICAgdGhpcy5fdXBkYXRlRmlsdGVyVmFsdWUubmV4dCgpXG4gIH1cblxuICBwdWJsaWMgaXNEZWZhdWx0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZm9ybS52YWx1ZVxuXG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkT3JFbXB0eShmb3JtVmFsdWUuc2VhcmNoVHlwZSkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIGVsc2UgaWYgKFRIRVNFQU1fQ09MVU1OU19EQVRBX0ZJTFRFUl9URVhUX1RFWFRfU0VBUkNIX1RZUEVTLmluY2x1ZGVzKGZvcm1WYWx1ZS5zZWFyY2hUeXBlKSAmJiBub3ROdWxsT3JVbmRlZmluZWRPckVtcHR5KGZvcm1WYWx1ZS5zZWFyY2hUZXh0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIGVsc2UgaWYgKFRIRVNFQU1fQ09MVU1OU19EQVRBX0ZJTFRFUl9URVhUX1NFTEVDVF9TRUFSQ0hfVFlQRVMuaW5jbHVkZXMoZm9ybVZhbHVlLnNlYXJjaFR5cGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { notNullOrUndefined } from "@theseam/ui-common/utils";
|
|
2
|
+
import { SearchDateColumnsDataFilter } from "./search-date.columns-data-filter";
|
|
3
|
+
import { SearchNumericColumnsDataFilter } from "./search-numeric.columns-data-filter";
|
|
4
|
+
import { SearchTextColumnsDataFilter } from "./search-text.columns-data-filter";
|
|
5
|
+
import { THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME, THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME } from "./models";
|
|
6
|
+
export const THESEAM_COLUMNS_DATA_FILTERS_DEFAULT = [
|
|
7
|
+
{ name: THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME, class: SearchTextColumnsDataFilter },
|
|
8
|
+
{ name: THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME, class: SearchNumericColumnsDataFilter },
|
|
9
|
+
{ name: THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME, class: SearchDateColumnsDataFilter },
|
|
10
|
+
];
|
|
11
|
+
export const getFormattedDateForComparison = (date, dateType, setToLocalTime = false) => {
|
|
12
|
+
const dateObj = new Date(notNullOrUndefined(date) ? date : '');
|
|
13
|
+
if (dateType === 'datetime-local') {
|
|
14
|
+
// reset seconds and ms, since they can't be specified from the search input
|
|
15
|
+
dateObj.setSeconds(0);
|
|
16
|
+
dateObj.setMilliseconds(0);
|
|
17
|
+
}
|
|
18
|
+
else if (dateType === 'date') {
|
|
19
|
+
if (setToLocalTime) {
|
|
20
|
+
// set date from input type="date" to current timezone, to match expected behavior
|
|
21
|
+
dateObj.setMinutes(dateObj.getMinutes() + dateObj.getTimezoneOffset());
|
|
22
|
+
}
|
|
23
|
+
// reset hours/minutes/seconds/ms, since they can't be specified from the search input
|
|
24
|
+
dateObj.setHours(0, 0, 0, 0);
|
|
25
|
+
}
|
|
26
|
+
return dateObj;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL21vZGVscy9jb2x1bW5zLWRhdGEtZmlsdGVycy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRixPQUFPLEVBQThDLDRDQUE0QyxFQUFFLCtDQUErQyxFQUFFLDRDQUE0QyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRW5OLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHO0lBQ2xELEVBQUUsSUFBSSxFQUFFLDRDQUE0QyxFQUFFLEtBQUssRUFBRSwyQkFBMkIsRUFBRTtJQUMxRixFQUFFLElBQUksRUFBRSwrQ0FBK0MsRUFBRSxLQUFLLEVBQUUsOEJBQThCLEVBQUU7SUFDaEcsRUFBRSxJQUFJLEVBQUUsNENBQTRDLEVBQUUsS0FBSyxFQUFFLDJCQUEyQixFQUFFO0NBQ2xGLENBQUE7QUFFVixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLElBQStDLEVBQUUsUUFBb0QsRUFBRSxpQkFBMEIsS0FBSyxFQUFRLEVBQUU7SUFDNUwsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFOUQsSUFBSSxRQUFRLEtBQUssZ0JBQWdCLEVBQUU7UUFDakMsNEVBQTRFO1FBQzVFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDckIsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUMzQjtTQUNJLElBQUksUUFBUSxLQUFLLE1BQU0sRUFBRTtRQUM1QixJQUFJLGNBQWMsRUFBRTtZQUNsQixrRkFBa0Y7WUFDbEYsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQTtTQUN2RTtRQUVELHNGQUFzRjtRQUN0RixPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0tBQzdCO0lBRUQsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSBcIkB0aGVzZWFtL3VpLWNvbW1vbi91dGlsc1wiO1xyXG5pbXBvcnQgeyBTZWFyY2hEYXRlQ29sdW1uc0RhdGFGaWx0ZXIgfSBmcm9tIFwiLi9zZWFyY2gtZGF0ZS5jb2x1bW5zLWRhdGEtZmlsdGVyXCI7XHJcbmltcG9ydCB7IFNlYXJjaE51bWVyaWNDb2x1bW5zRGF0YUZpbHRlciB9IGZyb20gXCIuL3NlYXJjaC1udW1lcmljLmNvbHVtbnMtZGF0YS1maWx0ZXJcIjtcclxuaW1wb3J0IHsgU2VhcmNoVGV4dENvbHVtbnNEYXRhRmlsdGVyIH0gZnJvbSBcIi4vc2VhcmNoLXRleHQuY29sdW1ucy1kYXRhLWZpbHRlclwiO1xyXG5pbXBvcnQgeyBUaGVTZWFtQ29sdW1uc0RhdGFGaWx0ZXJEYXRlU2VhcmNoRGF0ZVR5cGUsIFRIRVNFQU1fQ09MVU1OU19EQVRBX0ZJTFRFUl9EQVRFX1NFQVJDSF9OQU1FLCBUSEVTRUFNX0NPTFVNTlNfREFUQV9GSUxURVJfTlVNRVJJQ19TRUFSQ0hfTkFNRSwgVEhFU0VBTV9DT0xVTU5TX0RBVEFfRklMVEVSX1RFWFRfU0VBUkNIX05BTUUgfSBmcm9tIFwiLi9tb2RlbHNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBUSEVTRUFNX0NPTFVNTlNfREFUQV9GSUxURVJTX0RFRkFVTFQgPSBbXHJcbiAgeyBuYW1lOiBUSEVTRUFNX0NPTFVNTlNfREFUQV9GSUxURVJfVEVYVF9TRUFSQ0hfTkFNRSwgY2xhc3M6IFNlYXJjaFRleHRDb2x1bW5zRGF0YUZpbHRlciB9LFxyXG4gIHsgbmFtZTogVEhFU0VBTV9DT0xVTU5TX0RBVEFfRklMVEVSX05VTUVSSUNfU0VBUkNIX05BTUUsIGNsYXNzOiBTZWFyY2hOdW1lcmljQ29sdW1uc0RhdGFGaWx0ZXIgfSxcclxuICB7IG5hbWU6IFRIRVNFQU1fQ09MVU1OU19EQVRBX0ZJTFRFUl9EQVRFX1NFQVJDSF9OQU1FLCBjbGFzczogU2VhcmNoRGF0ZUNvbHVtbnNEYXRhRmlsdGVyIH0sXHJcbl0gYXMgY29uc3RcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWREYXRlRm9yQ29tcGFyaXNvbiA9IChkYXRlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCwgZGF0ZVR5cGU6IFRoZVNlYW1Db2x1bW5zRGF0YUZpbHRlckRhdGVTZWFyY2hEYXRlVHlwZSwgc2V0VG9Mb2NhbFRpbWU6IGJvb2xlYW4gPSBmYWxzZSk6IERhdGUgPT4ge1xyXG4gIGNvbnN0IGRhdGVPYmogPSBuZXcgRGF0ZShub3ROdWxsT3JVbmRlZmluZWQoZGF0ZSkgPyBkYXRlIDogJycpXHJcblxyXG4gIGlmIChkYXRlVHlwZSA9PT0gJ2RhdGV0aW1lLWxvY2FsJykge1xyXG4gICAgLy8gcmVzZXQgc2Vjb25kcyBhbmQgbXMsIHNpbmNlIHRoZXkgY2FuJ3QgYmUgc3BlY2lmaWVkIGZyb20gdGhlIHNlYXJjaCBpbnB1dFxyXG4gICAgZGF0ZU9iai5zZXRTZWNvbmRzKDApXHJcbiAgICBkYXRlT2JqLnNldE1pbGxpc2Vjb25kcygwKVxyXG4gIH1cclxuICBlbHNlIGlmIChkYXRlVHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICBpZiAoc2V0VG9Mb2NhbFRpbWUpIHtcclxuICAgICAgLy8gc2V0IGRhdGUgZnJvbSBpbnB1dCB0eXBlPVwiZGF0ZVwiIHRvIGN1cnJlbnQgdGltZXpvbmUsIHRvIG1hdGNoIGV4cGVjdGVkIGJlaGF2aW9yXHJcbiAgICAgIGRhdGVPYmouc2V0TWludXRlcyhkYXRlT2JqLmdldE1pbnV0ZXMoKSArIGRhdGVPYmouZ2V0VGltZXpvbmVPZmZzZXQoKSlcclxuICAgIH1cclxuXHJcbiAgICAvLyByZXNldCBob3Vycy9taW51dGVzL3NlY29uZHMvbXMsIHNpbmNlIHRoZXkgY2FuJ3QgYmUgc3BlY2lmaWVkIGZyb20gdGhlIHNlYXJjaCBpbnB1dFxyXG4gICAgZGF0ZU9iai5zZXRIb3VycygwLCAwLCAwLCAwKVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGRhdGVPYmpcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from "@angular/core";
|
|
2
|
+
export const THESEAM_DATATABLE_CONFIG = new InjectionToken('TheSeamDatatableConfig');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9kYXRhdGFibGUvbW9kZWxzL2RhdGF0YWJsZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQXFHL0MsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQXlCLHdCQUF3QixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTZWFtSWNvbiB9IGZyb20gXCJAdGhlc2VhbS91aS1jb21tb24vaWNvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRoZVNlYW1EYXRhdGFibGVNZXNzYWdlcyB7XG4gIC8qKlxuICAgKiBNZXNzYWdlIHRvIHNob3cgd2hlbiBhcnJheSBpcyBwcmVzZW50ZWQsIGJ1dCBjb250YWlucyBubyB2YWx1ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdObyByZWNvcmRzIGZvdW5kJ1xuICAgKi9cbiAgZW1wdHlNZXNzYWdlOiBzdHJpbmdcblxuICAvKipcbiAgICogRm9vdGVyIHRvdGFsIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0ICd0b3RhbCdcbiAgICovXG4gIHRvdGFsTWVzc2FnZTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEZvb3RlciBzZWxlY3RlZCBtZXNzYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnc2VsZWN0ZWQnXG4gICAqL1xuICBzZWxlY3RlZE1lc3NhZ2U6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uRmlsdGVyVXBkYXRlTWV0aG9kID0gJ3ZhbHVlQ2hhbmdlcycgfCAnc3VibWl0J1xuXG4vKipcbiAqIEEgY29uZmlnIG9iamVjdCB0aGF0IGNhbiBiZSBpbmplY3RlZCBhdCB0aGUgdG9wIGxldmVsIG9mIGEgcHJvamVjdFxuICogdG8gYXBwbHkgc3BlY2lmaWMgVGhlU2VhbURhdGF0YWJsZSBzZXR0aW5ncyBzaXRlLXdpZGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGhlU2VhbURhdGF0YWJsZUNvbmZpZyB7XG5cbiAgLyoqXG4gICAqIFNlZSBgVGhlU2VhbURhdGF0YWJsZU1lc3NhZ2VzYC5cbiAgICovXG4gIG1lc3NhZ2VzPzogUGFydGlhbDxUaGVTZWFtRGF0YXRhYmxlTWVzc2FnZXM+IHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIC8qKlxuICAgKiBNaW5pbXVtIGhlYWRlciBoZWlnaHQgaW4gcGl4ZWxzLlxuICAgKlxuICAgKiBAZGVmYXVsdCA1MFxuICAgKi9cbiAgaGVhZGVySGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIC8qKlxuICAgKiBSb3cgaGVpZ2h0IGluIHBpeGVscywgbmVjZXNzYXJ5IGZvciBjYWxjdWxhdGluZyBzY3JvbGwgaGVpZ2h0LlxuICAgKlxuICAgKiBAZGVmYXVsdCA1MFxuICAgKi9cbiAgcm93SGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIC8qKlxuICAgKiBNaW5pbXVtIGZvb3RlciBoZWlnaHQgaW4gcGl4ZWxzLlxuICAgKlxuICAgKiBAZGVmYXVsdCA0MFxuICAgKi9cbiAgZm9vdGVySGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIC8qKlxuICAgKiBDU1MgY2xhc3NlcyBmb3IgdmFyaW91cyBpY29uIGJ1dHRvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0XG4gICAqICAgc29ydEFzY2VuZGluZzogJ2RhdGF0YWJsZS1pY29uLXVwJyxcbiAgICogICBzb3J0RGVzY2VuZGluZzogJ2RhdGF0YWJsZS1pY29uLWRvd24nLFxuICAgKiAgIHBhZ2VyTGVmdEFycm93OiAnZGF0YXRhYmxlLWljb24tbGVmdCcsXG4gICAqICAgcGFnZXJSaWdodEFycm93OiAnZGF0YXRhYmxlLWljb24tcmlnaHQnLFxuICAgKiAgIHBhZ2VyUHJldmlvdXM6ICdkYXRhdGFibGUtaWNvbi1wcmV2JyxcbiAgICogICBwYWdlck5leHQ6ICdkYXRhdGFibGUtaWNvbi1za2lwJ1xuICAgKi9cbiAgY3NzQ2xhc3Nlcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cblxuICAvKipcbiAgICogSWNvbiB0byBkaXNwbGF5IHRvIHRoZSBsZWZ0IG9mIHRoZSBjb2x1bW4gaGVhZGVyXG4gICAqIHdoZW4gYSBjb2x1bW4gaXMgbWFya2VkIFwiZmlsdGVyYWJsZVwiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYUZpbHRlclxuICAgKi9cbiAgY29sdW1uRmlsdGVySWNvbj86IFNlYW1JY29uXG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hhdCBraW5kIG9mIGFjdGlvbiBjYXVzZXMgYSBmaWx0ZXIgY29sdW1uIHRvIGJlIGFwcGxpZWQuXG4gICAqXG4gICAqIGB2YWx1ZUNoYW5nZXNgOiBGaWx0ZXIgaXMgYXBwbGllZCBvbiBmb3JtIGB2YWx1ZUNoYW5nZXNgIGV2ZW50LCB3aXRoIGFuIG9wdGlvbmFsIGRlYm91bmNlIHNldCBvbiBgY29sdW1uRmlsdGVyVXBkYXRlRGVib3VuY2VgLlxuICAgKlxuICAgKiBgc3VibWl0YDogRmlsdGVyIGlzIGFwcGxpZWQgb24gZm9ybSBzdWJtaXQuIE5vIGRlYm91bmNlIGlzIGFwcGxpZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwidmFsdWVDaGFuZ2VzXCJcbiAgICovXG4gIGNvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZD86IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5GaWx0ZXJVcGRhdGVNZXRob2RcblxuICAvKipcbiAgICogTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWJvdW5jZSBhIGZpbHRlciBmb3JtIGlucHV0IGJlZm9yZSBhcHBseWluZyB0aGUgZmlsdGVyIGNoYW5nZS5cbiAgICogT25seSBhcHBsaWNhYmxlIHdoZW4gYGNvbHVtbkZpbHRlclVwZGF0ZU1ldGhvZGAgaXMgYHZhbHVlQ2hhbmdlc2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IDQwMFxuICAgKi9cbiAgY29sdW1uRmlsdGVyVXBkYXRlRGVib3VuY2U/OiBudW1iZXJcbn1cblxuZXhwb3J0IGNvbnN0IFRIRVNFQU1fREFUQVRBQkxFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUaGVTZWFtRGF0YXRhYmxlQ29uZmlnPignVGhlU2VhbURhdGF0YWJsZUNvbmZpZycpXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2RhdGF0YWJsZS9tb2RlbHMvdGFibGUtY29sdW1uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJ0BtYXJrbGIvbmd4LWRhdGF0YWJsZSdcblxuaW1wb3J0IHsgVGFibGVDZWxsVHlwZUNvbHVtbiwgVGFibGVDZWxsVHlwZUNvbmZpZywgVGFibGVDZWxsVHlwZUV4cG9ydFByb3BzLCBUYWJsZUNlbGxUeXBlTmFtZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi90YWJsZS1jZWxsLXR5cGUnXG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlU2VhbURhdGF0YWJsZUNvbHVtbkhpZGFibGUge1xuXG4gIC8qKlxuICAgKiBIaWRlIGEgY29sdW1uLCBidXQgbGV0IHRoZSBkYXRhdGFibGUgc3RpbGwga25vdyBhYm91dCBpdC4gVXNlZnVsIGZvclxuICAgKiBoaWRkaW5nIGEgY29sdW1ucyB0aGF0IGNhbiBiZSB1bmhpZGRlbiB0aHJvdWdoIGEgc2V0dGluZy5cbiAgICpcbiAgICogTk9URTogSWYgeW91IGZpbHRlciBvdXQgdGhlIGNvbHVtbiBiZWZvcmUgcGFzc2luZyBpdCB0byB0aGUgZGF0YXRhYmxlIGl0XG4gICAqIHdpbGwgbm90IGJlIGFibGUgdG8gcHJvdmlkZSB0aGF0IGNvbHVtbiBhcyBhbiBvcHRpb24gaW4gdGhlIGNvbHVtbiB0b2dnbGVcbiAgICogbGlzdC5cbiAgICovXG4gIGhpZGRlbj86IGJvb2xlYW5cblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoZVNlYW1EYXRhdGFibGVDb2x1bW5GaWx0ZXJhYmxlPFQgZXh0ZW5kcyBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uRmlsdGVyYWJsZUNvbmZpZyA9IGFueT4ge1xuICBmaWx0ZXJhYmxlPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGEgc3BlY2lmaWMgZmlsdGVyIHR5cGUuXG4gICAqL1xuICBmaWx0ZXJPcHRpb25zPzogVFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoZVNlYW1EYXRhdGFibGVDb2x1bW5GaWx0ZXJhYmxlQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBvYmplY3QgbmFtZSBvbiB3aGljaCB0byBydW4gdGhlIGZpbHRlci5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gY29sdW1uIHByb3AuXG4gICAqL1xuICBmaWx0ZXJQcm9wPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGZpbHRlcihzKSB0byBzaG93IGluIHRoZSBmaWx0ZXIgbWVudS5cbiAgICpcbiAgICogSWYgbm90IHByb3ZpZGVkLCB3aWxsIGxvb2sgdG8gY2VsbFR5cGUgdG8gZGV0ZXJtaW5lIGRlZmF1bHQgZmlsdGVyKHMpLlxuICAgKi9cbiAgZmlsdGVyVHlwZT86IHN0cmluZ1xuXG59XG5cbmV4cG9ydCB0eXBlIFRoZVNlYW1EYXRhdGFibGVDb2x1bW48VCBleHRlbmRzIFRhYmxlQ2VsbFR5cGVOYW1lID0gYW55LCBDIGV4dGVuZHMgVGFibGVDZWxsVHlwZUNvbmZpZzxUPiA9IGFueSwgRiBleHRlbmRzIFRoZVNlYW1EYXRhdGFibGVDb2x1bW5GaWx0ZXJhYmxlQ29uZmlnID0gYW55PiA9XG4gIFRhYmxlQ29sdW1uICZcbiAgVGFibGVDZWxsVHlwZUNvbHVtbjxULCBDPiAmXG4gIFRhYmxlQ2VsbFR5cGVFeHBvcnRQcm9wcyAmXG4gIFRoZVNlYW1EYXRhdGFibGVDb2x1bW5IaWRhYmxlICZcbiAgVGhlU2VhbURhdGF0YWJsZUNvbHVtbkZpbHRlcmFibGU8Rj5cbiJdfQ==
|
|
@@ -2,6 +2,10 @@ export * from './datatable/datatable.component';
|
|
|
2
2
|
export * from './datatable-action-menu/datatable-action-menu.component';
|
|
3
3
|
export * from './datatable-action-menu-item/datatable-action-menu-item.component';
|
|
4
4
|
export * from './datatable-column/datatable-column.component';
|
|
5
|
+
export * from './datatable-column-filter-menu/datatable-column-filter-menu.component';
|
|
6
|
+
export * from './datatable-column-filter-search-date/datatable-column-filter-search-date.component';
|
|
7
|
+
export * from './datatable-column-filter-search-numeric/datatable-column-filter-search-numeric.component';
|
|
8
|
+
export * from './datatable-column-filter-search-text/datatable-column-filter-search-text.component';
|
|
5
9
|
export * from './datatable-column-preferences/datatable-column-preferences.component';
|
|
6
10
|
export * from './datatable-column-preferences-button/datatable-column-preferences-button.component';
|
|
7
11
|
export * from './datatable-export-button/datatable-export-button.component';
|
|
@@ -18,9 +22,18 @@ export * from './datatable-row-detail/datatable-row-detail.directive';
|
|
|
18
22
|
export * from './directives/datatable-action-menu-item.directive';
|
|
19
23
|
export * from './directives/datatable-action-menu-toggle.directive';
|
|
20
24
|
export * from './directives/datatable-cell-tpl.directive';
|
|
25
|
+
export * from './directives/datatable-column-filter-tpl.directive';
|
|
26
|
+
export * from './directives/datatable-column-filter.directive';
|
|
21
27
|
export * from './directives/datatable-filter.directive';
|
|
22
28
|
export * from './directives/datatable-row-action-item.directive';
|
|
29
|
+
export * from './models/columns-data-filter';
|
|
30
|
+
export * from './models/columns-data-filters/search-date.columns-data-filter';
|
|
31
|
+
export * from './models/columns-data-filters/search-numeric.columns-data-filter';
|
|
32
|
+
export * from './models/columns-data-filters/search-text.columns-data-filter';
|
|
33
|
+
export * from './models/columns-data-filters/models';
|
|
34
|
+
export * from './models/columns-data-filters/utils';
|
|
23
35
|
export * from './models/datatable-accessor';
|
|
36
|
+
export * from './models/datatable-config';
|
|
24
37
|
export * from './models/datatable-data-source';
|
|
25
38
|
export * from './models/datatable-gql-data-source';
|
|
26
39
|
export * from './models/menubar-item-data';
|
|
@@ -31,6 +44,7 @@ export * from './models/table-column';
|
|
|
31
44
|
export * from './models/sort-event';
|
|
32
45
|
export * from './models/sort-item';
|
|
33
46
|
export * from './models/table-column';
|
|
47
|
+
export * from './services/columns-filters.service';
|
|
34
48
|
export * from './services/datatable-column-changes.service';
|
|
35
49
|
export * from './services/datatable-preferences.service';
|
|
36
50
|
export * from './services/datatable-scrollbar-helper.service';
|
|
@@ -38,4 +52,4 @@ export * from './tokens/datatable-preferences-accessor';
|
|
|
38
52
|
export * from './tokens/menubar-item-data';
|
|
39
53
|
export * from './utils/with-stored-column-info';
|
|
40
54
|
export * from './datatable.module';
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9kYXRhdGFibGUvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFBO0FBQy9DLGNBQWMseURBQXlELENBQUE7QUFDdkUsY0FBYyxtRUFBbUUsQ0FBQTtBQUNqRixjQUFjLCtDQUErQyxDQUFBO0FBQzdELGNBQWMsdUVBQXVFLENBQUE7QUFDckYsY0FBYyxxRkFBcUYsQ0FBQTtBQUNuRyxjQUFjLDJGQUEyRixDQUFBO0FBQ3pHLGNBQWMscUZBQXFGLENBQUE7QUFDbkcsY0FBYyx1RUFBdUUsQ0FBQTtBQUNyRixjQUFjLHFGQUFxRixDQUFBO0FBQ25HLGNBQWMsNkRBQTZELENBQUE7QUFDM0UsY0FBYyxtREFBbUQsQ0FBQTtBQUNqRSxjQUFjLCtDQUErQyxDQUFBO0FBQzdELGNBQWMsbURBQW1ELENBQUE7QUFDakUsY0FBYywrRUFBK0UsQ0FBQTtBQUM3RixjQUFjLDJFQUEyRSxDQUFBO0FBQ3pGLGNBQWMsNkVBQTZFLENBQUE7QUFDM0YsY0FBYywyREFBMkQsQ0FBQTtBQUN6RSxjQUFjLDZEQUE2RCxDQUFBO0FBQzNFLGNBQWMsMkRBQTJELENBQUE7QUFDekUsY0FBYyx1REFBdUQsQ0FBQTtBQUVyRSxjQUFjLG1EQUFtRCxDQUFBO0FBQ2pFLGNBQWMscURBQXFELENBQUE7QUFDbkUsY0FBYywyQ0FBMkMsQ0FBQTtBQUN6RCxjQUFjLG9EQUFvRCxDQUFBO0FBQ2xFLGNBQWMsZ0RBQWdELENBQUE7QUFDOUQsY0FBYyx5Q0FBeUMsQ0FBQTtBQUN2RCxjQUFjLGtEQUFrRCxDQUFBO0FBRWhFLGNBQWMsOEJBQThCLENBQUE7QUFDNUMsY0FBYywrREFBK0QsQ0FBQTtBQUM3RSxjQUFjLGtFQUFrRSxDQUFBO0FBQ2hGLGNBQWMsK0RBQStELENBQUE7QUFDN0UsY0FBYyxzQ0FBc0MsQ0FBQTtBQUNwRCxjQUFjLHFDQUFxQyxDQUFBO0FBQ25ELGNBQWMsNkJBQTZCLENBQUE7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLGdDQUFnQyxDQUFBO0FBQzlDLGNBQWMsb0NBQW9DLENBQUE7QUFDbEQsY0FBYyw0QkFBNEIsQ0FBQTtBQUMxQyxjQUFjLG9CQUFvQixDQUFBO0FBQ2xDLGNBQWMsK0JBQStCLENBQUE7QUFDN0MsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLHVCQUF1QixDQUFBO0FBRXJDLGNBQWMsb0NBQW9DLENBQUE7QUFDbEQsY0FBYyw2Q0FBNkMsQ0FBQTtBQUMzRCxjQUFjLDBDQUEwQyxDQUFBO0FBQ3hELGNBQWMsK0NBQStDLENBQUE7QUFFN0QsY0FBYyx5Q0FBeUMsQ0FBQTtBQUN2RCxjQUFjLDRCQUE0QixDQUFBO0FBRTFDLGNBQWMsaUNBQWlDLENBQUE7QUFFL0MsY0FBYyxvQkFBb0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlL2RhdGF0YWJsZS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2RhdGF0YWJsZS1hY3Rpb24tbWVudS9kYXRhdGFibGUtYWN0aW9uLW1lbnUuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUtYWN0aW9uLW1lbnUtaXRlbS9kYXRhdGFibGUtYWN0aW9uLW1lbnUtaXRlbS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2RhdGF0YWJsZS1jb2x1bW4vZGF0YXRhYmxlLWNvbHVtbi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2RhdGF0YWJsZS1jb2x1bW4tZmlsdGVyLW1lbnUvZGF0YXRhYmxlLWNvbHVtbi1maWx0ZXItbWVudS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2RhdGF0YWJsZS1jb2x1bW4tZmlsdGVyLXNlYXJjaC1kYXRlL2RhdGF0YWJsZS1jb2x1bW4tZmlsdGVyLXNlYXJjaC1kYXRlLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlLWNvbHVtbi1maWx0ZXItc2VhcmNoLW51bWVyaWMvZGF0YXRhYmxlLWNvbHVtbi1maWx0ZXItc2VhcmNoLW51bWVyaWMuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUtY29sdW1uLWZpbHRlci1zZWFyY2gtdGV4dC9kYXRhdGFibGUtY29sdW1uLWZpbHRlci1zZWFyY2gtdGV4dC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2RhdGF0YWJsZS1jb2x1bW4tcHJlZmVyZW5jZXMvZGF0YXRhYmxlLWNvbHVtbi1wcmVmZXJlbmNlcy5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2RhdGF0YWJsZS1jb2x1bW4tcHJlZmVyZW5jZXMtYnV0dG9uL2RhdGF0YWJsZS1jb2x1bW4tcHJlZmVyZW5jZXMtYnV0dG9uLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlLWV4cG9ydC1idXR0b24vZGF0YXRhYmxlLWV4cG9ydC1idXR0b24uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUtZm9vdGVyL2RhdGF0YWJsZS1mb290ZXItdHBsLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlLWZvb3Rlci9kYXRhdGFibGUtZm9vdGVyLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlLW1lbnUtYmFyL2RhdGF0YWJsZS1tZW51LWJhci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2RhdGF0YWJsZS1tZW51LWJhci1jb2x1bW4tY2VudGVyL2RhdGF0YWJsZS1tZW51LWJhci1jb2x1bW4tY2VudGVyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlLW1lbnUtYmFyLWNvbHVtbi1sZWZ0L2RhdGF0YWJsZS1tZW51LWJhci1jb2x1bW4tbGVmdC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2RhdGF0YWJsZS1tZW51LWJhci1jb2x1bW4tcmlnaHQvZGF0YXRhYmxlLW1lbnUtYmFyLWNvbHVtbi1yaWdodC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2RhdGF0YWJsZS1tZW51LWJhci1yb3cvZGF0YXRhYmxlLW1lbnUtYmFyLXJvdy5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2RhdGF0YWJsZS1tZW51LWJhci10ZXh0L2RhdGF0YWJsZS1tZW51LWJhci10ZXh0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlLXJvdy1kZXRhaWwvZGF0YXRhYmxlLXJvdy1kZXRhaWwtdHBsLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlLXJvdy1kZXRhaWwvZGF0YXRhYmxlLXJvdy1kZXRhaWwuZGlyZWN0aXZlJ1xuXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvZGF0YXRhYmxlLWFjdGlvbi1tZW51LWl0ZW0uZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2RhdGF0YWJsZS1hY3Rpb24tbWVudS10b2dnbGUuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2RhdGF0YWJsZS1jZWxsLXRwbC5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvZGF0YXRhYmxlLWNvbHVtbi1maWx0ZXItdHBsLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9kYXRhdGFibGUtY29sdW1uLWZpbHRlci5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvZGF0YXRhYmxlLWZpbHRlci5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvZGF0YXRhYmxlLXJvdy1hY3Rpb24taXRlbS5kaXJlY3RpdmUnXG5cbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2NvbHVtbnMtZGF0YS1maWx0ZXInXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9jb2x1bW5zLWRhdGEtZmlsdGVycy9zZWFyY2gtZGF0ZS5jb2x1bW5zLWRhdGEtZmlsdGVyJ1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvY29sdW1ucy1kYXRhLWZpbHRlcnMvc2VhcmNoLW51bWVyaWMuY29sdW1ucy1kYXRhLWZpbHRlcidcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2NvbHVtbnMtZGF0YS1maWx0ZXJzL3NlYXJjaC10ZXh0LmNvbHVtbnMtZGF0YS1maWx0ZXInXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9jb2x1bW5zLWRhdGEtZmlsdGVycy9tb2RlbHMnXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9jb2x1bW5zLWRhdGEtZmlsdGVycy91dGlscydcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2RhdGF0YWJsZS1hY2Nlc3NvcidcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2RhdGF0YWJsZS1jb25maWcnXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9kYXRhdGFibGUtZGF0YS1zb3VyY2UnXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9kYXRhdGFibGUtZ3FsLWRhdGEtc291cmNlJ1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvbWVudWJhci1pdGVtLWRhdGEnXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9wYWdlLWluZm8nXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9wcmVmZXJlbmNlcy1hY2Nlc3NvcidcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL3ByZWZlcmVuY2VzJ1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvdGFibGUtY29sdW1uJ1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvc29ydC1ldmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL3NvcnQtaXRlbSdcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL3RhYmxlLWNvbHVtbidcblxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jb2x1bW5zLWZpbHRlcnMuc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZGF0YXRhYmxlLWNvbHVtbi1jaGFuZ2VzLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2RhdGF0YWJsZS1wcmVmZXJlbmNlcy5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9kYXRhdGFibGUtc2Nyb2xsYmFyLWhlbHBlci5zZXJ2aWNlJ1xuXG5leHBvcnQgKiBmcm9tICcuL3Rva2Vucy9kYXRhdGFibGUtcHJlZmVyZW5jZXMtYWNjZXNzb3InXG5leHBvcnQgKiBmcm9tICcuL3Rva2Vucy9tZW51YmFyLWl0ZW0tZGF0YSdcblxuZXhwb3J0ICogZnJvbSAnLi91dGlscy93aXRoLXN0b3JlZC1jb2x1bW4taW5mbydcblxuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUubW9kdWxlJ1xuIl19
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, combineLatest, map, of, switchMap } from 'rxjs';
|
|
3
|
+
import { isNullOrUndefined, notNullOrUndefined } from '@theseam/ui-common/utils';
|
|
4
|
+
import { camelCase } from '@marklb/ngx-datatable';
|
|
5
|
+
import { THESEAM_COLUMNS_DATA_FILTER } from '../models/columns-data-filter';
|
|
6
|
+
import { THESEAM_COLUMNS_DATA_FILTERS_DEFAULT } from '../models/columns-data-filters/utils';
|
|
7
|
+
import { THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME, THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME } from '../models/columns-data-filters/models';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class ColumnsFiltersService {
|
|
10
|
+
constructor(_customColumnsDataFilters) {
|
|
11
|
+
this._customColumnsDataFilters = _customColumnsDataFilters;
|
|
12
|
+
this._columnFilterTemplates = new BehaviorSubject([]);
|
|
13
|
+
this.columnFilterTemplates$ = this._columnFilterTemplates.asObservable();
|
|
14
|
+
this._columnsFilters = new BehaviorSubject([]);
|
|
15
|
+
this.columnsFilters$ = this._columnsFilters.asObservable();
|
|
16
|
+
this.columnActiveFilterProps$ = this.columnsFilters$.pipe(switchMap(filters => {
|
|
17
|
+
if (!filters.length) {
|
|
18
|
+
return of([]);
|
|
19
|
+
}
|
|
20
|
+
return combineLatest(filters.map(f => f.filterStateChanges.pipe(map(filterState => !f.isDefault() ? filterState.state.prop : null))));
|
|
21
|
+
}), map(props => props.filter(notNullOrUndefined)));
|
|
22
|
+
}
|
|
23
|
+
registerColumnFilters(columns) {
|
|
24
|
+
this._columnsFilters.next([]);
|
|
25
|
+
const filters = columns
|
|
26
|
+
.filter(col => col.filterable)
|
|
27
|
+
.map(col => this.createColumnDataFilter(col, null));
|
|
28
|
+
this._columnsFilters.next(filters.filter(notNullOrUndefined));
|
|
29
|
+
}
|
|
30
|
+
setFilterTemplates(tpls) {
|
|
31
|
+
this._columnFilterTemplates.next(tpls);
|
|
32
|
+
}
|
|
33
|
+
createColumnDataFilter(column, initialValue) {
|
|
34
|
+
const prop = this.getColumnFilterProp(column);
|
|
35
|
+
if (isNullOrUndefined(prop)) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
return this._getColumnsDataFilter(prop, column, initialValue);
|
|
39
|
+
}
|
|
40
|
+
_getColumnsDataFilter(prop, column, initialValue) {
|
|
41
|
+
const filterClass = this._getColumnsDataFilterType(column);
|
|
42
|
+
let filter;
|
|
43
|
+
if (notNullOrUndefined(this._customColumnsDataFilters)) {
|
|
44
|
+
filter = this._customColumnsDataFilters.find(x => x.name === filterClass);
|
|
45
|
+
}
|
|
46
|
+
if (isNullOrUndefined(filter)) {
|
|
47
|
+
filter = THESEAM_COLUMNS_DATA_FILTERS_DEFAULT.find(x => x.name === filterClass);
|
|
48
|
+
}
|
|
49
|
+
if (notNullOrUndefined(filter)) {
|
|
50
|
+
return new filter.class(prop, initialValue, column);
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
_getColumnsDataFilterType(column) {
|
|
55
|
+
if (notNullOrUndefined(column.filterOptions) && notNullOrUndefined(column.filterOptions.filterType)) {
|
|
56
|
+
return column.filterOptions.filterType;
|
|
57
|
+
}
|
|
58
|
+
else if (notNullOrUndefined(column.cellType)) {
|
|
59
|
+
switch (column.cellType) {
|
|
60
|
+
case 'string':
|
|
61
|
+
case 'phone':
|
|
62
|
+
return THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME;
|
|
63
|
+
case 'currency':
|
|
64
|
+
case 'decimal':
|
|
65
|
+
case 'integer':
|
|
66
|
+
return THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME;
|
|
67
|
+
case 'date':
|
|
68
|
+
return THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME;
|
|
72
|
+
}
|
|
73
|
+
getColumnFilterProp(column) {
|
|
74
|
+
if (isNullOrUndefined(column)) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
const prop = column.filterOptions?.filterProp || column.prop || (notNullOrUndefined(column.name) ? camelCase(column.name) : undefined);
|
|
78
|
+
if (isNullOrUndefined(prop)) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
return `${prop}`;
|
|
82
|
+
}
|
|
83
|
+
getColumnFilter(prop) {
|
|
84
|
+
if (isNullOrUndefined(prop)) {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
return this._columnsFilters.value.find(f => f.prop === prop);
|
|
88
|
+
}
|
|
89
|
+
filters() {
|
|
90
|
+
return this._columnsFilters.value;
|
|
91
|
+
}
|
|
92
|
+
addFilter(filter) {
|
|
93
|
+
this._columnsFilters.next([...this._columnsFilters.value, filter]);
|
|
94
|
+
}
|
|
95
|
+
removeFilter(filter) {
|
|
96
|
+
this._columnsFilters.next([...this._columnsFilters.value.filter(c => c.name !== filter.name)]);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
ColumnsFiltersService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ColumnsFiltersService, deps: [{ token: THESEAM_COLUMNS_DATA_FILTER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
100
|
+
ColumnsFiltersService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ColumnsFiltersService });
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ColumnsFiltersService, decorators: [{
|
|
102
|
+
type: Injectable
|
|
103
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
104
|
+
type: Optional
|
|
105
|
+
}, {
|
|
106
|
+
type: Inject,
|
|
107
|
+
args: [THESEAM_COLUMNS_DATA_FILTER]
|
|
108
|
+
}] }]; } });
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy1maWx0ZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL3NlcnZpY2VzL2NvbHVtbnMtZmlsdGVycy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUV6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUloRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDakQsT0FBTyxFQUFxQiwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRTlGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBQzNGLE9BQU8sRUFBRSw0Q0FBNEMsRUFBRSwrQ0FBK0MsRUFBRSw0Q0FBNEMsRUFBRSxNQUFNLHVDQUF1QyxDQUFBOztBQUduTSxNQUFNLE9BQU8scUJBQXFCO0lBb0JoQyxZQUNvRSx5QkFBMEQ7UUFBMUQsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUFpQztRQXBCN0csMkJBQXNCLEdBQUcsSUFBSSxlQUFlLENBQTBDLEVBQUUsQ0FBQyxDQUFBO1FBQzFGLDJCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUVsRSxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFzQixFQUFFLENBQUMsQ0FBQTtRQUMvRCxvQkFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFckQsNkJBQXdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FB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QUFDLENBQUE7SUFDOUQsQ0FBQztJQUVNLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFBO0lBQ25DLENBQUM7SUFFTSxTQUFTLENBQUMsTUFBeUI7UUFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBRSxDQUFDLENBQUE7SUFDdEUsQ0FBQztJQUVNLFlBQVksQ0FBQyxNQUF5QjtRQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUUsQ0FBQyxDQUFBO0lBQ2xHLENBQUM7O2tIQXhIVSxxQkFBcUIsa0JBcUJWLDJCQUEyQjtzSEFyQnRDLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVOzswQkFzQk4sUUFBUTs7MEJBQUksTUFBTTsyQkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcydcblxuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQsIG5vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcblxuaW1wb3J0IHsgVGhlU2VhbURhdGF0YWJsZUNvbHVtbiB9IGZyb20gJy4uL21vZGVscy90YWJsZS1jb2x1bW4nXG5pbXBvcnQgeyBEYXRhRmlsdGVyQ29udGFpbmVyIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2RhdGEtZmlsdGVycydcbmltcG9ydCB7IGNhbWVsQ2FzZSB9IGZyb20gJ0BtYXJrbGIvbmd4LWRhdGF0YWJsZSdcbmltcG9ydCB7IENvbHVtbnNEYXRhRmlsdGVyLCBUSEVTRUFNX0NPTFVNTlNfREFUQV9GSUxURVIgfSBmcm9tICcuLi9tb2RlbHMvY29sdW1ucy1kYXRhLWZpbHRlcidcbmltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5GaWx0ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2RhdGF0YWJsZS1jb2x1bW4tZmlsdGVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IFRIRVNFQU1fQ09MVU1OU19EQVRBX0ZJTFRFUlNfREVGQVVMVCB9IGZyb20gJy4uL21vZGVscy9jb2x1bW5zLWRhdGEtZmlsdGVycy91dGlscydcbmltcG9ydCB7IFRIRVNFQU1fQ09MVU1OU19EQVRBX0ZJTFRFUl9EQVRFX1NFQVJDSF9OQU1FLCBUSEVTRUFNX0NPTFVNTlNfREFUQV9GSUxURVJfTlVNRVJJQ19TRUFSQ0hfTkFNRSwgVEhFU0VBTV9DT0xVTU5TX0RBVEFfRklMVEVSX1RFWFRfU0VBUkNIX05BTUUgfSBmcm9tICcuLi9tb2RlbHMvY29sdW1ucy1kYXRhLWZpbHRlcnMvbW9kZWxzJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29sdW1uc0ZpbHRlcnNTZXJ2aWNlIGltcGxlbWVudHMgRGF0YUZpbHRlckNvbnRhaW5lciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbHVtbkZpbHRlclRlbXBsYXRlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGhlU2VhbURhdGF0YWJsZUNvbHVtbkZpbHRlckRpcmVjdGl2ZVtdPihbXSlcbiAgcHVibGljIHJlYWRvbmx5IGNvbHVtbkZpbHRlclRlbXBsYXRlcyQgPSB0aGlzLl9jb2x1bW5GaWx0ZXJUZW1wbGF0ZXMuYXNPYnNlcnZhYmxlKClcblxuICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5zRmlsdGVycyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29sdW1uc0RhdGFGaWx0ZXJbXT4oW10pXG4gIHB1YmxpYyByZWFkb25seSBjb2x1bW5zRmlsdGVycyQgPSB0aGlzLl9jb2x1bW5zRmlsdGVycy5hc09ic2VydmFibGUoKVxuXG4gIHB1YmxpYyByZWFkb25seSBjb2x1bW5BY3RpdmVGaWx0ZXJQcm9wcyQgPSB0aGlzLmNvbHVtbnNGaWx0ZXJzJC5waXBlKFxuICAgIHN3aXRjaE1hcChmaWx0ZXJzID0+IHtcbiAgICAgIGlmICghZmlsdGVycy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG9mKFtdKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tYmluZUxhdGVzdChmaWx0ZXJzLm1hcChmID0+IGYuZmlsdGVyU3RhdGVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIG1hcChmaWx0ZXJTdGF0ZSA9PiAhZi5pc0RlZmF1bHQoKSA/IGZpbHRlclN0YXRlLnN0YXRlLnByb3AgOiBudWxsKVxuICAgICAgKSkpXG4gICAgfSksXG4gICAgbWFwKHByb3BzID0+IHByb3BzLmZpbHRlcihub3ROdWxsT3JVbmRlZmluZWQpKVxuICApXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUSEVTRUFNX0NPTFVNTlNfREFUQV9GSUxURVIpIHByaXZhdGUgcmVhZG9ubHkgX2N1c3RvbUNvbHVtbnNEYXRhRmlsdGVycz86IHsgbmFtZTogc3RyaW5nLCBjbGFzczogYW55IH1bXVxuICApIHt9XG5cbiAgcHVibGljIHJlZ2lzdGVyQ29sdW1uRmlsdGVycyhjb2x1bW5zOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10pIHtcbiAgICB0aGlzLl9jb2x1bW5zRmlsdGVycy5uZXh0KFtdKVxuXG4gICAgY29uc3QgZmlsdGVycyA9IGNvbHVtbnNcbiAgICAgIC5maWx0ZXIoY29sID0+IGNvbC5maWx0ZXJhYmxlKVxuICAgICAgLm1hcChjb2wgPT4gdGhpcy5jcmVhdGVDb2x1bW5EYXRhRmlsdGVyKGNvbCwgbnVsbCkpXG5cbiAgICB0aGlzLl9jb2x1bW5zRmlsdGVycy5uZXh0KGZpbHRlcnMuZmlsdGVyKG5vdE51bGxPclVuZGVmaW5lZCkpXG4gIH1cblxuICBwdWJsaWMgc2V0RmlsdGVyVGVtcGxhdGVzKHRwbHM6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5GaWx0ZXJEaXJlY3RpdmVbXSkge1xuICAgIHRoaXMuX2NvbHVtbkZpbHRlclRlbXBsYXRlcy5uZXh0KHRwbHMpXG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQ29sdW1uRGF0YUZpbHRlcihjb2x1bW46IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4sIGluaXRpYWxWYWx1ZTogYW55KTogQ29sdW1uc0RhdGFGaWx0ZXIgfCBudWxsIHtcbiAgICBjb25zdCBwcm9wID0gdGhpcy5nZXRDb2x1bW5GaWx0ZXJQcm9wKGNvbHVtbilcblxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChwcm9wKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZ2V0Q29sdW1uc0RhdGFGaWx0ZXIocHJvcCwgY29sdW1uLCBpbml0aWFsVmFsdWUpXG4gIH1cblxuICBwcml2YXRlIF9nZXRDb2x1bW5zRGF0YUZpbHRlcihwcm9wOiBzdHJpbmcsIGNvbHVtbjogVGhlU2VhbURhdGF0YWJsZUNvbHVtbiwgaW5pdGlhbFZhbHVlOiBhbnkpOiBDb2x1bW5zRGF0YUZpbHRlciB8IG51bGxcbiAge1xuICAgIGNvbnN0IGZpbHRlckNsYXNzID0gdGhpcy5fZ2V0Q29sdW1uc0RhdGFGaWx0ZXJUeXBlKGNvbHVtbilcblxuICAgIGxldCBmaWx0ZXJcbiAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHRoaXMuX2N1c3RvbUNvbHVtbnNEYXRhRmlsdGVycykpIHtcbiAgICAgIGZpbHRlciA9IHRoaXMuX2N1c3RvbUNvbHVtbnNEYXRhRmlsdGVycy5maW5kKHggPT4geC5uYW1lID09PSBmaWx0ZXJDbGFzcylcbiAgICB9XG5cbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoZmlsdGVyKSkge1xuICAgICAgZmlsdGVyID0gVEhFU0VBTV9DT0xVTU5TX0RBVEFfRklMVEVSU19ERUZBVUxULmZpbmQoeCA9PiB4Lm5hbWUgPT09IGZpbHRlckNsYXNzKVxuICAgIH1cblxuICAgIGlmIChub3ROdWxsT3JVbmRlZmluZWQoZmlsdGVyKSkge1xuICAgICAgcmV0dXJuIG5ldyBmaWx0ZXIuY2xhc3MocHJvcCwgaW5pdGlhbFZhbHVlLCBjb2x1bW4pXG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHByaXZhdGUgX2dldENvbHVtbnNEYXRhRmlsdGVyVHlwZShjb2x1bW46IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4pOiBzdHJpbmcge1xuICAgIGlmIChub3ROdWxsT3JVbmRlZmluZWQoY29sdW1uLmZpbHRlck9wdGlvbnMpICYmIG5vdE51bGxPclVuZGVmaW5lZChjb2x1bW4uZmlsdGVyT3B0aW9ucy5maWx0ZXJUeXBlKSkge1xuICAgICAgcmV0dXJuIGNvbHVtbi5maWx0ZXJPcHRpb25zLmZpbHRlclR5cGVcbiAgICB9XG4gICAgZWxzZSBpZiAobm90TnVsbE9yVW5kZWZpbmVkKGNvbHVtbi5jZWxsVHlwZSkpIHtcbiAgICAgIHN3aXRjaCAoY29sdW1uLmNlbGxUeXBlKSB7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIGNhc2UgJ3Bob25lJzpcbiAgICAgICAgICByZXR1cm4gVEhFU0VBTV9DT0xVTU5TX0RBVEFfRklMVEVSX1RFWFRfU0VBUkNIX05BTUVcbiAgICAgICAgY2FzZSAnY3VycmVuY3knOlxuICAgICAgICBjYXNlICdkZWNpbWFsJzpcbiAgICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgICAgcmV0dXJuIFRIRVNFQU1fQ09MVU1OU19EQVRBX0ZJTFRFUl9OVU1FUklDX1NFQVJDSF9OQU1FXG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgIHJldHVybiBUSEVTRUFNX0NPTFVNTlNfREFUQV9GSUxURVJfREFURV9TRUFSQ0hfTkFNRVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBUSEVTRUFNX0NPTFVNTlNfREFUQV9GSUxURVJfVEVYVF9TRUFSQ0hfTkFNRVxuICB9XG5cbiAgcHVibGljIGdldENvbHVtbkZpbHRlclByb3AoY29sdW1uOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChjb2x1bW4pKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IHByb3AgPSBjb2x1bW4uZmlsdGVyT3B0aW9ucz8uZmlsdGVyUHJvcCB8fCBjb2x1bW4ucHJvcCB8fCAobm90TnVsbE9yVW5kZWZpbmVkKGNvbHVtbi5uYW1lKSA/IGNhbWVsQ2FzZSg8c3RyaW5nPmNvbHVtbi5uYW1lKSA6IHVuZGVmaW5lZClcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocHJvcCkpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3Byb3B9YFxuICB9XG5cbiAgcHVibGljIGdldENvbHVtbkZpbHRlcihwcm9wOiBzdHJpbmcgfCBudWxsKTogQ29sdW1uc0RhdGFGaWx0ZXIgfCB1bmRlZmluZWQge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChwcm9wKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zRmlsdGVycy52YWx1ZS5maW5kKGYgPT4gZi5wcm9wID09PSBwcm9wKVxuICB9XG5cbiAgcHVibGljIGZpbHRlcnMoKTogQ29sdW1uc0RhdGFGaWx0ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnNGaWx0ZXJzLnZhbHVlXG4gIH1cblxuICBwdWJsaWMgYWRkRmlsdGVyKGZpbHRlcjogQ29sdW1uc0RhdGFGaWx0ZXIpIHtcbiAgICB0aGlzLl9jb2x1bW5zRmlsdGVycy5uZXh0KFsgLi4udGhpcy5fY29sdW1uc0ZpbHRlcnMudmFsdWUsIGZpbHRlciBdKVxuICB9XG5cbiAgcHVibGljIHJlbW92ZUZpbHRlcihmaWx0ZXI6IENvbHVtbnNEYXRhRmlsdGVyKSB7XG4gICAgdGhpcy5fY29sdW1uc0ZpbHRlcnMubmV4dChbIC4uLnRoaXMuX2NvbHVtbnNGaWx0ZXJzLnZhbHVlLmZpbHRlcihjID0+IGMubmFtZSAhPT0gZmlsdGVyLm5hbWUpIF0pXG4gIH1cbn1cbiJdfQ==
|