UNPKG

@1771technologies/lytenyte-pro

Version:

Blazingly fast headless React data grid with 100s of features.

63 lines (62 loc) 2.03 kB
export function sortItemsToSortModel(sortItems, lookup) { return sortItems .filter((c) => { if (c.isCustom) return true; if (!c.columnId) return false; if (!c.sortOn) return false; if (!lookup.has(c.columnId)) return false; return true; }) .map((c) => { const col = lookup.get(c.columnId); if (c.isCustom) { return c.originalSort; } if (col.type === "number") { return { columnId: col.id, isDescending: c.sortDirection === "descending", sort: { columnId: col.id, kind: "number", options: { absoluteValue: c.sortOn.includes("absolute"), nullsFirst: c.sortOn.includes("nulls_first"), }, }, }; } if (col.type === "date" || col.type === "datetime") { return { columnId: col.id, isDescending: c.sortDirection === "descending", sort: { columnId: col.id, kind: "date", options: { includeTime: col.type === "datetime", nullsFirst: c.sortOn.includes("nulls_first"), }, }, }; } return { columnId: col.id, isDescending: c.sortDirection === "descending", sort: { columnId: col.id, kind: "string", options: { caseInsensitive: c.sortOn?.includes("insensitive"), ignorePunctuation: c.sortOn?.includes("ignore"), nullsFirst: c.sortOn?.includes("nulls_first"), trimWhitespace: c.sortOn?.includes("trim"), }, }, }; }); }