@tanstack/table-core 8.0.0-alpha.26 → 8.0.0-alpha.30

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tanstack/table-core",
3
3
  "author": "Tanner Linsley",
4
- "version": "8.0.0-alpha.26",
4
+ "version": "8.0.0-alpha.30",
5
5
  "description": "Hooks for building lightweight, fast and extendable datagrids for React",
6
6
  "license": "MIT",
7
7
  "homepage": "https://github.com/tanstack/react-table#readme",
package/src/core.tsx CHANGED
@@ -84,6 +84,11 @@ export type CoreOptions<TGenerics extends AnyGenerics> = {
84
84
  parent?: Row<TGenerics>
85
85
  ) => string
86
86
  autoResetAll?: boolean
87
+ mergeOptions?: (
88
+ defaultOptions: TableFeature,
89
+ options: Partial<Options<TGenerics>>
90
+ ) => Options<TGenerics>
91
+ meta?: TGenerics['TableMeta'] extends {} ? TGenerics['TableMeta'] : any
87
92
  }
88
93
 
89
94
  export type TableCore<TGenerics extends AnyGenerics> = {
@@ -249,9 +254,15 @@ export function createTableInstance<TGenerics extends AnyGenerics>(
249
254
  instance.setState(instance.initialState)
250
255
  },
251
256
  setOptions: updater => {
252
- instance.options = buildOptions(
253
- functionalUpdate(updater, instance.options)
254
- )
257
+ const newOptions = functionalUpdate(updater, instance.options)
258
+ if (instance.options.mergeOptions) {
259
+ instance.options = instance.options.mergeOptions(
260
+ defaultOptions,
261
+ newOptions
262
+ )
263
+ } else {
264
+ instance.options = buildOptions(newOptions)
265
+ }
255
266
  },
256
267
  render: (template, props) => {
257
268
  if (typeof instance.options.render === 'function') {
@@ -14,13 +14,9 @@ export type CreateTableFactory<TGenerics extends AnyGenerics> = <
14
14
  TSubGenerics extends {
15
15
  Row: any
16
16
  ColumnMeta?: object
17
+ TableMeta?: object
17
18
  }
18
- >() => Table<
19
- Overwrite<
20
- TGenerics,
21
- { Row: TSubGenerics['Row']; ColumnMeta: TSubGenerics['ColumnMeta'] }
22
- >
23
- >
19
+ >() => Table<Overwrite<TGenerics, TSubGenerics>>
24
20
 
25
21
  export type CreateTableFactoryOptions<
26
22
  TRender extends AnyRender,
@@ -211,7 +211,7 @@ export const Expanding = {
211
211
  title: canExpand ? 'Toggle Expanded' : undefined,
212
212
  onClick: canExpand
213
213
  ? (e: MouseEvent | TouchEvent) => {
214
- e.persist()
214
+ e.persist?.()
215
215
  instance.toggleRowExpanded(rowId)
216
216
  }
217
217
  : undefined,
@@ -223,7 +223,7 @@ export const Expanding = {
223
223
  const initialProps: ToggleExpandedProps = {
224
224
  title: 'Toggle All Expanded',
225
225
  onClick: (e: MouseEvent | TouchEvent) => {
226
- e.persist()
226
+ e.persist?.()
227
227
  instance.toggleAllRowsExpanded()
228
228
  },
229
229
  }
@@ -350,7 +350,7 @@ export const Filters = {
350
350
  },
351
351
 
352
352
  resetGlobalFilter: () => {
353
- instance.setGlobalFilter(undefined)
353
+ instance.setGlobalFilter(instance.initialState.globalFilter)
354
354
  },
355
355
 
356
356
  getColumnCanColumnFilter: columnId => {
@@ -187,7 +187,7 @@ export const Pagination = {
187
187
  getCanPreviousPage: () => instance.getState().pagination.pageIndex > 0,
188
188
 
189
189
  getCanNextPage: () => {
190
- const { pageIndex, pageSize } = instance.getState().pagination
190
+ const { pageIndex } = instance.getState().pagination
191
191
 
192
192
  const pageCount = instance.getPageCount()
193
193
 
@@ -199,13 +199,7 @@ export const Pagination = {
199
199
  return false
200
200
  }
201
201
 
202
- return (
203
- pageIndex <
204
- Math.ceil(
205
- instance.getPrePaginationRowModel().rows.length / pageSize
206
- ) -
207
- 1
208
- )
202
+ return pageIndex < pageCount - 1
209
203
  },
210
204
 
211
205
  previousPage: () => {
@@ -428,7 +428,7 @@ export const Sorting = {
428
428
  title: canSort ? 'Toggle Sorting' : undefined,
429
429
  onClick: canSort
430
430
  ? (e: MouseEvent | TouchEvent) => {
431
- e.persist()
431
+ e.persist?.()
432
432
  column.toggleSorting?.(
433
433
  undefined,
434
434
  column.getCanMultiSort()
package/src/types.ts CHANGED
@@ -84,6 +84,7 @@ export type DefaultGenerics = {
84
84
  AggregationFns: object
85
85
  Render: unknown
86
86
  ColumnMeta: object
87
+ TableMeta: object
87
88
  }
88
89
 
89
90
  export type AnyRender = (Comp: any, props: any) => any
package/src/utils.tsx CHANGED
@@ -91,7 +91,7 @@ export function memo<TDeps extends readonly any[], TResult>(
91
91
 
92
92
  return () => {
93
93
  let depTime: number
94
- if (opts.key && opts.debug) depTime = performance.now()
94
+ if (opts.key && opts.debug) depTime = Date.now()
95
95
 
96
96
  const newDeps = getDeps()
97
97
 
@@ -102,17 +102,16 @@ export function memo<TDeps extends readonly any[], TResult>(
102
102
  if (depsChanged) {
103
103
  let oldResult = result
104
104
  let resultTime: number
105
- if (opts.key && opts.debug) resultTime = performance.now()
105
+ if (opts.key && opts.debug) resultTime = Date.now()
106
106
  result = fn(...newDeps)
107
107
  deps = newDeps
108
108
  opts?.onChange?.(result, oldResult)
109
109
 
110
110
  if (opts.key && opts.debug) {
111
111
  if (opts?.debug()) {
112
- const depEndTime =
113
- Math.round((performance.now() - depTime!) * 100) / 100
112
+ const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100
114
113
  const resultEndTime =
115
- Math.round((performance.now() - resultTime!) * 100) / 100
114
+ Math.round((Date.now() - resultTime!) * 100) / 100
116
115
  const resultFpsPercentage = resultEndTime / 16
117
116
 
118
117
  const pad = (str: number | string, num: number) => {