blob: 033166c2202dff5a7ab63bfed2ff804dae4a9b6f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/**
* Composable for table filtering utilities
* Extracted from TableFilterMixin for use in Composition API
*/
export function useTableFilter() {
const getFilteredTableData = (tableData = [], filters = []) => {
const filterItems = filters.reduce((arr, filter) => {
return [...arr, ...filter.values];
}, []);
if (filterItems.length === 0) return tableData;
const selectedValues = {};
for (const { key, values } of filters) {
if (values.length > 0) {
selectedValues[key] = values;
}
}
return tableData.filter((row) => {
for (const [key, values] of Object.entries(selectedValues)) {
const rowProperty = row[key];
if (rowProperty && !values.includes(rowProperty)) {
return false;
}
}
return true;
});
};
return {
getFilteredTableData,
};
}
|