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