Skip to content

Commit 334d1d0

Browse files
committed
refactor: simplify TableControlBar layout and restore Clear filters button functionality
1 parent e490b01 commit 334d1d0

1 file changed

Lines changed: 36 additions & 31 deletions

File tree

src/authz-module/libraries-manager/components/TableControlBar.tsx

Lines changed: 36 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import { useContext } from 'react';
22
import {
3-
breakpoints,
43
DataTable, DataTableContext,
54
CheckboxFilter,
65
Stack,
76
TextFilter,
8-
useWindowSize,
7+
Button,
98
} from '@openedx/paragon';
109

1110
import MultipleChoiceFilter from './MultipleChoiceFilter';
@@ -15,6 +14,8 @@ import SearchFilter from './SearchFilter';
1514
const TableControlBar = () => {
1615
const {
1716
columns,
17+
setAllFilters,
18+
state,
1819
} = useContext<DataTableContext>(DataTableContext);
1920

2021
const availableFilters = columns.filter((column) => column.canFilter);
@@ -23,36 +24,40 @@ const TableControlBar = () => {
2324
.filter((column) => column.Filter === TextFilter)
2425
.map((column) => column.Header);
2526

26-
const isSmallScreen = useWindowSize().width! < breakpoints.medium.minWidth!;
27-
2827
return (
29-
<div className="pgn__data-table-status-bar">
30-
<Stack className="mb-3" direction={isSmallScreen ? 'vertical' : 'horizontal'} gap={3}>
31-
32-
{availableFilters.map((column) => {
33-
if (column.Filter === CheckboxFilter) {
34-
return <MultipleChoiceFilter {...column} />;
35-
}
36-
37-
if (column.Filter === TextFilter) {
38-
return (
39-
<SearchFilter
40-
filterValue={column.filterValue}
41-
setFilter={column.setFilter}
42-
placeholder={`Search by ${columnTextFilterHeaders.map((header) => header).join(' or ')}`}
43-
/>
44-
);
45-
}
46-
47-
return null;
48-
})}
49-
50-
<SortDropdown />
51-
</Stack>
52-
53-
<DataTable.RowStatus />
54-
<DataTable.BulkActions />
55-
</div>
28+
<Stack className="pgn__data-table-status-bar mb-3 flex-wrap" gap={2} direction="horizontal">
29+
30+
{availableFilters.map((column) => {
31+
if (column.Filter === CheckboxFilter) {
32+
return <MultipleChoiceFilter {...column} />;
33+
}
34+
35+
if (column.Filter === TextFilter) {
36+
return (
37+
<SearchFilter
38+
filterValue={column.filterValue}
39+
setFilter={column.setFilter}
40+
placeholder={`Search by ${columnTextFilterHeaders.map((header) => header).join(' or ')}`}
41+
/>
42+
);
43+
}
44+
45+
return null;
46+
})}
47+
48+
<SortDropdown />
49+
50+
{state.filters.length > 0 && (
51+
<Button
52+
variant="link"
53+
onClick={() => setAllFilters([])}
54+
>
55+
Clear filters
56+
</Button>
57+
)}
58+
59+
<DataTable.RowStatus className="ml-auto" />
60+
</Stack>
5661
);
5762
};
5863

0 commit comments

Comments
 (0)