@elderbyte/ngx-starter 17.11.0-beta2 → 17.11.0-beta4
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/esm2022/lib/components/forms/search/domain/input/search-input-state.mjs +9 -19
- package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +3 -3
- package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +26 -16
- package/esm2022/lib/components/forms/search/filter/default-input-filter-converter.mjs +2 -1
- package/esm2022/lib/components/forms/search/filter/include-exclude-input-converter.mjs +25 -53
- package/esm2022/lib/components/select/elder-select.module.mjs +2 -1
- package/esm2022/lib/components/select/filter/elder-chip-filter-style-resolver.mjs +10 -10
- package/esm2022/lib/components/select/filter/elder-chips-filter.directive.mjs +18 -99
- package/esm2022/lib/components/select/filter/include-exclude-selection-model.mjs +108 -0
- package/esm2022/lib/components/select/multi/elder-search-include-exclude.directive.mjs +10 -19
- package/fesm2022/elderbyte-ngx-starter.mjs +194 -206
- package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
- package/lib/components/forms/search/domain/input/search-input-state.d.ts +4 -20
- package/lib/components/forms/search/elder-search-input.directive.d.ts +9 -6
- package/lib/components/forms/search/filter/include-exclude-input-converter.d.ts +11 -27
- package/lib/components/select/elder-select.module.d.ts +1 -0
- package/lib/components/select/filter/elder-chip-filter-style-resolver.d.ts +3 -3
- package/lib/components/select/filter/elder-chips-filter.directive.d.ts +3 -32
- package/lib/components/select/filter/include-exclude-selection-model.d.ts +46 -0
- package/lib/components/select/multi/elder-search-include-exclude.directive.d.ts +2 -3
- package/package.json +1 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { BehaviorSubject } from 'rxjs';
|
|
2
|
+
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
export class IncludeExcludeState {
|
|
5
|
+
constructor(id, mode) {
|
|
6
|
+
this.id = id;
|
|
7
|
+
this.mode = mode;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export var IncludeExcludeMode;
|
|
11
|
+
(function (IncludeExcludeMode) {
|
|
12
|
+
IncludeExcludeMode["NEUTRAL"] = "NEUTRAL";
|
|
13
|
+
IncludeExcludeMode["INCLUDE"] = "INCLUDE";
|
|
14
|
+
IncludeExcludeMode["EXCLUDE"] = "EXCLUDE";
|
|
15
|
+
})(IncludeExcludeMode || (IncludeExcludeMode = {}));
|
|
16
|
+
export class IncludeExcludeSelectionModel {
|
|
17
|
+
constructor() {
|
|
18
|
+
/***************************************************************************
|
|
19
|
+
* *
|
|
20
|
+
* Fields *
|
|
21
|
+
* *
|
|
22
|
+
**************************************************************************/
|
|
23
|
+
this.log = LoggerFactory.getLogger(this.constructor.name);
|
|
24
|
+
this.stateById$ = new BehaviorSubject(new Map());
|
|
25
|
+
}
|
|
26
|
+
/***************************************************************************
|
|
27
|
+
* *
|
|
28
|
+
* Properties *
|
|
29
|
+
* *
|
|
30
|
+
**************************************************************************/
|
|
31
|
+
get selection() {
|
|
32
|
+
return Array.from(this.stateById$.getValue().values());
|
|
33
|
+
}
|
|
34
|
+
get selection$() {
|
|
35
|
+
return this.stateById$.pipe(map(stateMap => Array.from(stateMap.values())));
|
|
36
|
+
}
|
|
37
|
+
/***************************************************************************
|
|
38
|
+
* *
|
|
39
|
+
* Public API *
|
|
40
|
+
* *
|
|
41
|
+
**************************************************************************/
|
|
42
|
+
cycleExisting(id) {
|
|
43
|
+
const existingState = this.findStateById(id);
|
|
44
|
+
if (existingState) {
|
|
45
|
+
return this.updateState(id, this.cycleFilterEntitySelection(existingState.mode));
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
initTo(ids, initialMode = IncludeExcludeMode.NEUTRAL) {
|
|
52
|
+
const current = this.stateById$.getValue();
|
|
53
|
+
const newStates = new Map();
|
|
54
|
+
ids.forEach(id => {
|
|
55
|
+
if (current.has(id)) {
|
|
56
|
+
newStates.set(id, current.get(id));
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
newStates.set(id, new IncludeExcludeState(id, initialMode));
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
this.stateById$.next(newStates);
|
|
63
|
+
}
|
|
64
|
+
replaceSelection(newStates) {
|
|
65
|
+
this.stateById$.next(this.toStateMap(newStates));
|
|
66
|
+
}
|
|
67
|
+
updateState(id, mode) {
|
|
68
|
+
const map = this.stateById$.getValue();
|
|
69
|
+
const newState = new IncludeExcludeState(id, mode);
|
|
70
|
+
map.set(id, newState);
|
|
71
|
+
this.stateById$.next(map);
|
|
72
|
+
return newState;
|
|
73
|
+
}
|
|
74
|
+
updateStates(newStates) {
|
|
75
|
+
const current = this.stateById$.getValue();
|
|
76
|
+
newStates.forEach(newState => {
|
|
77
|
+
current.set(newState.id, newState);
|
|
78
|
+
});
|
|
79
|
+
this.stateById$.next(current);
|
|
80
|
+
}
|
|
81
|
+
isInMode(id, mode) {
|
|
82
|
+
return this.findStateById(id)?.mode == mode;
|
|
83
|
+
}
|
|
84
|
+
findStateById(searchedId) {
|
|
85
|
+
return this.stateById$.getValue().get(searchedId);
|
|
86
|
+
}
|
|
87
|
+
/***************************************************************************
|
|
88
|
+
* *
|
|
89
|
+
* Private methods *
|
|
90
|
+
* *
|
|
91
|
+
**************************************************************************/
|
|
92
|
+
cycleFilterEntitySelection(selection) {
|
|
93
|
+
switch (selection) {
|
|
94
|
+
case IncludeExcludeMode.NEUTRAL:
|
|
95
|
+
return IncludeExcludeMode.INCLUDE;
|
|
96
|
+
case IncludeExcludeMode.INCLUDE:
|
|
97
|
+
return IncludeExcludeMode.EXCLUDE;
|
|
98
|
+
case IncludeExcludeMode.EXCLUDE:
|
|
99
|
+
return IncludeExcludeMode.NEUTRAL;
|
|
100
|
+
default:
|
|
101
|
+
return IncludeExcludeMode.NEUTRAL;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
toStateMap(list) {
|
|
105
|
+
return new Map(list.map(entity => [entity.id, entity]));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZS1leGNsdWRlLXNlbGVjdGlvbi1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L2ZpbHRlci9pbmNsdWRlLWV4Y2x1ZGUtc2VsZWN0aW9uLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ2tCLEVBQVUsRUFDbkIsSUFBd0I7UUFEZixPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQW9CO0lBQzdCLENBQUM7Q0FDTjtBQUVELE1BQU0sQ0FBTixJQUFZLGtCQUlYO0FBSkQsV0FBWSxrQkFBa0I7SUFDNUIseUNBQW1CLENBQUE7SUFDbkIseUNBQW1CLENBQUE7SUFDbkIseUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUpXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFJN0I7QUFHRCxNQUFNLE9BQU8sNEJBQTRCO0lBQXpDO1FBRUU7Ozs7b0ZBSTRFO1FBRTNELFFBQUcsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckQsZUFBVSxHQUFHLElBQUksZUFBZSxDQUFtQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7SUE4R2pHLENBQUM7SUE1R0M7Ozs7Z0ZBSTRFO0lBRTVFLElBQVcsU0FBUztRQUNsQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxN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QUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXBFLDBCQUEwQixDQUFDLFNBQTZCO1FBQzlELFFBQVEsU0FBUyxFQUFFO1lBQ2pCLEtBQUssa0JBQWtCLENBQUMsT0FBTztnQkFDN0IsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7WUFDcEMsS0FBSyxrQkFBa0IsQ0FBQyxPQUFPO2dCQUM3QixPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztZQUNwQyxLQUFLLGtCQUFrQixDQUFDLE9BQU87Z0JBQzdCLE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDO1lBQ3BDO2dCQUNFLE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUVPLFVBQVUsQ0FDaEIsSUFBMkI7UUFFM0IsT0FBTyxJQUFJLEdBQUcsQ0FDWixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQ3hDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjbGFzcyBJbmNsdWRlRXhjbHVkZVN0YXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmcsXG4gICAgcHVibGljIG1vZGU6IEluY2x1ZGVFeGNsdWRlTW9kZVxuICApIHsgfVxufVxuXG5leHBvcnQgZW51bSBJbmNsdWRlRXhjbHVkZU1vZGUge1xuICBORVVUUkFMID0gJ05FVVRSQUwnLFxuICBJTkNMVURFID0gJ0lOQ0xVREUnLFxuICBFWENMVURFID0gJ0VYQ0xVREUnXG59XG5cblxuZXhwb3J0IGNsYXNzIEluY2x1ZGVFeGNsdWRlU2VsZWN0aW9uTW9kZWwge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHN0YXRlQnlJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxzdHJpbmcsIEluY2x1ZGVFeGNsdWRlU3RhdGU+PihuZXcgTWFwKCkpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBnZXQgc2VsZWN0aW9uKCk6IEluY2x1ZGVFeGNsdWRlU3RhdGVbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5zdGF0ZUJ5SWQkLmdldFZhbHVlKCkudmFsdWVzKCkpO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3Rpb24kKCk6IE9ic2VydmFibGU8SW5jbHVkZUV4Y2x1ZGVTdGF0ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVCeUlkJC5waXBlKFxuICAgICAgbWFwKHN0YXRlTWFwID0+IEFycmF5LmZyb20oc3RhdGVNYXAudmFsdWVzKCkpKSxcbiAgICApO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGN5Y2xlRXhpc3RpbmcoaWQ6IHN0cmluZyk6IEluY2x1ZGVFeGNsdWRlU3RhdGUgfCBudWxsIHtcbiAgICBjb25zdCBleGlzdGluZ1N0YXRlID0gdGhpcy5maW5kU3RhdGVCeUlkKGlkKTtcbiAgICBpZiAoZXhpc3RpbmdTdGF0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlU3RhdGUoXG4gICAgICAgIGlkLFxuICAgICAgICB0aGlzLmN5Y2xlRmlsdGVyRW50aXR5U2VsZWN0aW9uKGV4aXN0aW5nU3RhdGUubW9kZSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbml0VG8oXG4gICAgaWRzOiBzdHJpbmdbXSxcbiAgICBpbml0aWFsTW9kZSA9IEluY2x1ZGVFeGNsdWRlTW9kZS5ORVVUUkFMXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnN0YXRlQnlJZCQuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCBuZXdTdGF0ZXMgPSBuZXcgTWFwPHN0cmluZywgSW5jbHVkZUV4Y2x1ZGVTdGF0ZT4oKTtcbiAgICBpZHMuZm9yRWFjaChpZCA9PiB7XG4gICAgICBpZihjdXJyZW50LmhhcyhpZCkpe1xuICAgICAgICBuZXdTdGF0ZXMuc2V0KGlkLCBjdXJyZW50LmdldChpZCkpO1xuICAgICAgfWVsc2V7XG4gICAgICAgIG5ld1N0YXRlcy5zZXQoaWQsIG5ldyBJbmNsdWRlRXhjbHVkZVN0YXRlKGlkLCBpbml0aWFsTW9kZSkpXG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zdGF0ZUJ5SWQkLm5leHQobmV3U3RhdGVzKTtcbiAgfVxuXG4gIHB1YmxpYyByZXBsYWNlU2VsZWN0aW9uKFxuICAgIG5ld1N0YXRlczogSW5jbHVkZUV4Y2x1ZGVTdGF0ZVtdXG4gICk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVCeUlkJC5uZXh0KHRoaXMudG9TdGF0ZU1hcChuZXdTdGF0ZXMpKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTdGF0ZShpZDogc3RyaW5nLCBtb2RlOiBJbmNsdWRlRXhjbHVkZU1vZGUpOiBJbmNsdWRlRXhjbHVkZVN0YXRlIHtcbiAgICAgY29uc3QgbWFwID0gdGhpcy5zdGF0ZUJ5SWQkLmdldFZhbHVlKCk7XG4gICAgIGNvbnN0IG5ld1N0YXRlID0gbmV3IEluY2x1ZGVFeGNsdWRlU3RhdGUoaWQsIG1vZGUpO1xuICAgICBtYXAuc2V0KGlkLCBuZXdTdGF0ZSk7XG4gICAgIHRoaXMuc3RhdGVCeUlkJC5uZXh0KG1hcCk7XG4gICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTdGF0ZXMoXG4gICAgbmV3U3RhdGVzOiBJbmNsdWRlRXhjbHVkZVN0YXRlW11cbiAgKTogdm9pZHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5zdGF0ZUJ5SWQkLmdldFZhbHVlKCk7XG4gICAgbmV3U3RhdGVzLmZvckVhY2gobmV3U3RhdGUgPT4ge1xuICAgICAgY3VycmVudC5zZXQobmV3U3RhdGUuaWQsIG5ld1N0YXRlKTtcbiAgICB9KTtcbiAgICB0aGlzLnN0YXRlQnlJZCQubmV4dChjdXJyZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBpc0luTW9kZShpZDogc3RyaW5nLCBtb2RlOiBJbmNsdWRlRXhjbHVkZU1vZGUpOiBib29sZWFue1xuICAgIHJldHVybiB0aGlzLmZpbmRTdGF0ZUJ5SWQoaWQpPy5tb2RlID09IG1vZGU7XG4gIH1cblxuICBwdWJsaWMgZmluZFN0YXRlQnlJZChzZWFyY2hlZElkOiBzdHJpbmcpOiBJbmNsdWRlRXhjbHVkZVN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVCeUlkJC5nZXRWYWx1ZSgpLmdldChzZWFyY2hlZElkKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgY3ljbGVGaWx0ZXJFbnRpdHlTZWxlY3Rpb24oc2VsZWN0aW9uOiBJbmNsdWRlRXhjbHVkZU1vZGUpOiBJbmNsdWRlRXhjbHVkZU1vZGUge1xuICAgIHN3aXRjaCAoc2VsZWN0aW9uKSB7XG4gICAgICBjYXNlIEluY2x1ZGVFeGNsdWRlTW9kZS5ORVVUUkFMOlxuICAgICAgICByZXR1cm4gSW5jbHVkZUV4Y2x1ZGVNb2RlLklOQ0xVREU7XG4gICAgICBjYXNlIEluY2x1ZGVFeGNsdWRlTW9kZS5JTkNMVURFOlxuICAgICAgICByZXR1cm4gSW5jbHVkZUV4Y2x1ZGVNb2RlLkVYQ0xVREU7XG4gICAgICBjYXNlIEluY2x1ZGVFeGNsdWRlTW9kZS5FWENMVURFOlxuICAgICAgICByZXR1cm4gSW5jbHVkZUV4Y2x1ZGVNb2RlLk5FVVRSQUw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gSW5jbHVkZUV4Y2x1ZGVNb2RlLk5FVVRSQUw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0b1N0YXRlTWFwKFxuICAgIGxpc3Q6IEluY2x1ZGVFeGNsdWRlU3RhdGVbXVxuICApOiBNYXA8c3RyaW5nLCBJbmNsdWRlRXhjbHVkZVN0YXRlPiB7XG4gICAgcmV0dXJuIG5ldyBNYXAoXG4gICAgICBsaXN0Lm1hcChlbnRpdHkgPT4gW2VudGl0eS5pZCwgZW50aXR5XSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -3,6 +3,7 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
|
3
3
|
import { BehaviorSubject, combineLatest } from 'rxjs';
|
|
4
4
|
import { filter } from 'rxjs/operators';
|
|
5
5
|
import IncludeExcludeInputConverter from '../../forms/search/filter/include-exclude-input-converter';
|
|
6
|
+
import { Objects } from '../../../common/objects';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "../../forms/search/elder-search-input.directive";
|
|
8
9
|
import * as i2 from "../filter/elder-chips-filter.directive";
|
|
@@ -32,7 +33,7 @@ export class ElderSearchIncludeExcludeDirective {
|
|
|
32
33
|
* Fields *
|
|
33
34
|
* *
|
|
34
35
|
**************************************************************************/
|
|
35
|
-
this._includeSuffix$ = new BehaviorSubject(
|
|
36
|
+
this._includeSuffix$ = new BehaviorSubject('');
|
|
36
37
|
this._excludeSuffix$ = new BehaviorSubject(null);
|
|
37
38
|
this.setupSearchQueryTransforms();
|
|
38
39
|
}
|
|
@@ -43,28 +44,17 @@ export class ElderSearchIncludeExcludeDirective {
|
|
|
43
44
|
**************************************************************************/
|
|
44
45
|
setupSearchQueryTransforms() {
|
|
45
46
|
combineLatest([
|
|
46
|
-
this.elderSearchInput.
|
|
47
|
+
this.elderSearchInput.queryKey$,
|
|
47
48
|
this._includeSuffix$,
|
|
48
49
|
this._excludeSuffix$
|
|
49
50
|
])
|
|
50
|
-
.pipe(takeUntilDestroyed(this.destroyRef), filter(([queryKey, includeSuffix, excludeSuffix]) => !!queryKey &&
|
|
51
|
+
.pipe(takeUntilDestroyed(this.destroyRef), filter(([queryKey, includeSuffix, excludeSuffix]) => !!queryKey && Objects.nonNull(includeSuffix) && Objects.nonNull(excludeSuffix)))
|
|
51
52
|
.subscribe(([queryKey, includeSuffix, excludeSuffix]) => {
|
|
52
|
-
this.
|
|
53
|
+
this.elderSearchInput.inputConverter = this.buildConverter(queryKey, includeSuffix, excludeSuffix);
|
|
53
54
|
});
|
|
54
55
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
this.elderChipsFilter
|
|
58
|
-
.selection$
|
|
59
|
-
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
60
|
-
.subscribe(selection => converter.selection = this.transformSelectionToMap(selection));
|
|
61
|
-
converter.mergedSelections$
|
|
62
|
-
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
63
|
-
.subscribe(selections => this.elderChipsFilter.selection = Array.from(selections.values()));
|
|
64
|
-
this.elderSearchInput.inputConverter = converter;
|
|
65
|
-
}
|
|
66
|
-
transformSelectionToMap(list) {
|
|
67
|
-
return new Map(list.map(entity => [entity.id, entity]));
|
|
56
|
+
buildConverter(queryKey, includeSuffix, excludeSuffix) {
|
|
57
|
+
return new IncludeExcludeInputConverter(this.elderChipsFilter.selectionModel, queryKey, includeSuffix, excludeSuffix);
|
|
68
58
|
}
|
|
69
59
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderSearchIncludeExcludeDirective, deps: [{ token: i1.ElderSearchInputDirective }, { token: i2.ElderChipsFilterDirective }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
70
60
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: ElderSearchIncludeExcludeDirective, isStandalone: true, selector: "[elderSearchIncludeExclude]", inputs: { includeSuffix: "includeSuffix", excludeSuffix: "excludeSuffix" }, ngImport: i0 }); }
|
|
@@ -78,6 +68,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
78
68
|
}], ctorParameters: () => [{ type: i1.ElderSearchInputDirective }, { type: i2.ElderChipsFilterDirective }, { type: i0.DestroyRef }], propDecorators: { includeSuffix: [{
|
|
79
69
|
type: Input
|
|
80
70
|
}], excludeSuffix: [{
|
|
81
|
-
type: Input
|
|
71
|
+
type: Input,
|
|
72
|
+
args: [{ required: true }]
|
|
82
73
|
}] } });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWluY2x1ZGUtZXhjbHVkZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9tdWx0aS9lbGRlci1zZWFyY2gtaW5jbHVkZS1leGNsdWRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyw0QkFBNEIsTUFBTSwyREFBMkQsQ0FBQztBQUVyRyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFNaEQsTUFBTSxPQUFPLGtDQUFrQztJQVc3Qzs7OztnRkFJNEU7SUFFNUUsSUFDVyxhQUFhLENBQUMsTUFBYztRQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFDVyxhQUFhLENBQUMsTUFBYztRQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ21CLGdCQUEyQyxFQUMzQyxnQkFBMkMsRUFDcEQsVUFBc0I7UUFGYixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTJCO1FBQzNDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBMkI7UUFDcEQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWxDaEM7Ozs7b0ZBSTRFO1FBRTNELG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDbEQsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsQ0FBQztRQTZCbkUsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVwRSwwQkFBMEI7UUFDaEMsYUFBYSxDQUFDO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVM7WUFDL0IsSUFBSSxDQUFDLGVBQWU7WUFDcEIsSUFBSSxDQUFDLGVBQWU7U0FDckIsQ0FBQzthQUNDLElBQUksQ0FDSCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQ25DLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFLENBQ2xELENBQUMsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUMvRSxDQUNGO2FBQ0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUU7WUFDdEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDckcsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBSU8sY0FBYyxDQUNwQixRQUFnQixFQUNoQixhQUFxQixFQUNyQixhQUFxQjtRQUVyQixPQUFPLElBQUksNEJBQTRCLENBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQ3BDLFFBQVEsRUFDUixhQUFhLEVBQ2IsYUFBYSxDQUNkLENBQUM7SUFDSixDQUFDOytHQTdFVSxrQ0FBa0M7bUdBQWxDLGtDQUFrQzs7NEZBQWxDLGtDQUFrQztrQkFKOUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7K0pBbUJZLGFBQWE7c0JBRHZCLEtBQUs7Z0JBTUssYUFBYTtzQkFEdkIsS0FBSzt1QkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Rlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0VsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmV9IGZyb20gJy4uLy4uL2Zvcm1zL3NlYXJjaC9lbGRlci1zZWFyY2gtaW5wdXQuZGlyZWN0aXZlJztcbmltcG9ydCBJbmNsdWRlRXhjbHVkZUlucHV0Q29udmVydGVyIGZyb20gJy4uLy4uL2Zvcm1zL3NlYXJjaC9maWx0ZXIvaW5jbHVkZS1leGNsdWRlLWlucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQge0VsZGVyQ2hpcHNGaWx0ZXJEaXJlY3RpdmV9IGZyb20gJy4uL2ZpbHRlci9lbGRlci1jaGlwcy1maWx0ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7T2JqZWN0c30gZnJvbSAnLi4vLi4vLi4vY29tbW9uL29iamVjdHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZWxkZXJTZWFyY2hJbmNsdWRlRXhjbHVkZV0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VhcmNoSW5jbHVkZUV4Y2x1ZGVEaXJlY3RpdmUge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2luY2x1ZGVTdWZmaXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhjbHVkZVN1ZmZpeCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbmNsdWRlU3VmZml4KHN1ZmZpeDogc3RyaW5nKSB7XG4gICAgdGhpcy5faW5jbHVkZVN1ZmZpeCQubmV4dChzdWZmaXgpO1xuICB9XG5cbiAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pXG4gIHB1YmxpYyBzZXQgZXhjbHVkZVN1ZmZpeChzdWZmaXg6IHN0cmluZykge1xuICAgIHRoaXMuX2V4Y2x1ZGVTdWZmaXgkLm5leHQoc3VmZml4KTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxkZXJTZWFyY2hJbnB1dDogRWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZGVyQ2hpcHNGaWx0ZXI6IEVsZGVyQ2hpcHNGaWx0ZXJEaXJlY3RpdmUsXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmXG4gICkge1xuICAgIHRoaXMuc2V0dXBTZWFyY2hRdWVyeVRyYW5zZm9ybXMoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgc2V0dXBTZWFyY2hRdWVyeVRyYW5zZm9ybXMoKSB7XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmVsZGVyU2VhcmNoSW5wdXQucXVlcnlLZXkkLFxuICAgICAgdGhpcy5faW5jbHVkZVN1ZmZpeCQsXG4gICAgICB0aGlzLl9leGNsdWRlU3VmZml4JFxuICAgIF0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgIGZpbHRlcigoW3F1ZXJ5S2V5LCBpbmNsdWRlU3VmZml4LCBleGNsdWRlU3VmZml4XSkgPT5cbiAgICAgICAgICAhIXF1ZXJ5S2V5ICYmIE9iamVjdHMubm9uTnVsbChpbmNsdWRlU3VmZml4KSAmJiBPYmplY3RzLm5vbk51bGwoZXhjbHVkZVN1ZmZpeClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW3F1ZXJ5S2V5LCBpbmNsdWRlU3VmZml4LCBleGNsdWRlU3VmZml4XSkgPT4ge1xuICAgICAgICB0aGlzLmVsZGVyU2VhcmNoSW5wdXQuaW5wdXRDb252ZXJ0ZXIgPSB0aGlzLmJ1aWxkQ29udmVydGVyKHF1ZXJ5S2V5LCBpbmNsdWRlU3VmZml4LCBleGNsdWRlU3VmZml4KTtcbiAgICAgIH0pO1xuICB9XG5cblxuXG4gIHByaXZhdGUgYnVpbGRDb252ZXJ0ZXIoXG4gICAgcXVlcnlLZXk6IHN0cmluZyxcbiAgICBpbmNsdWRlU3VmZml4OiBzdHJpbmcsXG4gICAgZXhjbHVkZVN1ZmZpeDogc3RyaW5nXG4gICk6IEluY2x1ZGVFeGNsdWRlSW5wdXRDb252ZXJ0ZXIge1xuICAgIHJldHVybiBuZXcgSW5jbHVkZUV4Y2x1ZGVJbnB1dENvbnZlcnRlcihcbiAgICAgIHRoaXMuZWxkZXJDaGlwc0ZpbHRlci5zZWxlY3Rpb25Nb2RlbCxcbiAgICAgIHF1ZXJ5S2V5LFxuICAgICAgaW5jbHVkZVN1ZmZpeCxcbiAgICAgIGV4Y2x1ZGVTdWZmaXhcbiAgICApO1xuICB9XG59XG5cbiJdfQ==
|