Skip to content
This repository was archived by the owner on Apr 18, 2024. It is now read-only.

Commit 54aa11e

Browse files
authored
feat: LSDV-3025-13: Add how many filter rules are applied (#1353)
1 parent 016234a commit 54aa11e

File tree

4 files changed

+48
-2
lines changed

4 files changed

+48
-2
lines changed

src/components/Filter/Filter.styl

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,17 @@
55
margin-bottom 10px
66
font-size 14px
77
color #585858
8-
width 220px
8+
width 220px
9+
10+
11+
.button__filter-length
12+
font-size 11px
13+
font-weight 500
14+
text-align center
15+
color #030852
16+
width 15px
17+
height 20px
18+
line-height 21px
19+
border-radius 2px
20+
background #d6e4ff
21+
margin-left 3px

src/components/Filter/Filter.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ export const Filter: FC<FilterInterface> = ({
112112
<IconFilter />
113113
</Elem>
114114
<Elem name={'text'}>Filter</Elem>
115+
{filterList.length > 0 && <Elem name={'filter-length'} data-testid={'filter-length'}>{filterList.length}</Elem>}
115116
</Button>
116117
</Dropdown.Trigger>
117118
);

src/components/Filter/FilterInterfaces.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export interface FilterListInterface {
1414
operation?: string | string[] | undefined;
1515
value?: any;
1616
path?: string;
17-
logic?: Logic;
17+
logic?: 'and' | 'or';
1818
}
1919

2020
export interface AvailableFiltersInterface {

src/components/Filter/__tests__/Filter.test.tsx

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,4 +124,36 @@ describe('Filter', () => {
124124

125125
expect(filteredContent).toStrictEqual([{ labelName: 'Car' }, { labelName: 'AirCar' }]) ;
126126
});
127+
128+
test('Should show filter length badge', () => {
129+
const filter = render(<Filter
130+
onChange={mockOnChange}
131+
filterData={filterData}
132+
availableFilters={[{
133+
label: 'Annotation results',
134+
path: 'labelName',
135+
type: 'String',
136+
},
137+
{
138+
label: 'Confidence score',
139+
path: 'score',
140+
type: 'Number',
141+
}]}
142+
/>);
143+
144+
const FilterButton = filter.getByText('Filter');
145+
146+
fireEvent.click(FilterButton);
147+
148+
expect(screen.getByText('No filters applied')).toBeDefined();
149+
150+
const AddButton = filter.getByText('Add Filter');
151+
152+
fireEvent.click(AddButton);
153+
fireEvent.click(AddButton);
154+
155+
const filterLength = filter.getByTestId('filter-length');
156+
157+
expect(filterLength.textContent).toBe('2');
158+
});
127159
});

0 commit comments

Comments
 (0)