summaryrefslogtreecommitdiff
path: root/src/components/Composables/useTableFilter.js
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,
  };
}