From 3aa016e056b5e420b74134cb89f55ff296cda276 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Mon, 9 Mar 2020 07:58:42 -0600 Subject: [PATCH] Move default sortBy and orderBy to plugin files --- src/index.js | 4 ++-- src/plugin-hooks/useGroupBy.js | 12 +++++++++++- src/plugin-hooks/useSortBy.js | 15 ++++++++++++++- src/publicUtils.js | 25 ------------------------- 4 files changed, 27 insertions(+), 29 deletions(-) diff --git a/src/index.js b/src/index.js index 992f933..b506130 100755 --- a/src/index.js +++ b/src/index.js @@ -3,8 +3,8 @@ export { useTable } from './hooks/useTable' export { useExpanded } from './plugin-hooks/useExpanded' export { useFilters } from './plugin-hooks/useFilters' export { useGlobalFilter } from './plugin-hooks/useGlobalFilter' -export { useGroupBy } from './plugin-hooks/useGroupBy' -export { useSortBy } from './plugin-hooks/useSortBy' +export { useGroupBy, defaultGroupByFn } from './plugin-hooks/useGroupBy' +export { useSortBy, defaultOrderByFn } from './plugin-hooks/useSortBy' export { usePagination } from './plugin-hooks/usePagination' export { _UNSTABLE_usePivotColumns } from './plugin-hooks/_UNSTABLE_usePivotColumns' export { useRowSelect } from './plugin-hooks/useRowSelect' diff --git a/src/plugin-hooks/useGroupBy.js b/src/plugin-hooks/useGroupBy.js index d3788e2..591a37c 100755 --- a/src/plugin-hooks/useGroupBy.js +++ b/src/plugin-hooks/useGroupBy.js @@ -7,7 +7,6 @@ import { getFirstDefined, flattenBy } from '../utils' import { actions, makePropGetter, - defaultGroupByFn, ensurePluginOrder, useMountedLayoutEffect, useGetLatest, @@ -408,3 +407,14 @@ function prepareRow(row) { cell.isAggregated = !cell.isGrouped && !cell.isPlaceholder && row.canExpand }) } + +export function defaultGroupByFn(rows, columnId) { + return rows.reduce((prev, row, i) => { + // TODO: Might want to implement a key serializer here so + // irregular column values can still be grouped if needed? + const resKey = `${row.values[columnId]}` + prev[resKey] = Array.isArray(prev[resKey]) ? prev[resKey] : [] + prev[resKey].push(row) + return prev + }, {}) +} diff --git a/src/plugin-hooks/useSortBy.js b/src/plugin-hooks/useSortBy.js index a276150..2ee6acc 100755 --- a/src/plugin-hooks/useSortBy.js +++ b/src/plugin-hooks/useSortBy.js @@ -5,7 +5,6 @@ import { ensurePluginOrder, defaultColumn, makePropGetter, - defaultOrderByFn, useGetLatest, useMountedLayoutEffect, } from '../publicUtils' @@ -360,3 +359,17 @@ function useInstance(instance) { toggleSortBy, }) } + +export function defaultOrderByFn(arr, funcs, dirs) { + return [...arr].sort((rowA, rowB) => { + for (let i = 0; i < funcs.length; i += 1) { + const sortFn = funcs[i] + const desc = dirs[i] === false || dirs[i] === 'desc' + const sortInt = sortFn(rowA, rowB) + if (sortInt !== 0) { + return desc ? -sortInt : sortInt + } + } + return dirs[0] ? rowA.index - rowB.index : rowB.index - rowA.index + }) +} diff --git a/src/publicUtils.js b/src/publicUtils.js index 9a04df5..e756a4f 100644 --- a/src/publicUtils.js +++ b/src/publicUtils.js @@ -13,31 +13,6 @@ export const defaultColumn = { maxWidth: Number.MAX_SAFE_INTEGER, } -export function defaultOrderByFn(arr, funcs, dirs) { - return [...arr].sort((rowA, rowB) => { - for (let i = 0; i < funcs.length; i += 1) { - const sortFn = funcs[i] - const desc = dirs[i] === false || dirs[i] === 'desc' - const sortInt = sortFn(rowA, rowB) - if (sortInt !== 0) { - return desc ? -sortInt : sortInt - } - } - return dirs[0] ? rowA.index - rowB.index : rowB.index - rowA.index - }) -} - -export function defaultGroupByFn(rows, columnId) { - return rows.reduce((prev, row, i) => { - // TODO: Might want to implement a key serializer here so - // irregular column values can still be grouped if needed? - const resKey = `${row.values[columnId]}` - prev[resKey] = Array.isArray(prev[resKey]) ? prev[resKey] : [] - prev[resKey].push(row) - return prev - }, {}) -} - function mergeProps(...propList) { return propList.reduce((props, next) => { const { style, className, ...rest } = next