Skip to content

Commit bb15b2c

Browse files
authored
Merge pull request #452 from UiPath/fix/filter_empty_array
fix(grid): exclude empty array from emitted filter values
2 parents e80cba3 + 0782e1d commit bb15b2c

File tree

7 files changed

+17
-17
lines changed

7 files changed

+17
-17
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# v15.1.3 (2024-01-30)
2+
* **grid** exclude emtpy array from filter value
3+
14
# v15.1.2 (2024-01-29)
25
* **grid** allow resetting searchable directive's value
36

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "angular-components",
3-
"version": "15.1.2",
3+
"version": "15.1.3",
44
"author": {
55
"name": "UiPath Inc",
66
"url": "https://uipath.com"

projects/angular/components/ui-grid/src/filters/ui-grid-search-filter.directive.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,12 @@ export class UiGridSearchFilterDirective<T> extends UiGridFilterDirective<T> imp
123123
this.filterChange.complete();
124124
}
125125

126+
get hasValue() {
127+
return this.multiple
128+
? (this.value as ISuggestValue[] ?? []).length > 0
129+
: this.value != null;
130+
}
131+
126132
private checkAlreadyExisting(value: ISuggestValue, isSelected?: boolean) {
127133
if (this.multiple) {
128134
return (isSelected && (this.value as ISuggestValue[] ?? []).find(item => item.id === value.id));

projects/angular/components/ui-grid/src/managers/filter-manager.spec.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ describe('Component: UiGrid', () => {
401401
manager.searchableDropdownUpdate(columnOptionDefinition.column, columnOptionDefinition.option, true);
402402
});
403403

404-
it('should emit empty list if the value is deselected', (done) => {
404+
it('should emit undefined if the value is deselected', (done) => {
405405
const columnOptionDefinition = searchableDropdownToFilterOptionDefinition(
406406
faker.helpers.randomize(columnWithSearchableList),
407407
searchableDropdownItemList,
@@ -414,10 +414,7 @@ describe('Component: UiGrid', () => {
414414
).subscribe(filters => {
415415
const [filter] = filters;
416416

417-
expect(filter).toBeDefined();
418-
expect(Array.isArray(filter.value)).toEqual(true);
419-
expect(filter.value).toEqual([]);
420-
expect(filter.method).toBe(columnOptionDefinition.column.searchableDropdown!.method!);
417+
expect(filter).toBeUndefined();
421418
});
422419

423420
manager.searchableDropdownUpdate(columnOptionDefinition.column, columnOptionDefinition.option, true);

projects/angular/components/ui-grid/src/managers/filter-manager.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@ import { UiGridColumnDirective } from '../body/ui-grid-column.directive';
1515
import {
1616
FilterDropdownPossibleOption,
1717
ISuggestDropdownValueData,
18-
UiGridDropdownFilterDirective,
1918
} from '../filters/ui-grid-dropdown-filter.directive';
20-
import { UiGridSearchFilterDirective } from '../filters/ui-grid-search-filter.directive';
2119
import { UiGridFooterDirective } from '../footer/ui-grid-footer.directive';
2220
import { UiGridHeaderDirective } from '../header/ui-grid-header.directive';
2321
import { IFilterModel } from '../models';
@@ -203,14 +201,14 @@ export class FilterManager<T> {
203201

204202
private _emitFilterOptions = () => {
205203
this.defaultValueDropdownFilters = this._columns
206-
.filter(({ dropdown }) => this._hasFilterValue(dropdown) && dropdown!.hasValue)
204+
.filter(({ dropdown }) => dropdown?.hasValue)
207205
.map(this._mapDropdownItem);
208206

209207
const emptyStateDropdownFilters = this._columns
210208
.filter(col => col.dropdown?.emptyStateValue)
211209
.map(this._mapDropdownEmptyStateItem);
212210
const searchableFilters = this._columns
213-
.filter(({ searchableDropdown }) => this._hasFilterValue(searchableDropdown))
211+
.filter(({ searchableDropdown }) => searchableDropdown?.hasValue)
214212
.map(this._mapSearchableDropdownItem);
215213

216214
const updatedFilters = [...this.defaultValueDropdownFilters, ...searchableFilters];
@@ -226,10 +224,6 @@ export class FilterManager<T> {
226224
);
227225
};
228226

229-
private _hasFilterValue = (dropdown?: UiGridSearchFilterDirective<T> | UiGridDropdownFilterDirective<T>) =>
230-
!!dropdown &&
231-
dropdown.value;
232-
233227
private _mapDropdownItem = (column: UiGridColumnDirective<T>) => ({
234228
method: column.dropdown!.method,
235229
property: column.property,

projects/angular/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@uipath/angular",
3-
"version": "15.1.2",
3+
"version": "15.1.3",
44
"license": "MIT",
55
"author": {
66
"name": "UiPath Inc",

0 commit comments

Comments
 (0)