@messaia/cdk 17.1.5-rc16 → 17.1.5

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.
@@ -5,14 +5,41 @@ export class FilterPipe {
5
5
  * Filters the specified array by a specific property.
6
6
  * @param items The array to filter.
7
7
  * @param propName The name of the property to filter by.
8
- * @param filterBy The term to filter by.
8
+ * @param filterBy The term to filter by, which can be a string, number, boolean, or object.
9
9
  * @returns The filtered array.
10
10
  */
11
11
  transform(items, propName, filterBy) {
12
- if (!items || !filterBy || !propName) {
12
+ if (!items || filterBy === undefined || !propName) {
13
13
  return items;
14
14
  }
15
- return items.filter(item => item[propName]?.toString().toLowerCase().indexOf(filterBy.toLowerCase()) !== -1);
15
+ return items.filter(item => {
16
+ const value = this.getPropertyValue(item, propName);
17
+ return this.isMatch(value, filterBy);
18
+ });
19
+ }
20
+ /**
21
+ * Retrieves the value of a nested property.
22
+ * @param item The item to retrieve the property value from.
23
+ * @param propName The name of the property, can be nested (e.g., 'address.city').
24
+ * @returns The value of the specified property.
25
+ */
26
+ getPropertyValue(item, propName) {
27
+ return propName.split('.').reduce((acc, part) => acc && acc[part], item);
28
+ }
29
+ /**
30
+ * Checks if the value matches the filter criteria.
31
+ * @param value The value of the property.
32
+ * @param filterBy The filter criteria.
33
+ * @returns True if the value matches the filter criteria, false otherwise.
34
+ */
35
+ isMatch(value, filterBy) {
36
+ if (typeof filterBy === 'boolean') {
37
+ return value === filterBy;
38
+ }
39
+ if (typeof filterBy === 'object') {
40
+ return Object.keys(filterBy).every(key => this.isMatch(this.getPropertyValue(value, key), filterBy[key]));
41
+ }
42
+ return value?.toString().toLowerCase().includes(filterBy.toString().toLowerCase());
16
43
  }
17
44
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
18
45
  /** @nocollapse */ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: FilterPipe, name: "filter", pure: false });
@@ -24,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
24
51
  pure: false
25
52
  }]
26
53
  }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jb21tb24vcGlwZXMvZmlsdGVyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxVQUFVO0lBRW5COzs7Ozs7T0FNRztJQUNILFNBQVMsQ0FBQyxLQUFZLEVBQUUsUUFBZ0IsRUFBRSxRQUFnQjtRQUN0RCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xDLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ2xGLENBQUM7SUFDTixDQUFDOzBIQWhCUSxVQUFVO3dIQUFWLFVBQVU7OzJGQUFWLFVBQVU7a0JBSnRCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLEtBQUs7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBQaXBlKHtcclxuICAgIG5hbWU6ICdmaWx0ZXInLFxyXG4gICAgcHVyZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbHRlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbHRlcnMgdGhlIHNwZWNpZmllZCBhcnJheSBieSBhIHNwZWNpZmljIHByb3BlcnR5LlxyXG4gICAgICogQHBhcmFtIGl0ZW1zIFRoZSBhcnJheSB0byBmaWx0ZXIuXHJcbiAgICAgKiBAcGFyYW0gcHJvcE5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGZpbHRlciBieS5cclxuICAgICAqIEBwYXJhbSBmaWx0ZXJCeSBUaGUgdGVybSB0byBmaWx0ZXIgYnkuXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgZmlsdGVyZWQgYXJyYXkuXHJcbiAgICAgKi9cclxuICAgIHRyYW5zZm9ybShpdGVtczogYW55W10sIHByb3BOYW1lOiBzdHJpbmcsIGZpbHRlckJ5OiBzdHJpbmcpOiBhbnlbXSB7XHJcbiAgICAgICAgaWYgKCFpdGVtcyB8fCAhZmlsdGVyQnkgfHwgIXByb3BOYW1lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpdGVtcztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcihpdGVtID0+XHJcbiAgICAgICAgICAgIGl0ZW1bcHJvcE5hbWVdPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXJCeS50b0xvd2VyQ2FzZSgpKSAhPT0gLTFcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59Il19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jb21tb24vcGlwZXMvZmlsdGVyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxVQUFVO0lBRW5COzs7Ozs7T0FNRztJQUNILFNBQVMsQ0FBQyxLQUFZLEVBQUUsUUFBZ0IsRUFBRSxRQUFhO1FBQ25ELElBQUksQ0FBQyxLQUFLLElBQUksUUFBUSxLQUFLLFNBQVMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMvQyxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxnQkFBZ0IsQ0FBQyxJQUFTLEVBQUUsUUFBZ0I7UUFDaEQsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssT0FBTyxDQUFDLEtBQVUsRUFBRSxRQUFhO1FBQ3JDLElBQUksT0FBTyxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQy9CLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQztTQUM3QjtRQUVELElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFO1lBQzlCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNqRSxDQUFDO1NBQ0w7UUFFRCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDdkYsQ0FBQzswSEFoRFEsVUFBVTt3SEFBVixVQUFVOzsyRkFBVixVQUFVO2tCQUp0QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxRQUFRO29CQUNkLElBQUksRUFBRSxLQUFLO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiAnZmlsdGVyJyxcclxuICAgIHB1cmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWx0ZXJzIHRoZSBzcGVjaWZpZWQgYXJyYXkgYnkgYSBzcGVjaWZpYyBwcm9wZXJ0eS5cclxuICAgICAqIEBwYXJhbSBpdGVtcyBUaGUgYXJyYXkgdG8gZmlsdGVyLlxyXG4gICAgICogQHBhcmFtIHByb3BOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBmaWx0ZXIgYnkuXHJcbiAgICAgKiBAcGFyYW0gZmlsdGVyQnkgVGhlIHRlcm0gdG8gZmlsdGVyIGJ5LCB3aGljaCBjYW4gYmUgYSBzdHJpbmcsIG51bWJlciwgYm9vbGVhbiwgb3Igb2JqZWN0LlxyXG4gICAgICogQHJldHVybnMgVGhlIGZpbHRlcmVkIGFycmF5LlxyXG4gICAgICovXHJcbiAgICB0cmFuc2Zvcm0oaXRlbXM6IGFueVtdLCBwcm9wTmFtZTogc3RyaW5nLCBmaWx0ZXJCeTogYW55KTogYW55W10ge1xyXG4gICAgICAgIGlmICghaXRlbXMgfHwgZmlsdGVyQnkgPT09IHVuZGVmaW5lZCB8fCAhcHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcihpdGVtID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFByb3BlcnR5VmFsdWUoaXRlbSwgcHJvcE5hbWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc01hdGNoKHZhbHVlLCBmaWx0ZXJCeSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHZhbHVlIG9mIGEgbmVzdGVkIHByb3BlcnR5LlxyXG4gICAgICogQHBhcmFtIGl0ZW0gVGhlIGl0ZW0gdG8gcmV0cmlldmUgdGhlIHByb3BlcnR5IHZhbHVlIGZyb20uXHJcbiAgICAgKiBAcGFyYW0gcHJvcE5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5LCBjYW4gYmUgbmVzdGVkIChlLmcuLCAnYWRkcmVzcy5jaXR5JykuXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRQcm9wZXJ0eVZhbHVlKGl0ZW06IGFueSwgcHJvcE5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHByb3BOYW1lLnNwbGl0KCcuJykucmVkdWNlKChhY2MsIHBhcnQpID0+IGFjYyAmJiBhY2NbcGFydF0sIGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIGlmIHRoZSB2YWx1ZSBtYXRjaGVzIHRoZSBmaWx0ZXIgY3JpdGVyaWEuXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS5cclxuICAgICAqIEBwYXJhbSBmaWx0ZXJCeSBUaGUgZmlsdGVyIGNyaXRlcmlhLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmFsdWUgbWF0Y2hlcyB0aGUgZmlsdGVyIGNyaXRlcmlhLCBmYWxzZSBvdGhlcndpc2UuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaXNNYXRjaCh2YWx1ZTogYW55LCBmaWx0ZXJCeTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBmaWx0ZXJCeSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gZmlsdGVyQnk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodHlwZW9mIGZpbHRlckJ5ID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZmlsdGVyQnkpLmV2ZXJ5KGtleSA9PlxyXG4gICAgICAgICAgICAgICAgdGhpcy5pc01hdGNoKHRoaXMuZ2V0UHJvcGVydHlWYWx1ZSh2YWx1ZSwga2V5KSwgZmlsdGVyQnlba2V5XSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YWx1ZT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlckJ5LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -189,14 +189,41 @@ class FilterPipe {
189
189
  * Filters the specified array by a specific property.
190
190
  * @param items The array to filter.
191
191
  * @param propName The name of the property to filter by.
192
- * @param filterBy The term to filter by.
192
+ * @param filterBy The term to filter by, which can be a string, number, boolean, or object.
193
193
  * @returns The filtered array.
194
194
  */
195
195
  transform(items, propName, filterBy) {
196
- if (!items || !filterBy || !propName) {
196
+ if (!items || filterBy === undefined || !propName) {
197
197
  return items;
198
198
  }
199
- return items.filter(item => item[propName]?.toString().toLowerCase().indexOf(filterBy.toLowerCase()) !== -1);
199
+ return items.filter(item => {
200
+ const value = this.getPropertyValue(item, propName);
201
+ return this.isMatch(value, filterBy);
202
+ });
203
+ }
204
+ /**
205
+ * Retrieves the value of a nested property.
206
+ * @param item The item to retrieve the property value from.
207
+ * @param propName The name of the property, can be nested (e.g., 'address.city').
208
+ * @returns The value of the specified property.
209
+ */
210
+ getPropertyValue(item, propName) {
211
+ return propName.split('.').reduce((acc, part) => acc && acc[part], item);
212
+ }
213
+ /**
214
+ * Checks if the value matches the filter criteria.
215
+ * @param value The value of the property.
216
+ * @param filterBy The filter criteria.
217
+ * @returns True if the value matches the filter criteria, false otherwise.
218
+ */
219
+ isMatch(value, filterBy) {
220
+ if (typeof filterBy === 'boolean') {
221
+ return value === filterBy;
222
+ }
223
+ if (typeof filterBy === 'object') {
224
+ return Object.keys(filterBy).every(key => this.isMatch(this.getPropertyValue(value, key), filterBy[key]));
225
+ }
226
+ return value?.toString().toLowerCase().includes(filterBy.toString().toLowerCase());
200
227
  }
201
228
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
202
229
  /** @nocollapse */ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: FilterPipe, name: "filter", pure: false });