Skip to content

Commit 453683b

Browse files
feat(grid): add minchars and displaycount to search filter
1 parent 3c7e995 commit 453683b

File tree

5 files changed

+30
-0
lines changed

5 files changed

+30
-0
lines changed

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,21 @@ export class UiGridSearchFilterDirective<T> extends UiGridFilterDirective<T> imp
8383
@Input()
8484
multiple = false;
8585

86+
/**
87+
* Configure the minimum number of characters that triggers the searchSourceFactory call
88+
* This will have priority over the fetch strategy if set.
89+
*
90+
*/
91+
@Input()
92+
minChars = 0;
93+
94+
/**
95+
* The maximum number of items rendered in the viewport.
96+
*
97+
*/
98+
@Input()
99+
displayCount = 10;
100+
86101
/**
87102
* @ignore
88103
*/

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,7 @@ describe('Component: UiGrid', () => {
281281
expect(filter).toBeDefined();
282282
expect(filter!.value).toEqual(columnOptionDefinition.option.id);
283283
expect(filter!.method).toBe(columnOptionDefinition.column.searchableDropdown!.method!);
284+
expect(filter!.meta).toEqual(columnOptionDefinition.option);
284285
});
285286

286287
manager.searchableDropdownUpdate(columnOptionDefinition.column, columnOptionDefinition.option);
@@ -302,6 +303,7 @@ describe('Component: UiGrid', () => {
302303
expect(filter).toBeDefined();
303304
expect(filter.value).toEqual(columnOptionDefinition.option.id);
304305
expect(filter.method).toBe(columnOptionDefinition.column.searchableDropdown!.method!);
306+
expect(filter.meta).toEqual(columnOptionDefinition.option);
305307
});
306308

307309
manager.searchableDropdownUpdate(columnOptionDefinition.column, columnOptionDefinition.option);
@@ -329,6 +331,7 @@ describe('Component: UiGrid', () => {
329331
expect(filter).toBeDefined();
330332
expect(filter.value).toEqual(columnOptionDefinition.option.id);
331333
expect(filter.method).toBe(columnOptionDefinition.column.searchableDropdown!.method!);
334+
expect(filter.meta).toEqual(columnOptionDefinition.option);
332335
});
333336
});
334337
});
@@ -376,6 +379,7 @@ describe('Component: UiGrid', () => {
376379
expect(Array.isArray(filter.value)).toEqual(true);
377380
expect(filter.value).toEqual([columnOptionDefinition.option.id] as unknown as []);
378381
expect(filter.method).toBe(columnOptionDefinition.column.searchableDropdown!.method!);
382+
expect(filter.meta).toEqual([columnOptionDefinition.option]);
379383
});
380384

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

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ export class FilterManager<T> {
197197
value: column.searchableDropdown!.multiple ?
198198
(column.searchableDropdown!.value! as ISuggestValue[]).map(value => value.id)
199199
: (column.searchableDropdown!.value! as ISuggestValue).id,
200+
meta: column.searchableDropdown!.value,
200201
} as IFilterModel<T>;
201202
}
202203

projects/angular/components/ui-grid/src/models/filterModel.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { ISuggestValueData } from '@uipath/angular/components/ui-suggest';
2+
13
/**
24
* The filter model schema.
35
*
@@ -28,4 +30,10 @@ export interface IFilterModel<T> {
2830
*
2931
*/
3032
type?: string;
33+
/**
34+
* The current filter meta.
35+
* This will be additional suggest data sent to search filters in case you need more than the id from suggest.
36+
*
37+
*/
38+
meta?: ISuggestValueData<T> | ISuggestValueData<T>[] | null;
3139
}

projects/angular/components/ui-grid/src/ui-grid.component.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -582,6 +582,8 @@
582582
[attr.data-cy]="getColumnName(column, 'ui-grid-search-filter')"
583583
[multiple]="column.searchableDropdown!.multiple"
584584
[compact]="column.searchableDropdown!.multiple"
585+
[displayCount]="column.searchableDropdown!.displayCount"
586+
[minChars]="column.searchableDropdown!.minChars ?? 0"
585587
(selected)="filterManager.searchableDropdownUpdate(column, $event, true)"
586588
(deselected)="filterManager.searchableDropdownUpdate(column, $event, false)"
587589
(opened)="column.refetch && suggest.fetch()"

0 commit comments

Comments
 (0)