UNPKG

@trail-ui/react

Version:
77 lines (75 loc) 1.89 kB
// src/editable-table/helpers.tsx function multiSelectFilter(row, columnId, filterValue) { if (!Array.isArray(filterValue)) { return true; } const rowValue = row.getValue(columnId); return filterValue.includes(rowValue); } function dateSortingFn(rowA, rowB, columnId) { const dateStringA = rowA.getValue(columnId); const dateStringB = rowB.getValue(columnId); const parseCustomDate = (dateStr) => { if (!dateStr) { return new Date(Number.NaN); } const parts = dateStr.trim().split(" "); if (parts.length !== 3) { return new Date(Number.NaN); } const [day, month, year] = parts; const months = { Jan: "01", Feb: "02", Mar: "03", Apr: "04", May: "05", Jun: "06", Jul: "07", Aug: "08", Sep: "09", Oct: "10", Nov: "11", Dec: "12" }; const monthNum = months[month]; if (!monthNum) { return new Date(Number.NaN); } const isoDate = `${year}-${monthNum}-${day.padStart(2, "0")}`; return new Date(isoDate); }; const dateA = parseCustomDate(dateStringA); const dateB = parseCustomDate(dateStringB); if (Number.isNaN(dateA.getTime()) && Number.isNaN(dateB.getTime())) { return 0; } if (Number.isNaN(dateA.getTime())) { return 1; } if (Number.isNaN(dateB.getTime())) { return -1; } return dateA.getTime() - dateB.getTime(); } function areArraysSame(a, b) { if (a.length !== b.length) return false; const countMap = /* @__PURE__ */ new Map(); for (const value of a) { countMap.set(value, (countMap.get(value) || 0) + 1); } for (const value of b) { if (!countMap.has(value)) return false; countMap.set(value, countMap.get(value) - 1); if (countMap.get(value) < 0) return false; } return true; } export { multiSelectFilter, dateSortingFn, areArraysSame };