@tanstack/table-core 8.9.1 → 8.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/features/Sorting.js +2 -1
- package/build/lib/features/Sorting.js.map +1 -1
- package/build/lib/index.esm.js +12 -6
- package/build/lib/index.esm.js.map +1 -1
- package/build/lib/index.mjs +12 -6
- package/build/lib/index.mjs.map +1 -1
- package/build/lib/utils/getSortedRowModel.js +10 -5
- package/build/lib/utils/getSortedRowModel.js.map +1 -1
- package/build/umd/index.development.js +12 -6
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +1 -1
- package/src/features/Sorting.ts +1 -0
- package/src/utils/getSortedRowModel.ts +15 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sorting.js","sources":["../../../src/features/Sorting.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { TableFeature } from '../core/table'\nimport {\n BuiltInSortingFn,\n reSplitAlphaNumeric,\n sortingFns,\n} from '../sortingFns'\n\nimport {\n Column,\n OnChangeFn,\n Table,\n Row,\n Updater,\n RowData,\n SortingFns,\n} from '../types'\n\nimport { isFunction, makeStateUpdater } from '../utils'\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport interface ColumnSort {\n id: string\n desc: boolean\n}\n\nexport type SortingState = ColumnSort[]\n\nexport interface SortingTableState {\n sorting: SortingState\n}\n\nexport interface SortingFn<TData extends RowData> {\n (rowA: Row<TData>, rowB: Row<TData>, columnId: string): number\n}\n\nexport type CustomSortingFns<TData extends RowData> = Record<\n string,\n SortingFn<TData>\n>\n\nexport type SortingFnOption<TData extends RowData> =\n | 'auto'\n | keyof SortingFns\n | BuiltInSortingFn\n | SortingFn<TData>\n\nexport interface SortingColumnDef<TData extends RowData> {\n sortingFn?: SortingFnOption<TData>\n sortDescFirst?: boolean\n enableSorting?: boolean\n enableMultiSort?: boolean\n invertSorting?: boolean\n sortUndefined?: false | -1 | 1\n}\n\nexport interface SortingColumn<TData extends RowData> {\n getAutoSortingFn: () => SortingFn<TData>\n getAutoSortDir: () => SortDirection\n getSortingFn: () => SortingFn<TData>\n getFirstSortDir: () => SortDirection\n getNextSortingOrder: () => SortDirection | false\n getCanSort: () => boolean\n getCanMultiSort: () => boolean\n getSortIndex: () => number\n getIsSorted: () => false | SortDirection\n clearSorting: () => void\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n getToggleSortingHandler: () => undefined | ((event: unknown) => void)\n}\n\ninterface SortingOptionsBase {\n manualSorting?: boolean\n onSortingChange?: OnChangeFn<SortingState>\n enableSorting?: boolean\n enableSortingRemoval?: boolean\n enableMultiRemove?: boolean\n enableMultiSort?: boolean\n sortDescFirst?: boolean\n getSortedRowModel?: (table: Table<any>) => () => RowModel<any>\n maxMultiSortColCount?: number\n isMultiSortEvent?: (e: unknown) => boolean\n}\n\ntype ResolvedSortingFns = keyof SortingFns extends never\n ? {\n sortingFns?: Record<string, SortingFn<any>>\n }\n : {\n sortingFns: Record<keyof SortingFns, SortingFn<any>>\n }\n\nexport interface SortingOptions<TData extends RowData>\n extends SortingOptionsBase,\n ResolvedSortingFns {}\n\nexport interface SortingInstance<TData extends RowData> {\n setSorting: (updater: Updater<SortingState>) => void\n resetSorting: (defaultState?: boolean) => void\n getPreSortedRowModel: () => RowModel<TData>\n getSortedRowModel: () => RowModel<TData>\n _getSortedRowModel?: () => RowModel<TData>\n}\n\n//\n\nexport const Sorting: TableFeature = {\n getInitialState: (state): SortingTableState => {\n return {\n sorting: [],\n ...state,\n }\n },\n\n getDefaultColumnDef: <TData extends RowData>(): SortingColumnDef<TData> => {\n return {\n sortingFn: 'auto',\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): SortingOptions<TData> => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: (e: unknown) => {\n return (e as MouseEvent).shiftKey\n },\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): SortingColumn<TData> => {\n return {\n getAutoSortingFn: () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.getValue(column.id)\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortingFns.text\n }\n\n return sortingFns.basic\n },\n getAutoSortDir: () => {\n const firstRow = table.getFilteredRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n },\n getSortingFn: () => {\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.columnDef.sortingFn)\n ? column.columnDef.sortingFn\n : column.columnDef.sortingFn === 'auto'\n ? column.getAutoSortingFn()\n : table.options.sortingFns?.[column.columnDef.sortingFn as string] ??\n sortingFns[column.columnDef.sortingFn as BuiltInSortingFn]\n },\n toggleSorting: (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder()\n const hasManualValue = typeof desc !== 'undefined' && desc !== null\n\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old?.find(d => d.id === column.id)\n const existingIndex = old?.findIndex(d => d.id === column.id)\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction: 'add' | 'remove' | 'toggle' | 'replace'\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'\n\n // Multi-mode\n if (old?.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (old?.length && existingIndex !== old.length - 1) {\n sortAction = 'replace'\n } else if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove'\n }\n }\n }\n\n if (sortAction === 'add') {\n newSorting = [\n ...old,\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id)\n } else {\n newSorting = [\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n }\n\n return newSorting\n })\n },\n\n getFirstSortDir: () => {\n const sortDescFirst =\n column.columnDef.sortDescFirst ??\n table.options.sortDescFirst ??\n column.getAutoSortDir() === 'desc'\n return sortDescFirst ? 'desc' : 'asc'\n },\n\n getNextSortingOrder: (multi?: boolean) => {\n const firstSortDirection = column.getFirstSortDir()\n const isSorted = column.getIsSorted()\n\n if (!isSorted) {\n return firstSortDirection\n }\n\n if (\n isSorted !== firstSortDirection &&\n (table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n (multi ? table.options.enableMultiRemove ?? true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false\n }\n return isSorted === 'desc' ? 'asc' : 'desc'\n },\n\n getCanSort: () => {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (table.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n },\n\n getCanMultiSort: () => {\n return (\n column.columnDef.enableMultiSort ??\n table.options.enableMultiSort ??\n !!column.accessorFn\n )\n },\n\n getIsSorted: () => {\n const columnSort = table\n .getState()\n .sorting?.find(d => d.id === column.id)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n },\n\n getSortIndex: () =>\n table.getState().sorting?.findIndex(d => d.id === column.id) ?? -1,\n\n clearSorting: () => {\n //clear sorting for just 1 column\n table.setSorting(old =>\n old?.length ? old.filter(d => d.id !== column.id) : []\n )\n },\n\n getToggleSortingHandler: () => {\n const canSort = column.getCanSort()\n\n return (e: unknown) => {\n if (!canSort) return\n ;(e as any).persist?.()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort()\n ? table.options.isMultiSortEvent?.(e)\n : false\n )\n }\n },\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): SortingInstance<TData> => {\n return {\n setSorting: updater => table.options.onSortingChange?.(updater),\n resetSorting: defaultState => {\n table.setSorting(defaultState ? [] : table.initialState?.sorting ?? [])\n },\n getPreSortedRowModel: () => table.getGroupedRowModel(),\n getSortedRowModel: () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table)\n }\n\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel()\n }\n\n return table._getSortedRowModel()\n },\n }\n },\n}\n"],"names":["Sorting","getInitialState","state","sorting","getDefaultColumnDef","sortingFn","getDefaultOptions","table","onSortingChange","makeStateUpdater","isMultiSortEvent","e","shiftKey","createColumn","column","getAutoSortingFn","firstRows","getFilteredRowModel","flatRows","slice","isString","row","value","getValue","id","Object","prototype","toString","call","sortingFns","datetime","split","reSplitAlphaNumeric","length","alphanumeric","text","basic","getAutoSortDir","firstRow","getSortingFn","_table$options$sortin","_table$options$sortin2","Error","isFunction","columnDef","options","toggleSorting","desc","multi","nextSortingOrder","getNextSortingOrder","hasManualValue","setSorting","old","existingSorting","find","d","existingIndex","findIndex","newSorting","sortAction","nextDesc","getCanMultiSort","_table$options$maxMul","splice","maxMultiSortColCount","Number","MAX_SAFE_INTEGER","map","filter","getFirstSortDir","_ref","_column$columnDef$sor","sortDescFirst","_table$options$enable","_table$options$enable2","firstSortDirection","isSorted","getIsSorted","enableSortingRemoval","enableMultiRemove","getCanSort","_column$columnDef$ena","_table$options$enable3","enableSorting","accessorFn","_ref2","_column$columnDef$ena2","enableMultiSort","_table$getState$sorti","columnSort","getState","getSortIndex","_table$getState$sorti2","_table$getState$sorti3","clearSorting","getToggleSortingHandler","canSort","persist","undefined","createTable","updater","resetSorting","defaultState","_table$initialState$s","_table$initialState","initialState","getPreSortedRowModel","getGroupedRowModel","getSortedRowModel","_getSortedRowModel","manualSorting"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Sorting.js","sources":["../../../src/features/Sorting.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { TableFeature } from '../core/table'\nimport {\n BuiltInSortingFn,\n reSplitAlphaNumeric,\n sortingFns,\n} from '../sortingFns'\n\nimport {\n Column,\n OnChangeFn,\n Table,\n Row,\n Updater,\n RowData,\n SortingFns,\n} from '../types'\n\nimport { isFunction, makeStateUpdater } from '../utils'\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport interface ColumnSort {\n id: string\n desc: boolean\n}\n\nexport type SortingState = ColumnSort[]\n\nexport interface SortingTableState {\n sorting: SortingState\n}\n\nexport interface SortingFn<TData extends RowData> {\n (rowA: Row<TData>, rowB: Row<TData>, columnId: string): number\n}\n\nexport type CustomSortingFns<TData extends RowData> = Record<\n string,\n SortingFn<TData>\n>\n\nexport type SortingFnOption<TData extends RowData> =\n | 'auto'\n | keyof SortingFns\n | BuiltInSortingFn\n | SortingFn<TData>\n\nexport interface SortingColumnDef<TData extends RowData> {\n sortingFn?: SortingFnOption<TData>\n sortDescFirst?: boolean\n enableSorting?: boolean\n enableMultiSort?: boolean\n invertSorting?: boolean\n sortUndefined?: false | -1 | 1\n}\n\nexport interface SortingColumn<TData extends RowData> {\n getAutoSortingFn: () => SortingFn<TData>\n getAutoSortDir: () => SortDirection\n getSortingFn: () => SortingFn<TData>\n getFirstSortDir: () => SortDirection\n getNextSortingOrder: () => SortDirection | false\n getCanSort: () => boolean\n getCanMultiSort: () => boolean\n getSortIndex: () => number\n getIsSorted: () => false | SortDirection\n clearSorting: () => void\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n getToggleSortingHandler: () => undefined | ((event: unknown) => void)\n}\n\ninterface SortingOptionsBase {\n manualSorting?: boolean\n onSortingChange?: OnChangeFn<SortingState>\n enableSorting?: boolean\n enableSortingRemoval?: boolean\n enableMultiRemove?: boolean\n enableMultiSort?: boolean\n sortDescFirst?: boolean\n getSortedRowModel?: (table: Table<any>) => () => RowModel<any>\n maxMultiSortColCount?: number\n isMultiSortEvent?: (e: unknown) => boolean\n}\n\ntype ResolvedSortingFns = keyof SortingFns extends never\n ? {\n sortingFns?: Record<string, SortingFn<any>>\n }\n : {\n sortingFns: Record<keyof SortingFns, SortingFn<any>>\n }\n\nexport interface SortingOptions<TData extends RowData>\n extends SortingOptionsBase,\n ResolvedSortingFns {}\n\nexport interface SortingInstance<TData extends RowData> {\n setSorting: (updater: Updater<SortingState>) => void\n resetSorting: (defaultState?: boolean) => void\n getPreSortedRowModel: () => RowModel<TData>\n getSortedRowModel: () => RowModel<TData>\n _getSortedRowModel?: () => RowModel<TData>\n}\n\n//\n\nexport const Sorting: TableFeature = {\n getInitialState: (state): SortingTableState => {\n return {\n sorting: [],\n ...state,\n }\n },\n\n getDefaultColumnDef: <TData extends RowData>(): SortingColumnDef<TData> => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): SortingOptions<TData> => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: (e: unknown) => {\n return (e as MouseEvent).shiftKey\n },\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): SortingColumn<TData> => {\n return {\n getAutoSortingFn: () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.getValue(column.id)\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortingFns.text\n }\n\n return sortingFns.basic\n },\n getAutoSortDir: () => {\n const firstRow = table.getFilteredRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n },\n getSortingFn: () => {\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.columnDef.sortingFn)\n ? column.columnDef.sortingFn\n : column.columnDef.sortingFn === 'auto'\n ? column.getAutoSortingFn()\n : table.options.sortingFns?.[column.columnDef.sortingFn as string] ??\n sortingFns[column.columnDef.sortingFn as BuiltInSortingFn]\n },\n toggleSorting: (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder()\n const hasManualValue = typeof desc !== 'undefined' && desc !== null\n\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old?.find(d => d.id === column.id)\n const existingIndex = old?.findIndex(d => d.id === column.id)\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction: 'add' | 'remove' | 'toggle' | 'replace'\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'\n\n // Multi-mode\n if (old?.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (old?.length && existingIndex !== old.length - 1) {\n sortAction = 'replace'\n } else if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove'\n }\n }\n }\n\n if (sortAction === 'add') {\n newSorting = [\n ...old,\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id)\n } else {\n newSorting = [\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n }\n\n return newSorting\n })\n },\n\n getFirstSortDir: () => {\n const sortDescFirst =\n column.columnDef.sortDescFirst ??\n table.options.sortDescFirst ??\n column.getAutoSortDir() === 'desc'\n return sortDescFirst ? 'desc' : 'asc'\n },\n\n getNextSortingOrder: (multi?: boolean) => {\n const firstSortDirection = column.getFirstSortDir()\n const isSorted = column.getIsSorted()\n\n if (!isSorted) {\n return firstSortDirection\n }\n\n if (\n isSorted !== firstSortDirection &&\n (table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n (multi ? table.options.enableMultiRemove ?? true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false\n }\n return isSorted === 'desc' ? 'asc' : 'desc'\n },\n\n getCanSort: () => {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (table.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n },\n\n getCanMultiSort: () => {\n return (\n column.columnDef.enableMultiSort ??\n table.options.enableMultiSort ??\n !!column.accessorFn\n )\n },\n\n getIsSorted: () => {\n const columnSort = table\n .getState()\n .sorting?.find(d => d.id === column.id)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n },\n\n getSortIndex: () =>\n table.getState().sorting?.findIndex(d => d.id === column.id) ?? -1,\n\n clearSorting: () => {\n //clear sorting for just 1 column\n table.setSorting(old =>\n old?.length ? old.filter(d => d.id !== column.id) : []\n )\n },\n\n getToggleSortingHandler: () => {\n const canSort = column.getCanSort()\n\n return (e: unknown) => {\n if (!canSort) return\n ;(e as any).persist?.()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort()\n ? table.options.isMultiSortEvent?.(e)\n : false\n )\n }\n },\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): SortingInstance<TData> => {\n return {\n setSorting: updater => table.options.onSortingChange?.(updater),\n resetSorting: defaultState => {\n table.setSorting(defaultState ? [] : table.initialState?.sorting ?? [])\n },\n getPreSortedRowModel: () => table.getGroupedRowModel(),\n getSortedRowModel: () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table)\n }\n\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel()\n }\n\n return table._getSortedRowModel()\n },\n }\n },\n}\n"],"names":["Sorting","getInitialState","state","sorting","getDefaultColumnDef","sortingFn","sortUndefined","getDefaultOptions","table","onSortingChange","makeStateUpdater","isMultiSortEvent","e","shiftKey","createColumn","column","getAutoSortingFn","firstRows","getFilteredRowModel","flatRows","slice","isString","row","value","getValue","id","Object","prototype","toString","call","sortingFns","datetime","split","reSplitAlphaNumeric","length","alphanumeric","text","basic","getAutoSortDir","firstRow","getSortingFn","_table$options$sortin","_table$options$sortin2","Error","isFunction","columnDef","options","toggleSorting","desc","multi","nextSortingOrder","getNextSortingOrder","hasManualValue","setSorting","old","existingSorting","find","d","existingIndex","findIndex","newSorting","sortAction","nextDesc","getCanMultiSort","_table$options$maxMul","splice","maxMultiSortColCount","Number","MAX_SAFE_INTEGER","map","filter","getFirstSortDir","_ref","_column$columnDef$sor","sortDescFirst","_table$options$enable","_table$options$enable2","firstSortDirection","isSorted","getIsSorted","enableSortingRemoval","enableMultiRemove","getCanSort","_column$columnDef$ena","_table$options$enable3","enableSorting","accessorFn","_ref2","_column$columnDef$ena2","enableMultiSort","_table$getState$sorti","columnSort","getState","getSortIndex","_table$getState$sorti2","_table$getState$sorti3","clearSorting","getToggleSortingHandler","canSort","persist","undefined","createTable","updater","resetSorting","defaultState","_table$initialState$s","_table$initialState","initialState","getPreSortedRowModel","getGroupedRowModel","getSortedRowModel","_getSortedRowModel","manualSorting"],"mappings":"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"}
|
package/build/lib/index.esm.js
CHANGED
|
@@ -2305,7 +2305,8 @@ const Sorting = {
|
|
|
2305
2305
|
},
|
|
2306
2306
|
getDefaultColumnDef: () => {
|
|
2307
2307
|
return {
|
|
2308
|
-
sortingFn: 'auto'
|
|
2308
|
+
sortingFn: 'auto',
|
|
2309
|
+
sortUndefined: 1
|
|
2309
2310
|
};
|
|
2310
2311
|
},
|
|
2311
2312
|
getDefaultOptions: table => {
|
|
@@ -3353,18 +3354,23 @@ function getSortedRowModel() {
|
|
|
3353
3354
|
const sortEntry = availableSorting[i];
|
|
3354
3355
|
const columnInfo = columnInfoById[sortEntry.id];
|
|
3355
3356
|
const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;
|
|
3357
|
+
let sortInt = 0;
|
|
3358
|
+
|
|
3359
|
+
// All sorting ints should always return in ascending order
|
|
3356
3360
|
if (columnInfo.sortUndefined) {
|
|
3357
3361
|
const aValue = rowA.getValue(sortEntry.id);
|
|
3358
3362
|
const bValue = rowB.getValue(sortEntry.id);
|
|
3359
|
-
const aUndefined =
|
|
3360
|
-
const bUndefined =
|
|
3363
|
+
const aUndefined = aValue === undefined;
|
|
3364
|
+
const bUndefined = bValue === undefined;
|
|
3361
3365
|
if (aUndefined || bUndefined) {
|
|
3362
|
-
|
|
3366
|
+
sortInt = aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
|
|
3363
3367
|
}
|
|
3364
3368
|
}
|
|
3369
|
+
if (sortInt === 0) {
|
|
3370
|
+
sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);
|
|
3371
|
+
}
|
|
3365
3372
|
|
|
3366
|
-
//
|
|
3367
|
-
let sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);
|
|
3373
|
+
// If sorting is non-zero, take care of desc and inversion
|
|
3368
3374
|
if (sortInt !== 0) {
|
|
3369
3375
|
if (isDesc) {
|
|
3370
3376
|
sortInt *= -1;
|