Sammy/t 134 i see all filters in the dropdown (#78)

* feature: add filter dropdown

* test: add story for FilterDropdown

* feature: display filterOperand on top of dropdown

* feature: display filter operand

* feature: fix index and display selected filter

* refactor: set TopOption button inside dropdown file

* feature: move availableFilters outside the fitler component

* refactor: make the available sorts and filter optionnal

* refactor: rename availableSorts

* feature: add a resetState property on onOutsideClick

* feature: add filters and set  filters on Dropdown component

* feature: set filters on click in dropdown

* test: verify button is active after filters are set

* feature: display sorts and filters

* refactor: move SelectedFilters in SortAndFilter

* refactor: move SelectedFilters in dedicated file

* refactor: remove Id and use Key
This commit is contained in:
Sammy Teillet
2023-04-26 16:19:34 +02:00
committed by GitHub
parent 1c8a4058c3
commit 5aec7ca730
17 changed files with 521 additions and 70 deletions

View File

@ -3,8 +3,8 @@ import { PeopleSelectedSortType, reduceSortsToOrderBy } from './select';
describe('reduceSortsToOrderBy', () => {
it('should return an array of objects with the id as key and the order as value', () => {
const sorts = [
{ id: 'firstname', label: 'firstname', order: 'asc' },
{ id: 'lastname', label: 'lastname', order: 'desc' },
{ key: 'firstname', label: 'firstname', order: 'asc' },
{ key: 'lastname', label: 'lastname', order: 'desc' },
] satisfies PeopleSelectedSortType[];
const result = reduceSortsToOrderBy(sorts);
expect(result).toEqual([{ firstname: 'asc', lastname: 'desc' }]);

View File

@ -1,7 +1,7 @@
import { QueryResult, gql, useQuery } from '@apollo/client';
import { GraphqlQueryPerson } from '../../interfaces/person.interface';
import { SelectedSortType } from '../../components/table/table-header/SortAndFilterBar';
import { Order_By, People_Order_By } from '../../generated/graphql';
import { SelectedSortType } from '../../components/table/table-header/interface';
export type OrderByFields = keyof People_Order_By | 'fullname' | 'company_name';
@ -15,7 +15,7 @@ export const reduceSortsToOrderBy = (
sorts: Array<PeopleSelectedSortType>,
): People_Order_By[] => {
const mappedSorts = sorts.reduce((acc, sort) => {
const id = sort.id;
const id = sort.key;
const order = mapOrder(sort.order);
if (id === 'fullname') {
acc['firstname'] = order;